updated streamline-setup v2

This commit is contained in:
2025-01-15 08:53:49 -08:00
committed by alec.turner
parent a2ce9248f0
commit 4b569f81b0
20228 changed files with 2932048 additions and 63204 deletions
@@ -0,0 +1,284 @@
/**
* @author zhixin wen <wenzhixin2010@gmail.com>
* version: 1.8.1
* https://github.com/wenzhixin/bootstrap-table/
*/
.bootstrap-table .table {
margin-bottom: 0 !important;
border-bottom: 1px solid #dddddd;
border-collapse: collapse !important;
border-radius: 1px;
}
.bootstrap-table .table,
.bootstrap-table .table > tbody > tr > th,
.bootstrap-table .table > tfoot > tr > th,
.bootstrap-table .table > thead > tr > td,
.bootstrap-table .table > tbody > tr > td,
.bootstrap-table .table > tfoot > tr > td {
padding: 8px !important;
}
.bootstrap-table .table.table-no-bordered > thead > tr > th,
.bootstrap-table .table.table-no-bordered > tbody > tr > td {
border-right: 2px solid transparent;
}
.fixed-table-container {
position: relative;
clear: both;
border: 1px solid #dddddd;
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
}
.fixed-table-container.table-no-bordered {
border: 1px solid transparent;
}
.fixed-table-footer,
.fixed-table-header {
height: 37px; /*cellHeight*/
overflow: hidden;
border-radius: 4px 4px 0 0;
-webkit-border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
}
.fixed-table-header {
border-bottom: 1px solid #dddddd;
}
.fixed-table-footer {
border-top: 1px solid #dddddd;
}
.fixed-table-body {
overflow-x: auto;
overflow-y: auto;
height: 100%;
}
.fixed-table-container table {
width: 100%;
}
.fixed-table-container thead th {
height: 0;
padding: 0;
margin: 0;
border-left: 1px solid #dddddd;
}
.fixed-table-container thead th:first-child {
border-left: none;
border-top-left-radius: 4px;
-webkit-border-top-left-radius: 4px;
-moz-border-radius-topleft: 4px;
}
.fixed-table-container thead th .th-inner {
padding: 8px;
line-height: 24px;
vertical-align: top;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.fixed-table-container thead th .sortable {
cursor: pointer;
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
}
.fixed-table-container th.detail {
width: 30px;
}
.fixed-table-container tbody td {
border-left: 1px solid #dddddd;
}
.fixed-table-container tbody tr:first-child td {
border-top: none;
}
.fixed-table-container tbody td:first-child {
border-left: none;
}
/* the same color with .active */
.fixed-table-container tbody .selected td {
background-color: #f5f5f5;
}
.fixed-table-container .bs-checkbox {
text-align: center;
}
.fixed-table-container .bs-checkbox .th-inner {
padding: 8px 0;
}
.fixed-table-container input[type="radio"],
.fixed-table-container input[type="checkbox"] {
margin: 0 auto !important;
}
.fixed-table-container .no-records-found {
text-align: center;
}
.fixed-table-pagination div.pagination,
.fixed-table-pagination .pagination-detail {
margin-top: 10px;
margin-bottom: 10px;
}
.fixed-table-pagination div.pagination .pagination {
margin: 0;
}
.fixed-table-pagination .pagination a {
padding: 6px 12px;
line-height: 1.428571429;
}
.fixed-table-pagination .pagination-info {
line-height: 34px;
margin-right: 5px;
}
.fixed-table-pagination .btn-group {
position: relative;
display: inline-block;
vertical-align: middle;
}
.fixed-table-pagination .dropup .dropdown-menu {
margin-bottom: 0;
}
.fixed-table-pagination .page-list {
display: inline-block;
}
.fixed-table-toolbar .columns-left {
margin-right: 5px;
}
.fixed-table-toolbar .columns-right {
margin-left: 5px;
}
.fixed-table-toolbar .columns label {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.428571429;
}
.fixed-table-toolbar .bars,
.fixed-table-toolbar .search,
.fixed-table-toolbar .columns {
position: relative;
margin-top: 10px;
margin-bottom: 10px;
line-height: 34px;
}
.fixed-table-pagination li.disabled a {
pointer-events: none;
cursor: default;
}
.fixed-table-loading {
display: none;
position: absolute;
top: 42px;
right: 0;
bottom: 0;
left: 0;
z-index: 99;
background-color: #fff;
text-align: center;
}
.fixed-table-body .card-view .title {
font-weight: bold;
display: inline-block;
min-width: 30%;
text-align: left !important;
}
/* support bootstrap 2 */
.fixed-table-body thead th .th-inner {
box-sizing: border-box;
}
.table th, .table td {
vertical-align: middle;
box-sizing: border-box;
}
.fixed-table-toolbar .dropdown-menu {
text-align: left;
max-height: 300px;
overflow: auto;
}
.fixed-table-toolbar .btn-group > .btn-group {
display: inline-block;
margin-left: -1px !important;
}
.fixed-table-toolbar .btn-group > .btn-group > .btn {
border-radius: 0;
}
.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.bootstrap-table .table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
/* support bootstrap 3 */
.bootstrap-table .table thead > tr > th {
padding: 0;
margin: 0;
}
.pull-right .dropdown-menu {
right: 0;
left: auto;
}
/* calculate scrollbar width */
p.fixed-table-scroll-inner {
width: 100%;
height: 200px;
}
div.fixed-table-scroll-outer {
top: 0;
left: 0;
visibility: hidden;
width: 200px;
height: 150px;
overflow: hidden;
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,38 @@
# Table Cookie
Use Plugin: [bootstrap-table-cookie](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/cookie)
## Usage
```html
<script src="extensions/cookie/bootstrap-table-cookie.js"></script>
```
## Options
### stateSave
* type: Boolean
* description: Set true to save the state of a table (its paging position, ordering state, records per page).
* default: `false`
### stateSaveExpire
* type: String
* description: You must set this property if stateSave is enable to know when will expire the cookie created. Must use this format: 'number{letter}' like '2h', in the letter position
you can use: 's','mi','h','d','m','y', these means: 'seconds', 'minutes', 'hours', 'days', 'months', 'years'.
* default: `2h`
### stateSaveIdTable
* type: String
* description: You must set this property if stateSave is enable to sets an unique cookie with an identifier for each table in your page or project. You must set this property because we need create cookies with an identifier.
* default: ``
## This plugin saves
* Sort order
* Page number
* Page number from the list
* Visible columns
* Search text
@@ -0,0 +1,234 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.1.0
*
* @update zhixin wen <wenzhixin2010@gmail.com>
*/
(function ($) {
'use strict';
var idsStateSaveList = {
sortOrder: 'bs.table.sortOrder',
sortName: 'bs.table.sortName',
pageNumber: 'bs.table.pageNumber',
pageList: 'bs.table.pageList',
columns: 'bs.table.columns',
searchText: 'bs.table.searchText'
};
var cookieEnabled = function () {
return (navigator.cookieEnabled) ? true : false;
};
var setCookie = function (that, cookieName, sValue, sPath, sDomain, bSecure) {
if ((!that.options.stateSave) || (!cookieEnabled()) || (that.options.stateSaveIdTable === '')) {
return;
}
var tableName = that.options.stateSaveIdTable,
vEnd = that.options.stateSaveExpire;
cookieName = tableName + '.' + cookieName;
if (!cookieName || /^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
return false;
}
document.cookie = encodeURIComponent(cookieName) + '=' + encodeURIComponent(sValue) + calculateExpiration(vEnd) + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
return true;
};
var getCookie = function (tableName, cookieName) {
cookieName = tableName + '.' + cookieName;
if (!cookieName) {
return null;
}
return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
};
var hasCookie = function (cookieName) {
if (!cookieName) {
return false;
}
return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie);
};
var deleteCookie = function (tableName, cookieName, sPath, sDomain) {
cookieName = tableName + '.' + cookieName;
if (!hasCookie(cookieName)) {
return false;
}
document.cookie = encodeURIComponent(cookieName) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
return true;
};
var calculateExpiration = function(vEnd) {
var time = vEnd.replace(/[0-9]/, ''); //s,mi,h,d,m,y
vEnd = vEnd.replace(/[A-Za-z]/, ''); //number
switch (time.toLowerCase()) {
case 's':
vEnd = +vEnd;
break;
case 'mi':
vEnd = vEnd * 60;
break;
case 'h':
vEnd = vEnd * 60 * 60;
break;
case 'd':
vEnd = vEnd * 24 * 60 * 60;
break;
case 'm':
vEnd = vEnd * 30 * 24 * 60 * 60;
break;
case 'y':
vEnd = vEnd * 365 * 30 * 24 * 60 * 60;
break;
default:
vEnd = undefined;
break;
}
return vEnd === undefined ? '' : '; max-age=' + vEnd;
}
$.extend($.fn.bootstrapTable.defaults, {
stateSave: false,
stateSaveExpire: '2h',
stateSaveIdTable: ''
});
$.fn.bootstrapTable.methods.push('deleteCookie');
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initTable = BootstrapTable.prototype.initTable,
_onSort = BootstrapTable.prototype.onSort,
_onPageNumber = BootstrapTable.prototype.onPageNumber,
_onPageListChange = BootstrapTable.prototype.onPageListChange,
_onPageFirst = BootstrapTable.prototype.onPageFirst,
_onPagePre = BootstrapTable.prototype.onPagePre,
_onPageNext = BootstrapTable.prototype.onPageNext,
_onPageLast = BootstrapTable.prototype.onPageLast,
_toggleColumn = BootstrapTable.prototype.toggleColumn,
_onSearch = BootstrapTable.prototype.onSearch;
// init save data after initTable function
BootstrapTable.prototype.initTable = function () {
_initTable.apply(this, Array.prototype.slice.apply(arguments));
this.initStateSave();
};
BootstrapTable.prototype.initStateSave = function () {
if (!this.options.stateSave) {
return;
}
if (!cookieEnabled()) {
return;
}
if (this.options.stateSaveIdTable === '') {
return;
}
var sortOrderStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.sortOrder),
sortOrderStateName = getCookie(this.options.stateSaveIdTable, idsStateSaveList.sortName),
pageNumberStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageNumber),
pageListStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageList),
columnsStateSave = JSON.parse(getCookie(this.options.stateSaveIdTable, idsStateSaveList.columns)),
searchStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.searchText);
if (sortOrderStateSave) {
this.options.sortOrder = sortOrderStateSave;
this.options.sortName = sortOrderStateName;
}
if (pageNumberStateSave) {
this.options.pageNumber = +pageNumberStateSave;
}
if (pageListStateSave) {
this.options.pageSize = pageListStateSave ===
this.options.formatAllRows() ? pageListStateSave : +pageListStateSave;
}
if (columnsStateSave) {
$.each(this.options.columns, function (i, column) {
column.visible = columnsStateSave.indexOf(i) !== -1;
});
}
if (searchStateSave) {
this.options.searchText = searchStateSave;
}
};
BootstrapTable.prototype.onSort = function () {
_onSort.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.sortOrder, this.options.sortOrder);
setCookie(this, idsStateSaveList.sortName, this.options.sortName);
};
BootstrapTable.prototype.onPageNumber = function () {
_onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.onPageListChange = function () {
_onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageList, this.options.pageSize);
};
BootstrapTable.prototype.onPageFirst = function () {
_onPageFirst.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.onPagePre = function () {
_onPagePre.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.onPageNext = function () {
_onPageNext.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.onPageLast = function () {
_onPageLast.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.toggleColumn = function () {
_toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
var visibleColumns = [];
$.each(this.options.columns, function (i) {
if (this.visible) {
visibleColumns.push(i);
}
});
setCookie(this, idsStateSaveList.columns, JSON.stringify(visibleColumns));
};
BootstrapTable.prototype.onSearch = function () {
_onSearch.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, idsStateSaveList.searchText, this.searchText);
};
BootstrapTable.prototype.deleteCookie = function (cookieName) {
if ((cookieName === '') || (!cookieEnabled())) {
return;
}
deleteCookie(idsStateSaveList[cookieName]);
};
})(jQuery);
@@ -0,0 +1,39 @@
# Table Editable
Use Plugin: [x-editable](https://github.com/vitalets/x-editable)
## Usage
```html
<script src="extensions/editable/bootstrap-table-editable.js"></script>
```
## Options
### editable
* type: Boolean
* description: Set false to disabled editable of all columns.
* default: `true`
## Column options
### editable
* type: Object
* description: Configuration of x-editable. Full list of options: http://vitalets.github.io/x-editable/docs.html#editable
* default: `undefined`
## Events
### onEditableInit(editable-init.bs.table)
Fired when all columns was initialized by `$().editable()` method.
### onEditableSave(editable-save.bs.table)
Fired when an editable cell is saved.
## The existing problems
* Editable extension does not support searchable in the select type.
@@ -0,0 +1,83 @@
/**
* @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;
}
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'editable-init.bs.table': 'onEditableInit',
'editable-save.bs.table': 'onEditableSave'
});
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.options.columns, function (i, column) {
if (!column.editable) {
return;
}
var _formatter = column.formatter;
column.formatter = function (value, row, index) {
var result = _formatter ? _formatter(value, row, index) : value;
return ['<a href="javascript:void(0)"',
' data-name="' + column.field + '"',
' data-pk="' + row[that.options.idField] + '"',
' data-value="' + result + '"',
'>' + '</a>'
].join('');
};
});
};
BootstrapTable.prototype.initBody = function () {
var that = this;
_initBody.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.editable) {
return;
}
$.each(this.options.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];
row[column.field] = params.submitValue;
that.trigger('editable-save', column.field, row, oldValue, $(this));
});
});
this.trigger('editable-init');
};
}(jQuery);
@@ -0,0 +1,29 @@
# Table Export
Use Plugin: [tableExport.jquery.plugin](https://github.com/hhurz/tableExport.jquery.plugin)
## Usage
```html
<script src="extensions/export/bootstrap-table-export.js"></script>
```
## Options
### showExport
* type: Boolean
* description: set `true` to show export button.
* default: `false`
### exportTypes
* type: Array
* description: export types, support types: 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'.
* default: `['json', 'xml', 'csv', 'txt', 'sql', 'excel']`
### exportOptions
* type: Object
* description: export [options](https://github.com/hhurz/tableExport.jquery.plugin#options) of `tableExport.jquery.plugin`
* default: `{}`
@@ -0,0 +1,84 @@
/**
* @author zhixin wen <wenzhixin2010@gmail.com>
* extensions: https://github.com/kayalshri/tableExport.jquery.plugin
*/
(function ($) {
'use strict';
var TYPE_NAME = {
json: 'JSON',
xml: 'XML',
png: 'PNG',
csv: 'CSV',
txt: 'TXT',
sql: 'SQL',
doc: 'MS-Word',
excel: 'Ms-Excel',
powerpoint: 'Ms-Powerpoint',
pdf: 'PDF'
};
$.extend($.fn.bootstrapTable.defaults, {
showExport: false,
// 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
exportOptions: {}
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initToolbar = BootstrapTable.prototype.initToolbar;
BootstrapTable.prototype.initToolbar = function () {
this.showToolbar = this.options.showExport;
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.showExport) {
var that = this,
$btnGroup = this.$toolbar.find('>.btn-group'),
$export = $btnGroup.find('div.export');
if (!$export.length) {
$export = $([
'<div class="export btn-group">',
'<button class="btn btn-default dropdown-toggle" ' +
'data-toggle="dropdown" type="button">',
'<i class="glyphicon glyphicon-export icon-share"></i> ',
'<span class="caret"></span>',
'</button>',
'<ul class="dropdown-menu" role="menu">',
'</ul>',
'</div>'].join('')).appendTo($btnGroup);
var $menu = $export.find('.dropdown-menu'),
exportTypes = this.options.exportTypes;
if (typeof this.options.exportTypes === 'string') {
var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');
exportTypes = [];
$.each(types, function (i, value) {
exportTypes.push(value.slice(1, -1));
});
}
$.each(exportTypes, function (i, type) {
if (TYPE_NAME.hasOwnProperty(type)) {
$menu.append(['<li data-type="' + type + '">',
'<a href="javascript:void(0)">',
TYPE_NAME[type],
'</a>',
'</li>'].join(''));
}
});
$menu.find('li').click(function () {
that.$el.tableExport($.extend({}, that.options.exportOptions, {
type: $(this).data('type'),
escape: false
}));
});
}
}
};
})(jQuery);
@@ -0,0 +1,31 @@
# Table Filter Control
Use Plugin: [bootstrap-table-filter-control](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/filter-control)
## Usage
```html
<script src="extensions/filter-control/bootstrap-table-filter-control.js"></script>
```
## Options
### filterControl
* type: Boolean
* description: Set true to add an `input` or `select` into the column.
* default: `false`
## Column options
### filterControl
* type: String
* description: Set `input` or `select` to add one of those element into column.
* default: `undefined`
## Events
### onColumnSearch(column-search.bs.table)
* Fired when we are searching into the column data
@@ -0,0 +1,283 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.0.0
*/
!function ($) {
'use strict';
var sprintf = function (str) {
var args = arguments,
flag = true,
i = 1;
str = str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
};
var getFieldIndex = function (columns, field) {
var index = -1;
$.each(columns, function (i, column) {
if (column.field === field) {
index = i;
return false;
}
return true;
});
return index;
};
var calculateObjectValue = function (self, name, args, defaultValue) {
if (typeof name === 'string') {
// support obj.func1.func2
var names = name.split('.');
if (names.length > 1) {
name = window;
$.each(names, function (i, f) {
name = name[f];
});
} else {
name = window[name];
}
}
if (typeof name === 'object') {
return name;
}
if (typeof name === 'function') {
return name.apply(self, args);
}
return defaultValue;
};
$.extend($.fn.bootstrapTable.defaults, {
filterControl: false,
onColumnSearch: function (field, text) {
return false;
}
});
$.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
filterControl: undefined,
filterData: undefined
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'column-search.bs.table': 'onColumnSearch'
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initHeader = BootstrapTable.prototype.initHeader,
_initBody = BootstrapTable.prototype.initBody,
_initSearch = BootstrapTable.prototype.initSearch;
BootstrapTable.prototype.initHeader = function () {
_initHeader.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.filterControl) {
return;
}
var addedFilterControl = false,
that = this,
isVisible,
html,
timeoutId = 0;
$.each(this.options.columns, function (i, column) {
isVisible = 'hidden';
html = [];
if (!column.visible) {
return;
}
if (!column.filterControl) {
html.push('<div style="height: 34px;"></div>');
} else {
html.push('<div style="margin: 0px 2px 2px 2px;" class="filterControl">');
if (column.filterControl && column.searchable) {
addedFilterControl = true;
isVisible = 'visible'
}
switch (column.filterControl.toLowerCase()) {
case 'input' :
html.push(sprintf('<input type="text" class="form-control" style="width: 100%; visibility: %s">', isVisible));
break;
case 'select':
html.push(sprintf('<select class="%s form-control" style="width: 100%; visibility: %s"></select>',
column.field, isVisible))
break;
}
}
that.$header.find(sprintf('.th-inner:eq("%s")', i)).next().append(html.join(''));
if (column.filterData !== undefined && column.filterData.toLowerCase() !== 'column') {
var filterDataType = column.filterData.substring(0, 3);
var filterDataSource = column.filterData.substring(4, column.filterData.length);
var selectControl = $('.' + column.field);
selectControl.append($("<option></option>")
.attr("value", '')
.text(''));
switch (filterDataType) {
case 'url':
$.ajax({
url: filterDataSource,
dataType: 'json',
success: function (data) {
$.each(data, function (key, value) {
selectControl.append($("<option></option>")
.attr("value", key)
.text(value));
});
}
});
break;
case 'var':
var variableValues = window[filterDataSource];
for (var key in variableValues) {
selectControl.append($("<option></option>")
.attr("value", key)
.text(variableValues[key]));
};
break;
}
}
});
if (addedFilterControl) {
this.$header.off('keyup', 'input').on('keyup', 'input', function (event) {
clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
that.onColumnSearch(event);
}, that.options.searchTimeOut);
});
this.$header.off('change', 'select').on('change', 'select', function (event) {
clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
that.onColumnSearch(event);
}, that.options.searchTimeOut);
});
} else {
this.$header.find('.filterControl').hide();
}
};
BootstrapTable.prototype.initBody = function () {
_initBody.apply(this, Array.prototype.slice.apply(arguments));
var that = this,
data = this.getData();
for (var i = this.pageFrom - 1; i < this.pageTo; i++) {
var key,
item = data[i];
$.each(this.header.fields, function (j, field) {
var value = item[field],
column = that.options.columns[getFieldIndex(that.options.columns, field)];
value = calculateObjectValue(that.header,
that.header.formatters[j], [value, item, i], value);
if ((!column.checkbox) || (!column.radio)) {
if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'select'
&& column.searchable) {
if (column.filterData === undefined || column.filterData.toLowerCase() === 'column') {
var selectControl = $('.' + column.field),
iOpt = 0,
exitsOpt = false,
options;
if (selectControl !== undefined) {
options = selectControl.get(0).options;
if (options.length === 0) {
//Added the default option
selectControl.append($("<option></option>")
.attr("value", '')
.text(''));
selectControl.append($("<option></option>")
.attr("value", value)
.text(value));
} else {
for (; iOpt < options.length; iOpt++) {
if (options[iOpt].value === value) {
exitsOpt = true;
break;
}
}
if (!exitsOpt) {
selectControl.append($("<option></option>")
.attr("value", value)
.text(value));
}
}
}
}
}
}
});
}
};
BootstrapTable.prototype.initSearch = function () {
_initSearch.apply(this, Array.prototype.slice.apply(arguments));
var that = this;
var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
//Check partial column filter
this.data = fp ? $.grep(this.data, function (item, i) {
for (var key in fp) {
var fval = fp[key].toLowerCase();
var value = item[key];
value = calculateObjectValue(that.header,
that.header.formatters[$.inArray(key, that.header.fields)],
[value, item, i], value);
if (!($.inArray(key, that.header.fields) !== -1 &&
(typeof value === 'string' || typeof value === 'number') &&
(value + '').toLowerCase().indexOf(fval) !== -1)) {
return false;
}
}
return true;
}) : this.data;
};
BootstrapTable.prototype.onColumnSearch = function (event) {
var text = $.trim($(event.currentTarget).val());
var $field = $(event.currentTarget).parent().parent().parent().data('field')
if ($.isEmptyObject(this.filterColumnsPartial)) {
this.filterColumnsPartial = {};
}
if (text) {
this.filterColumnsPartial[$field] = text;
} else {
delete this.filterColumnsPartial[$field];
}
this.options.pageNumber = 1;
this.onSearch(event);
this.updatePagination();
this.trigger('column-search', $field, text);
};
}(jQuery);
@@ -0,0 +1,17 @@
# Table Filter
Use Plugin: [bootstrap table filters](https://github.com/lukaskral/bootstrap-table-filter)
## Usage
```html
<script src="extensions/filter/bootstrap-table-filter.js"></script>
```
## Options
### showFilter
* type: Boolean
* description: set true to show filter menu.
* default: `false`
@@ -0,0 +1,67 @@
/**
* @author zhixin wen <wenzhixin2010@gmail.com>
* extensions: https://github.com/lukaskral/bootstrap-table-filter
*/
!function($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
showFilter: false
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_init = BootstrapTable.prototype.init,
_initSearch = BootstrapTable.prototype.initSearch;
BootstrapTable.prototype.init = function () {
_init.apply(this, Array.prototype.slice.apply(arguments));
var that = this;
this.$el.on('load-success.bs.table', function () {
if (that.options.showFilter) {
$(that.options.toolbar).bootstrapTableFilter({
connectTo: that.$el
});
}
});
};
BootstrapTable.prototype.initSearch = function () {
_initSearch.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.sidePagination !== 'server') {
if (typeof this.searchCallback === 'function') {
this.data = $.grep(this.options.data, this.searchCallback);
}
}
};
BootstrapTable.prototype.getData = function () {
return (this.searchText || this.searchCallback) ? this.data : this.options.data;
};
BootstrapTable.prototype.getColumns = function () {
return this.options.columns;
};
BootstrapTable.prototype.registerSearchCallback = function (callback) {
this.searchCallback = callback;
};
BootstrapTable.prototype.updateSearch = function () {
this.options.pageNumber = 1;
this.initSearch();
this.updatePagination();
};
BootstrapTable.prototype.getServerUrl = function () {
return (this.options.sidePagination === 'server') ? this.options.url : false;
};
$.fn.bootstrapTable.methods.push('getColumns',
'registerSearchCallback', 'updateSearch',
'getServerUrl');
}(jQuery);
@@ -0,0 +1,17 @@
# Table flat-json
Use Plugin: [bootstrap-table-flat-json](https://github.com/djhvscf/bootstrap-table-flat-json)
## Usage
```html
<script src="extensions/flat-json/bootstrap-table-flat-json.js"></script>
```
## Options
### flat
* type: Boolean
* description: Set true to flat the JSON object.
* default: `false`
@@ -0,0 +1,70 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.2.0
*/
(function ($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
flat: false
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initData = BootstrapTable.prototype.initData;
BootstrapTable.prototype.initData = function (data, type) {
if( this.options.flat ){
data = data === undefined ? this.options.data : data;
data = sd.flatHelper(data);
}
_initData.apply(this, [data, type]);
};
//Main functions
var sd = {
flat: function (element) {
var result = {};
function recurse(cur, prop) {
if (Object(cur) !== cur) {
result[prop] = cur;
} else if ($.isArray(cur)) {
for (var i = 0, l = cur.length; i < l; i++) {
recurse(cur[i], prop ? prop + "." + i : "" + i);
if (l == 0) {
result[prop] = [];
}
}
} else {
var isEmpty = true;
for (var p in cur) {
isEmpty = false;
recurse(cur[p], prop ? prop + "." + p : p);
}
if (isEmpty) {
result[prop] = {};
}
}
}
recurse(element, "");
return result;
},
flatHelper: function (data) {
var flatArray = [],
arrayHelper = [];
if (!$.isArray(data)) {
arrayHelper.push(data);
data = arrayHelper;
}
$.each(data, function (i, element) {
flatArray.push(sd.flat(element));
});
return flatArray;
}
};
})(jQuery);
@@ -0,0 +1,24 @@
# Table Key Events
Use Plugin: [bootstrap-table-key-events](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/key-events)
## Usage
```html
<script src="extensions/cookie/bootstrap-table-key-events.js"></script>
```
## Options
### keyEvents
* type: Boolean
* description:
True to enable the key events. The key event list is:
* s: It will be focused the search textbox if it is enabled.
* r: It will refresh the table if the showRefresh option is enabled.
* t: It will toggle the table view if the showToggle option is enabled.
* p: It will fires the pagination switch if the showPaginationSwitch is enabled.
* left: It will go to prev page if the pagination is true.
* right: It will go to next page if the pagination is true.
* default: `false`
@@ -0,0 +1,81 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.0.0
*
* @update zhixin wen <wenzhixin2010@gmail.com>
*/
!function ($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
keyEvents: false
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_init = BootstrapTable.prototype.init;
BootstrapTable.prototype.init = function () {
_init.apply(this, Array.prototype.slice.apply(arguments));
this.initKeyEvents();
};
BootstrapTable.prototype.initKeyEvents = function () {
if (this.options.keyEvents) {
var that = this;
$(document).off('keydown').on('keydown', function (e) {
var $search = that.$toolbar.find('.search input'),
$refresh = that.$toolbar.find('button[name="refresh"]'),
$toggle = that.$toolbar.find('button[name="toggle"]'),
$paginationSwitch = that.$toolbar.find('button[name="paginationSwitch"]');
if (document.activeElement === $search.get(0)) {
return true;
}
switch (e.keyCode) {
case 83: //s
if (!that.options.search) {
return;
}
$search.focus();
return false;
case 82: //r
if (!that.options.showRefresh) {
return;
}
$refresh.click();
return false;
case 84: //t
if (!that.options.showToggle) {
return;
}
$toggle.click();
return false;
case 80: //p
if (!that.options.showPaginationSwitch) {
return;
}
$paginationSwitch.click();
return false;
case 37: // left
if (!that.options.pagination) {
return;
}
that.prevPage();
return false;
case 39: // right
if (!that.options.pagination) {
return;
}
that.nextPage();
return;
}
});
}
};
}(jQuery);
@@ -0,0 +1,35 @@
# Table Mobile
Use Plugin: [bootstrap-table-mobile](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/mobile)
## Usage
```html
<script src="extensions/mobile/bootstrap-table-mobile.js"></script>
```
## Options
### mobileResponsive
* type: Boolean
* description: Set true to change the view between card and table view depending on width and height given.
* default: `false`
### checkOnInit
* type: Boolean
* description: Set true to check the window size on init.
* default: `true`
### minWidth
* type: Integer
* description: Set the minimum width when the table will change the view.
* default: `562`
### minHeight
* type: Integer
* description: Set the minimum height when the table will change the view.
* default: `undefined`
@@ -0,0 +1,87 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.1.0
*/
!function ($) {
'use strict';
var resetView = function (that) {
if (that.options.height || that.options.showFooter) {
setTimeout(that.resetView(), 1);
}
};
var changeView = function (that, width, height) {
if (that.options.minHeight) {
if (checkValuesLessEqual(width, that.options.minWidth) && checkValuesLessEqual(height, that.options.minHeight)) {
conditionCardView(that);
} else if (checkValuesGreater(width, that.options.minWidth) && checkValuesGreater(height, that.options.minHeight)) {
conditionFullView(that);
}
} else {
if (checkValuesLessEqual(width, that.options.minWidth)) {
conditionCardView(that);
} else if (checkValuesGreater(width, that.options.minWidth)) {
conditionFullView(that);
}
}
resetView(that);
};
var checkValuesLessEqual = function (currentValue, targetValue) {
return currentValue <= targetValue;
};
var checkValuesGreater = function (currentValue, targetValue) {
return currentValue > targetValue;
};
var conditionCardView = function (that) {
changeTableView(that, false);
};
var conditionFullView = function (that) {
changeTableView(that, true);
};
var changeTableView = function (that, cardViewState) {
that.options.cardView = cardViewState;
that.toggleView();
};
$.extend($.fn.bootstrapTable.defaults, {
mobileResponsive: false,
minWidth: 562,
minHeight: undefined,
checkOnInit: true,
toggled: false
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_init = BootstrapTable.prototype.init;
BootstrapTable.prototype.init = function () {
_init.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.mobileResponsive) {
return;
}
if (!this.options.minWidth) {
return;
}
var that = this;
$(window).resize(function () {
changeView(that, $(this).width(), $(this).height())
});
if (this.options.checkOnInit) {
changeView(this, $(window).width(), $(window).height());
}
};
}(jQuery);
@@ -0,0 +1,91 @@
# Table Multiple Sort
Use Plugin: [bootstrap-table-multiple-sort](https://github.com/dimbslmh/bootstrap-table/tree/master/src/extensions/multiple-sort)
## Usage
```html
<script src="extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script>
```
## Options
### showMultiSort
* type: Boolean
* description: Set true to allow the multiple sort.
* default: `false`
### sortPriority
* type: Object
* description: Set one or multiple sort priority. Example: '[{"sortName": "forks_count","sortOrder":"desc"},{"sortName":"stargazers_count","sortOrder":"desc"}]'
* default: null
### Icons
* sort: `glyphicon-sort`
* plus: `glyphicon-plus`
* minus: `glyphicon-minus`
## Locales
### formatMultipleSort
* description: Title of the advanced search modal
* default: `Multiple Sort`
### formatAddLevel
* description: Text of the add level button
* default: `Add Level`
### formatDeleteLevel
* description: Text of the delete level button
* default: `Delete Level`
### formatColumn
* description: Text of Column header
* default: `Column`
### formatOrder
* description: Text of the delete level button
* default: `Order`
### formatSortBy
* description: Text of the delete level button
* default: `Sort by`
### formatThenBy
* description: Text of the delete level button
* default: `Then by`
### formatSort
* description: Text of the delete level button
* default: `Sort`
### formatCancel
* description: Text of the delete level button
* default: `Cancel`
### formatDuplicateAlertTitle
* description: Title of the duplicate alert
* default: `Duplicate(s) detected!`
### formatDuplicateAlertDescription
* description: Text of the duplicate alert
* default: `Please remove or change any duplicate column.`
## Events
### onMultipleSort(multiple-sort.bs.table)
* Fires when sorting with one or multiple Sort Priority.
@@ -0,0 +1,370 @@
/**
* @author Nadim Basalamah <dimbslmh@gmail.com>
* @version: v1.0.0
* https://github.com/dimbslmh/bootstrap-table/tree/master/src/extensions/multiple-sort/bootstrap-table-multiple-sort.js
*/
(function($) {
'use strict';
var isSingleSort = false;
var sort_order = {
asc: 'Ascending',
desc: 'Descending'
},
arrowAsc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ' +
'0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBd' +
'qEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVo' +
'AADeemwtPcZI2wAAAABJRU5ErkJggg==',
arrowDesc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWj' +
'YBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJ' +
'zcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ';
var showSortModal = function(that) {
if (!$("#sortModal").hasClass("modal")) {
var sModal = ' <div class="modal fade" id="sortModal" tabindex="-1" role="dialog" aria-labelledby="sortModalLabel" aria-hidden="true">';
sModal += ' <div class="modal-dialog">';
sModal += ' <div class="modal-content">';
sModal += ' <div class="modal-header">';
sModal += ' <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
sModal += ' <h4 class="modal-title" id="sortModalLabel">' + that.options.formatMultipleSort() + '</h4>';
sModal += ' </div>';
sModal += ' <div class="modal-body">';
sModal += ' <div class="bootstrap-table">';
sModal += ' <div class="fixed-table-toolbar">';
sModal += ' <div class="bars">';
sModal += ' <div id="toolbar">';
sModal += ' <button id="add" type="button" class="btn btn-default"><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.plus + '"></i> ' + that.options.formatAddLevel() + '</button>';
sModal += ' <button id="delete" type="button" class="btn btn-default" disabled><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.minus + '"></i> ' + that.options.formatDeleteLevel() + '</button>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' <div class="fixed-table-container">';
sModal += ' <table id="multi-sort" class="table">';
sModal += ' <thead>';
sModal += ' <tr>';
sModal += ' <th></th>';
sModal += ' <th><div class="th-inner">' + that.options.formatColumn() + '</div></th>';
sModal += ' <th><div class="th-inner">' + that.options.formatOrder() + '</div></th>';
sModal += ' </tr>';
sModal += ' </thead>';
sModal += ' <tbody></tbody>';
sModal += ' </table>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' <div class="modal-footer">';
sModal += ' <button type="button" class="btn btn-default" data-dismiss="modal">' + that.options.formatCancel() + '</button>';
sModal += ' <button type="button" class="btn btn-primary">' + that.options.formatSort() + '</button>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' </div>';
sModal += ' </div>';
$("body").append($(sModal));
var $sortModal = $('#sortModal'),
$rows = $sortModal.find("tbody > tr");
$sortModal.off('click', '#add').on('click', '#add', function() {
var total = $sortModal.find('.multi-sort-name:first option').length,
current = $sortModal.find('tbody tr').length;
if (current < total) {
current++;
that.addLevel();
that.setButtonStates();
}
});
$sortModal.off('click', '#delete').on('click', '#delete', function() {
var total = $sortModal.find('.multi-sort-name:first option').length,
current = $sortModal.find('tbody tr').length;
if (current > 1 && current <= total) {
current--;
$sortModal.find('tbody tr:last').remove();
that.setButtonStates();
}
});
$sortModal.off('click', '.btn-primary').on('click', '.btn-primary', function() {
var $rows = $sortModal.find("tbody > tr"),
$alert = $sortModal.find('div.alert'),
fields = [],
results = [];
that.options.sortPriority = $.map($rows, function(row) {
var $row = $(row),
name = $row.find('.multi-sort-name').val(),
order = $row.find('.multi-sort-order').val();
fields.push(name);
return {
sortName: name,
sortOrder: order
};
});
var sorted_fields = fields.sort();
for (var i = 0; i < fields.length - 1; i++) {
if (sorted_fields[i + 1] == sorted_fields[i]) {
results.push(sorted_fields[i]);
}
}
if (results.length > 0) {
if ($alert.length === 0) {
$alert = '<div class="alert alert-danger" role="alert"><strong>' + that.options.formatDuplicateAlertTitle() + '</strong> ' + that.options.formatDuplicateAlertDescription() + '</div>';
$($alert).insertBefore($sortModal.find('.bars'));
}
} else {
if ($alert.length === 1) {
$($alert).remove();
}
that.options.sortName = "";
that.onMultipleSort();
$sortModal.modal('hide');
}
});
if (that.options.sortPriority === null) {
if (that.options.sortName) {
that.options.sortPriority = [{
sortName: that.options.sortName,
sortOrder: that.options.sortOrder
}];
}
}
if (that.options.sortPriority !== null) {
if ($rows.length < that.options.sortPriority.length && typeof that.options.sortPriority === 'object') {
for (var i = 0; i < that.options.sortPriority.length; i++) {
that.addLevel(i, that.options.sortPriority[i]);
}
}
} else {
that.addLevel(0);
}
that.setButtonStates();
}
};
$.extend($.fn.bootstrapTable.defaults, {
showMultiSort: false,
sortPriority: null,
onMultipleSort: function() {
return false;
}
});
$.extend($.fn.bootstrapTable.defaults.icons, {
sort: 'glyphicon-sort',
plus: 'glyphicon-plus',
minus: 'glyphicon-minus'
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'multiple-sort.bs.table': 'onMultipleSort'
});
$.extend($.fn.bootstrapTable.locales, {
formatMultipleSort: function() {
return 'Multiple Sort';
},
formatAddLevel: function() {
return "Add Level";
},
formatDeleteLevel: function() {
return "Delete Level";
},
formatColumn: function() {
return "Column";
},
formatOrder: function() {
return "Order";
},
formatSortBy: function() {
return "Sort by";
},
formatThenBy: function() {
return "Then by";
},
formatSort: function() {
return "Sort";
},
formatCancel: function() {
return "Cancel";
},
formatDuplicateAlertTitle: function() {
return "Duplicate(s) detected!";
},
formatDuplicateAlertDescription: function() {
return "Please remove or change any duplicate column.";
}
});
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initToolbar = BootstrapTable.prototype.initToolbar;
BootstrapTable.prototype.initToolbar = function() {
this.showToolbar = true;
var that = this;
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.showMultiSort) {
var $btnGroup = this.$toolbar.find('>.btn-group'),
$multiSortBtn = $btnGroup.find('div.multi-sort');
if (!$multiSortBtn.length) {
$multiSortBtn = ' <button class="multi-sort btn btn-default' + (this.options.iconSize === undefined ? '' : ' btn-' + this.options.iconSize) + '" type="button" data-toggle="modal" data-target="#sortModal" title="' + this.options.formatMultipleSort() + '">';
$multiSortBtn += ' <i class="' + this.options.iconsPrefix + ' ' + this.options.icons.sort + '"></i>';
$multiSortBtn += '</button>';
$btnGroup.append($multiSortBtn);
showSortModal(that);
}
this.$el.one('sort.bs.table', function() {
isSingleSort = true;
});
this.$el.on('multiple-sort.bs.table', function() {
isSingleSort = false;
});
this.$el.on('load-success.bs.table', function() {
if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object') {
that.onMultipleSort();
}
});
this.$el.on('column-switch.bs.table', function() {
that.options.sortPriority = null;
$('#sortModal').remove();
showSortModal(that);
});
}
};
BootstrapTable.prototype.onMultipleSort = function() {
var that = this;
var cmp = function(x, y) {
return x > y ? 1 : x < y ? -1 : 0;
};
var arrayCmp = function(a, b) {
var arr1 = [],
arr2 = [];
for (var i = 0; i < that.options.sortPriority.length; i++) {
var order = that.options.sortPriority[i].sortOrder === 'desc' ? -1 : 1,
aa = a[that.options.sortPriority[i].sortName],
bb = b[that.options.sortPriority[i].sortName];
if (aa === undefined || aa === null) {
aa = '';
}
if (bb === undefined || bb === null) {
bb = '';
}
if ($.isNumeric(aa) && $.isNumeric(bb)) {
aa = parseFloat(aa);
bb = parseFloat(bb);
}
if (typeof aa !== 'string') {
aa = aa.toString();
}
arr1.push(
order * cmp(aa, bb));
arr2.push(
order * cmp(bb, aa));
}
return cmp(arr1, arr2);
};
this.data.sort(function(a, b) {
return arrayCmp(a, b);
});
this.initBody();
this.assignSortableArrows();
this.trigger('multiple-sort');
};
BootstrapTable.prototype.addLevel = function(index, sortPriority) {
var $sortModal = $("#sortModal"),
text = index === 0 ? this.options.formatSortBy() : this.options.formatThenBy();
$sortModal.find('tbody')
.append($('<tr>')
.append($('<td>').text(text))
.append($('<td>').append($('<select class="form-control multi-sort-name">')))
.append($('<td>').append($('<select class="form-control multi-sort-order">')))
);
var $multiSortName = $sortModal.find('.multi-sort-name').last(),
$multiSortOrder = $sortModal.find('.multi-sort-order').last();
this.options.columns.forEach(function(column) {
if (column.sortable === false || column.visible === false) {
return true;
}
$multiSortName.append('<option value="' + column.field + '">' + column.title + '</option>');
});
$.each(sort_order, function(value, order) {
$multiSortOrder.append('<option value="' + value + '">' + order + '</option>');
});
if (sortPriority !== undefined) {
$multiSortName.find('option[value="' + sortPriority.sortName + '"]').attr("selected", true);
$multiSortOrder.find('option[value="' + sortPriority.sortOrder + '"]').attr("selected", true);
}
};
BootstrapTable.prototype.assignSortableArrows = function() {
var that = this,
headers = that.$header.find('th');
for (var i = 0; i < headers.length; i++) {
for (var c = 0; c < that.options.sortPriority.length; c++) {
if ($(headers[i]).data('field') === that.options.sortPriority[c].sortName) {
$(headers[i]).find('.sortable').css('background-image', 'url(' + (that.options.sortPriority[c].sortOrder === 'desc' ? arrowDesc : arrowAsc) + ')');
}
}
}
};
BootstrapTable.prototype.setButtonStates = function() {
var $sortModal = $('#sortModal'),
total = $sortModal.find('.multi-sort-name:first option').length,
current = $sortModal.find('tbody tr').length;
if (current == total) {
$sortModal.find('#add').attr('disabled', 'disabled');
}
if (current > 1) {
$sortModal.find('#delete').removeAttr('disabled');
}
if (current < total) {
$sortModal.find('#add').removeAttr('disabled');
}
if (current == 1) {
$sortModal.find('#delete').attr('disabled', 'disabled');
}
};
})(jQuery);
@@ -0,0 +1,13 @@
# Table Natural Sorting
Use Plugin: [bootstrap-table-natural-sorting](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/natural-sorting)
## Usage
```html
<script src="extensions/natural-sorting/bootstrap-table-natural-sorting.js"></script>
```
### Options
* Just add data-sorter="alphanum" to any th
@@ -0,0 +1,47 @@
/**
* @author: Brian Huisman
* @webSite: http://www.greywyvern.com
* @version: v1.0.0
* JS function to allow natural sorting on bootstrap-table columns
* just add data-sorter="alphanum" to any th
*
* @update Dennis Hernández <http://djhvscf.github.io/Blog>
*/
function alphanum(a, b) {
function chunkify(t) {
var tz = [],
x = 0,
y = -1,
n = 0,
i,
j;
while (i = (j = t.charAt(x++)).charCodeAt(0)) {
var m = (i === 46 || (i >= 48 && i <= 57));
if (m !== n) {
tz[++y] = "";
n = m;
}
tz[y] += j;
}
return tz;
}
var aa = chunkify(a);
var bb = chunkify(b);
for (x = 0; aa[x] && bb[x]; x++) {
if (aa[x] !== bb[x]) {
var c = Number(aa[x]),
d = Number(bb[x]);
if (c == aa[x] && d == bb[x]) {
return c - d;
} else {
return (aa[x] > bb[x]) ? 1 : -1;
}
}
}
return aa.length - bb.length;
}
@@ -0,0 +1,35 @@
# Table Reorder Columns
Use Plugin: [bootstrap-table-reorder-columns](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/reorder-columns) </br>
Dependence: [dragTable](https://github.com/akottr/dragtable/) v2.0.14 (must include the css file), </br>
[jquery-ui](https://code.jquery.com/ui/) v1.11
## Usage
```html
<link rel="stylesheet" href=".../dragtable.css">
<script src=".../jquery-ui.js"></script>
<script src=".../jquery.dragtable.js"></script>
<script src="extensions/reorder-columns/bootstrap-table-reorder-columns.js"></script>
```
## Options
### reorderableColumns
* type: Boolean
* description: Set true to allow the reorder feature.
* default: `false`
### maxMovingRows
* type: Integer
* description: Moving only the header. Recommended for very large tables (cells > 1000)
* default: `10`
## Events
### onReorderColumn(reorder-column.bs.table)
Fired when the column was dropped, receive as parameter the new header fields order
@@ -0,0 +1,118 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.1.0
*/
!function ($) {
'use strict';
var getFieldIndex = function (columns, field) {
var index = -1;
$.each(columns, function (i, column) {
if (column.field === field) {
index = i;
return false;
}
return true;
});
return index;
};
$.extend($.fn.bootstrapTable.defaults, {
reorderableColumns: false,
maxMovingRows: 10,
onReorderColumn: function (headerFields) {
return false;
}
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'reorder-column.bs.table': 'onReorderColumn'
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initHeader = BootstrapTable.prototype.initHeader,
_toggleColumn = BootstrapTable.prototype.toggleColumn,
_toggleView = BootstrapTable.prototype.toggleView,
_resetView = BootstrapTable.prototype.resetView;
BootstrapTable.prototype.initHeader = function () {
_initHeader.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableColumns) {
return;
}
this.makeRowsReorderable();
};
BootstrapTable.prototype.toggleColumn = function () {
_toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableColumns) {
return;
}
this.makeRowsReorderable();
};
BootstrapTable.prototype.toggleView = function () {
_toggleView.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableColumns) {
return;
}
if (this.options.cardView) {
return;
}
this.makeRowsReorderable();
};
BootstrapTable.prototype.resetView = function () {
_resetView.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableColumns) {
return;
}
this.makeRowsReorderable();
};
BootstrapTable.prototype.makeRowsReorderable = function () {
var that = this;
try {
$(this.$el).dragtable('destroy');
} catch (e) {}
$(this.$el).dragtable({
maxMovingRows: that.options.maxMovingRows,
clickDelay:200,
beforeStop: function() {
var ths = [],
columns = [],
columnIndex = -1;
that.$header.find('th').each(function (i) {
ths.push($(this).data('field'));
});
for (var i = 0; i < ths.length; i++ ) {
columnIndex = getFieldIndex(that.options.columns, ths[i]);
if (columnIndex !== -1) {
columns.push(that.options.columns[columnIndex]);
that.options.columns.splice(columnIndex, 1);
}
}
that.options.columns = that.options.columns.concat(columns);
that.header.fields = ths;
that.resetView();
that.trigger('reorder-column', ths);
}
});
};
}(jQuery);
@@ -0,0 +1,74 @@
# Table Reorder Rows
Use Plugin: [bootstrap-table-reorder-rows](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/reorder-rows) </br>
Dependence: [tablednd](https://github.com/isocra/TableDnD) v0.9, </br>
if you want you can include the bootstrap-table-reorder-rows.css file to use the default dragClass
## Usage
```html
<link rel="stylesheet" href=".../bootstrap-table-reorder-rows.css">
<script src=".../jquery.tablednd.js"></script>
<script src="extensions/reorder-rows/bootstrap-table-reorder-rows.js"></script>
```
## Options
### reorderableRows
* type: Boolean
* description: Set true to allow the reorder feature.
* default: `false`
### onDragStyle
* type: String
* description: This is the style that is assigned to the row during drag. There are limitations to the styles that can be associated with a row (such as you can't assign a borderwell you can, but it won't be displayed).
* default: `null`
### onDropStyle
* type: String
* description: This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations to what you can do. Also this replaces the original style, so again consider using onDragClass which is simply added and then removed on drop.
* default: `null`
### onDragClass
* type: String
* description: This class is added for the duration of the drag and then removed when the row is dropped. It is more flexible than using onDragStyle since it can be inherited by the row cells and other content.
* default: `reorder_rows_onDragClass`
### dragHandle
* type: String
* description: This is the cursor to use
* default: `null`
### useRowAttrFunc
* type: Boolean
* description: This function must be use if your `tr` elements won't have the `id` attribute. If your `tr` elements don't have the `id` attribute this plugin don't fire the onDrop event.
* default: `false`
### onReorderRowsDrag
* type: Function
* description: Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the table and the row which the user has started to drag.
* default: `empty function`
### onReorderRowsDrop
* type: Function
* description: Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table and the row that was dropped.
* default: `empty function`
## Events
### onReorderRow(reorder-row.bs.table)
Fired when the row was dropped, receive as parameter the new data order
## The existing problems
* After search if the user reorder the rows the data is not shown properly after that.
@@ -0,0 +1,14 @@
.reorder_rows_onDragClass td {
background-color: #eee;
-webkit-box-shadow: 11px 5px 12px 2px #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
-webkit-box-shadow: 6px 3px 5px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
-moz-box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
-box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
}
.reorder_rows_onDragClass td:last-child {
-webkit-box-shadow: 8px 7px 12px 0 #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
-webkit-box-shadow: 1px 8px 6px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
-moz-box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset;
-box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset;
}
@@ -0,0 +1,115 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.0.0
*/
!function ($) {
'use strict';
var isSearch = false;
var rowAttr = function (row, index) {
return {
id: 'customId_' + index
};
};
$.extend($.fn.bootstrapTable.defaults, {
reorderableRows: false,
onDragStyle: null,
onDropStyle: null,
onDragClass: "reorder_rows_onDragClass",
dragHandle: null,
useRowAttrFunc: false,
onReorderRowsDrag: function (table, row) {
return false;
},
onReorderRowsDrop: function (table, row) {
return false;
},
onReorderRow: function (newData) {
return false;
}
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'reorder-row.bs.table': 'onReorderRow'
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_init = BootstrapTable.prototype.init,
_initSearch = BootstrapTable.prototype.initSearch;
BootstrapTable.prototype.init = function () {
_init.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableRows) {
return;
}
var that = this;
if (this.options.useRowAttrFunc) {
this.options.rowAttributes = rowAttr;
}
var onPostBody = this.options.onPostBody;
this.options.onPostBody = function () {
setTimeout(function () {
that.makeRowsReorderable();
onPostBody.apply();
}, 1);
};
};
BootstrapTable.prototype.initSearch = function () {
_initSearch.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.reorderableRows) {
return;
}
//Known issue after search if you reorder the rows the data is not display properly
//isSearch = true;
};
BootstrapTable.prototype.makeRowsReorderable = function () {
if (this.options.cardView) {
return;
}
var that = this;
this.$el.tableDnD({
onDragStyle: that.options.onDragStyle,
onDropStyle: that.options.onDropStyle,
onDragClass: that.options.onDragClass,
onDrop: that.onDrop,
onDragStart: that.options.onReorderRowsDrag,
dragHandle: that.options.dragHandle
});
};
BootstrapTable.prototype.onDrop = function (table, row) {
var tableBs = $(table),
tableBsData = tableBs.data('bootstrap.table'),
tableBsOptions = tableBs.data('bootstrap.table').options,
row = null,
newData = [];
for (var i = 0; i < table.tBodies[0].rows.length; i++) {
row = $(table.tBodies[0].rows[i]);
newData.push(tableBsOptions.data[row.data('index')]);
row.data('index', i).attr('data-index', i);
}
tableBsOptions.data = newData;
//Call the user defined function
tableBsOptions.onReorderRowsDrop.apply(table, row);
//Call the event reorder-row
tableBsData.trigger('reorder-row', newData);
};
}(jQuery);
@@ -0,0 +1,66 @@
# Table Resizable
Use Plugin: [bootstrap-table-resizable](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/resizable) </br>
Dependence: [colResizable](https://github.com/alvaro-prieto/colResizable) v1.5
## Usage
```html
<script src="extensions/cookie/bootstrap-table-resizable.js"></script>
```
## Options
### resizable
* type: Boolean
* description: Set true to allow the resize in each column.
* default: `false`
### liveDrag
* type: Boolean
* description: When set to true the table layout is updated while dragging column anchors. liveDrag enabled is more CPU consuming so it is not recommended for slow computers, specially when dealing with huge or extremely complicated tables.
* default: `false`
### fixed
* type: Boolean
* description: It is used to set how the resize method works. In fixed mode resizing a column does not alter total table width, which means that when a column is expanded the next one shrinks. If fixed is set to false then table can change its width and each column can shrink or expand independently.
* default: `true`
### headerOnly
* type: Boolean
* description: This attribute can be used to prevent vertical expansion of the column anchors to fit the table height. If it is set to true, column handler's size will be bounded to the first row's vertical size.
* default: `false`
### minWidth
* type: Integer
* description: This value specifies the minimum width (measured in pixels) that is allowed for the columns.
* default: `15`
### hoverCursor
* type: String
* description: This attribute can be used to customize the cursor that will be displayed when the user is positioned on the column anchors.
* default: `e-resize`
### dragCursor
* type: String
* description: Defines the cursor that will be used while the user is resizing a column.
* default: `e-resize`
### onResizableResize
* type: Function
* description: If a callback function is supplied it will be fired when the user has ended dragging a column anchor altering the previous table layout. The callback function can obtain a reference to the updated table through the currentTarget attribute of the event retrieved by parameters.
* default: `empty function`
### onResizableDrag
* type: Function
* description: This event is fired while dragging a column anchor if liveDrag is enabled. It can be useful if the table is being used as a multiple range slider. The callback function can obtain a reference to the updated table through the currentTarget attribute of the event retrieved by parameters
* default: `empty function`
@@ -0,0 +1,74 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.0.0
*/
(function ($) {
'use strict';
var initResizable = function (that) {
//Deletes the plugin to re-create it
that.$el.colResizable({disable: true});
//Creates the plugin
that.$el.colResizable({
liveDrag: that.options.liveDrag,
fixed: that.options.fixed,
headerOnly: that.options.headerOnly,
minWidth: that.options.minWidth,
hoverCursor: that.options.hoverCursor,
dragCursor: that.options.dragCursor,
onResize: that.onResize,
onDrag: that.options.onResizableDrag
});
};
$.extend($.fn.bootstrapTable.defaults, {
resizable: false,
liveDrag: false,
fixed: true,
headerOnly: false,
minWidth: 15,
hoverCursor: 'e-resize',
dragCursor: 'e-resize',
onResizableResize: function (e) {
return false;
},
onResizableDrag: function (e) {
return false;
}
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_toggleView = BootstrapTable.prototype.toggleView,
_resetView = BootstrapTable.prototype.resetView;
BootstrapTable.prototype.toggleView = function () {
_toggleView.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.resizable && this.options.cardView) {
//Deletes the plugin
$(this.$el).colResizable({disable: true});
}
};
BootstrapTable.prototype.resetView = function () {
var that = this;
_resetView.apply(this, Array.prototype.slice.apply(arguments));
if (this.options.resizable) {
// because in fitHeader function, we use setTimeout(func, 100);
setTimeout(function () {
initResizable(that);
}, 100);
}
};
BootstrapTable.prototype.onResize = function (e) {
var that = $(e.currentTarget);
that.bootstrapTable('resetView');
that.data('bootstrap.table').options.onResizableResize.apply(e);
}
})(jQuery);
@@ -0,0 +1,53 @@
# Table Toolbar
Use Plugin: [bootstrap-table-toolbar](https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/toolbar)
## Usage
```html
<script src="extensions/toolbar/bootstrap-table-toolbar.js"></script>
```
## Options
### advancedSearch
* type: Boolean
* description: Set true to allow the advanced search.
* default: `false`
### idForm
* type: String
* description: Must be set to know the idform.
* default: `advancedSearch`
### actionForm
* type: String
* description: Set the action of the form (pop-up).
* default: ``
### idTable
* type: String
* description: Set the id of the table to create the pop-up form.
* default: ``
## Locales
### formatAdvancedSearch
* description: Title of the advanced search modal
* default: `Advanced search`
### formatAdvancedCloseButton
* description: Text of the close button
* default: `Close`
## Events
### onColumnAdvancedSearch(column-advanced-search.bs.table)
* Fired when we are searching into the advanced search form
@@ -0,0 +1,237 @@
/**
* @author: aperez <aperez@datadec.es>
* @version: v2.0.0
*
* @update Dennis Hernández <http://djhvscf.github.io/Blog>
*/
!function($) {
'use strict';
var firstLoad = false;
var sprintf = function(str) {
var args = arguments,
flag = true,
i = 1;
str = str.replace(/%s/g, function() {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
};
var calculateObjectValue = function (self, name, args, defaultValue) {
if (typeof name === 'string') {
// support obj.func1.func2
var names = name.split('.');
if (names.length > 1) {
name = window;
$.each(names, function (i, f) {
name = name[f];
});
} else {
name = window[name];
}
}
if (typeof name === 'object') {
return name;
}
if (typeof name === 'function') {
return name.apply(self, args);
}
return defaultValue;
};
var showAvdSearch = function(pColumns, searchTitle, searchText, that) {
if (!$("#avdSearchModal").hasClass("modal")) {
var vModal = "<div id=\"avdSearchModal\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">";
vModal += "<div class=\"modal-dialog modal-xs\">";
vModal += " <div class=\"modal-content\">";
vModal += " <div class=\"modal-header\">";
vModal += " <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\" >&times;</button>";
vModal += sprintf(" <h4 class=\"modal-title\">%s</h4>", searchTitle);
vModal += " </div>";
vModal += " <div class=\"modal-body modal-body-custom\">";
vModal += " <div class=\"container-fluid\" id=\"avdSearchModalContent\" style=\"padding-right: 0px;padding-left: 0px;\" >";
vModal += " </div>";
vModal += " </div>";
vModal += " </div>";
vModal += " </div>";
vModal += "</div>";
$("body").append($(vModal));
var vFormAvd = createFormAvd(pColumns, searchText, that),
timeoutId = 0;;
$('#avdSearchModalContent').append(vFormAvd.join(''));
$('#' + that.options.idForm).off('keyup blur', 'input').on('keyup blur', 'input', function (event) {
clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
that.onColumnAdvancedSearch(event);
}, that.options.searchTimeOut);
});
$("#btnCloseAvd").click(function() {
$("#avdSearchModal").modal('hide');
});
$("#avdSearchModal").modal();
} else {
$("#avdSearchModal").modal();
}
};
var createFormAvd = function(pColumns, searchText, that) {
var htmlForm = [];
htmlForm.push(sprintf('<form class="form-horizontal" id="%s" action="%s" >', that.options.idForm, that.options.actionForm));
for (var i in pColumns) {
var vObjCol = pColumns[i];
if (!vObjCol.checkbox && vObjCol.visible && vObjCol.searchable) {
htmlForm.push('<div class="form-group">');
htmlForm.push(sprintf('<label class="col-sm-4 control-label">%s</label>', vObjCol.title));
htmlForm.push('<div class="col-sm-6">');
htmlForm.push(sprintf('<input type="text" class="form-control input-md" name="%s" placeholder="%s" id="%s">', vObjCol.field, vObjCol.title, vObjCol.field));
htmlForm.push('</div>');
htmlForm.push('</div>');
}
}
htmlForm.push('<div class="form-group">');
htmlForm.push('<div class="col-sm-offset-9 col-sm-3">');
htmlForm.push(sprintf('<button type="button" id="btnCloseAvd" class="btn btn-default" >%s</button>', searchText));
htmlForm.push('</div>');
htmlForm.push('</div>');
htmlForm.push('</form>');
return htmlForm;
};
$.extend($.fn.bootstrapTable.defaults, {
advancedSearch: false,
idForm: 'advancedSearch',
actionForm: '',
idTable: undefined,
onColumnAdvancedSearch: function (field, text) {
return false;
}
});
$.extend($.fn.bootstrapTable.defaults.icons, {
advancedSearchIcon: 'glyphicon-chevron-down'
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'column-advanced-search.bs.table': 'onColumnAdvancedSearch'
});
$.extend($.fn.bootstrapTable.locales, {
formatAdvancedSearch: function() {
return 'Advanced search';
},
formatAdvancedCloseButton: function() {
return "Close";
}
});
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initToolbar = BootstrapTable.prototype.initToolbar,
_load = BootstrapTable.prototype.load,
_initSearch = BootstrapTable.prototype.initSearch;
BootstrapTable.prototype.initToolbar = function() {
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.search) {
return;
}
if (!this.options.advancedSearch) {
return;
}
var that = this,
html = [];
html.push(sprintf('<div class="columns columns-%s btn-group pull-%s" role="group">', this.options.buttonsAlign, this.options.buttonsAlign));
html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="advancedSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatAdvancedSearch()));
html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.advancedSearchIcon))
html.push('</button></div>');
that.$toolbar.prepend(html.join(''));
that.$toolbar.find('button[name="advancedSearch"]')
.off('click').on('click', function() {
showAvdSearch(that.options.columns, that.options.formatAdvancedSearch(), that.options.formatAdvancedCloseButton(), that);
});
};
BootstrapTable.prototype.load = function(data) {
_load.apply(this, Array.prototype.slice.apply(arguments));
if (typeof this.options.idTable === 'undefined') {
return;
} else {
if (!firstLoad) {
var height = parseInt($(".bootstrap-table").height());
height += 10;
$("#" + this.options.idTable).bootstrapTable("resetView", {height: height});
firstLoad = true;
}
}
};
BootstrapTable.prototype.initSearch = function () {
_initSearch.apply(this, Array.prototype.slice.apply(arguments));
var that = this;
var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
this.data = fp ? $.grep(this.data, function (item, i) {
for (var key in fp) {
var fval = fp[key].toLowerCase();
var value = item[key];
value = calculateObjectValue(that.header,
that.header.formatters[$.inArray(key, that.header.fields)],
[value, item, i], value);
if (!($.inArray(key, that.header.fields) !== -1 &&
(typeof value === 'string' || typeof value === 'number') &&
(value + '').toLowerCase().indexOf(fval) !== -1)) {
return false;
}
}
return true;
}) : this.data;
};
BootstrapTable.prototype.onColumnAdvancedSearch = function (event) {
var text = $.trim($(event.currentTarget).val());
var $field = $(event.currentTarget)[0].id;
if ($.isEmptyObject(this.filterColumnsPartial)) {
this.filterColumnsPartial = {};
}
if (text) {
this.filterColumnsPartial[$field] = text;
} else {
delete this.filterColumnsPartial[$field];
}
this.options.pageNumber = 1;
this.onSearch(event);
this.updatePagination();
this.trigger('column-advanced-search', $field, text);
};
}(jQuery);
@@ -0,0 +1,179 @@
[List of All Locales and Their Short Codes](http://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes)
```
af-ZA
am-ET
ar-AE
ar-BH
ar-DZ
ar-EG
ar-IQ
ar-JO
ar-KW
ar-LB
ar-LY
ar-MA
arn-CL
ar-OM
ar-QA
ar-SY
ar-TN
ar-YE
as-IN
az-Cyrl-AZ
az-Latn-AZ
ba-RU
be-BY
bg-BG
bn-BD
bn-IN
bo-CN
br-FR
bs-Cyrl-BA
bs-Latn-BA
ca-ES
co-FR
cy-GB
de-AT
de-CH
de-LI
de-LU
dsb-DE
dv-MV
en-029
en-AU
en-BZ
en-CA
en-GB
en-IE
en-IN
en-JM
en-MY
en-NZ
en-PH
en-SG
en-TT
en-ZA
en-ZW
es-BO
es-CL
es-CO
es-DO
es-EC
es-ES
es-GT
es-HN
es-PA
es-PE
es-PR
es-PY
es-SV
es-US
es-UY
es-VE
et-EE
eu-ES
fa-IR
fi-FI
fil-PH
fo-FO
fr-CA
fr-CH
fr-LU
fr-MC
fy-NL
ga-IE
gd-GB
gl-ES
gsw-FR
gu-IN
ha-Latn-NG
he-IL
hi-IN
hr-BA
hr-HR
hsb-DE
hy-AM
id-ID
ig-NG
ii-CN
is-IS
it-CH
iu-Cans-CA
iu-Latn-CA
kk-KZ
kl-GL
km-KH
kn-IN
kok-IN
ky-KG
lb-LU
lo-LA
lt-LT
lv-LV
mi-NZ
mk-MK
ml-IN
mn-MN
mn-Mong-CN
moh-CA
mr-IN
ms-BN
mt-MT
ne-NP
nl-BE
nn-NO
nso-ZA
oc-FR
or-IN
pa-IN
prs-AF
ps-AF
qut-GT
quz-BO
quz-EC
quz-PE
rm-CH
rw-RW
sah-RU
sa-IN
se-FI
se-NO
se-SE
si-LK
sl-SI
sma-NO
sma-SE
smj-NO
smj-SE
smn-FI
sms-FI
sq-AL
sr-Cyrl-BA
sr-Cyrl-CS
sr-Cyrl-ME
sr-Cyrl-RS
sr-Latn-BA
sr-Latn-CS
sr-Latn-ME
sr-Latn-RS
sv-FI
sw-KE
syr-SY
ta-IN
te-IN
tg-Cyrl-TJ
tk-TM
tn-ZA
tt-RU
tzm-Latn-DZ
ug-CN
uz-Cyrl-UZ
uz-Latn-UZ
wo-SN
xh-ZA
yo-NG
zh-HK
zh-MO
zh-SG
zu-ZA
```
@@ -0,0 +1,40 @@
/**
* Bootstrap Table English translation
* Author: Zhixin Wen<wenzhixin2010@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ar-SA'] = {
formatLoadingMessage: function () {
return 'جاري التحميل, يرجى الإنتظار...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' سجل لكل صفحة';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'الظاهر ' + pageFrom + ' إلى ' + pageTo + ' من ' + totalRows + ' سجل';
},
formatSearch: function () {
return 'بحث';
},
formatNoMatches: function () {
return 'لا توجد نتائج مطابقة للبحث';
},
formatPaginationSwitch: function () {
return 'إخفاء\إظهار ترقيم الصفحات';
},
formatRefresh: function () {
return 'تحديث';
},
formatToggle: function () {
return 'تغيير';
},
formatColumns: function () {
return 'أعمدة';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ar-SA']);
})(jQuery);
@@ -0,0 +1,44 @@
/**
* Bootstrap Table Czech translation
* Author: Lukas Kral (monarcha@seznam.cz)
* Author: Jakub Svestka <svestka1999@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['cs-CZ'] = {
formatLoadingMessage: function () {
return 'Čekejte, prosím...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' položek na stránku';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Zobrazena ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
},
formatSearch: function () {
return 'Vyhledávání';
},
formatNoMatches: function () {
return 'Nenalezena žádná vyhovující položka';
},
formatPaginationSwitch: function () {
return 'Skrýt/Zobrazit stránkování';
},
formatRefresh: function () {
return 'Aktualizovat';
},
formatToggle: function () {
return 'Přepni';
},
formatColumns: function () {
return 'Sloupce';
},
formatAllRows: function () {
return 'Vše';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['cs-CZ']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table danish translation
* Author: Your Name Jan Borup Coyle, github@coyle.dk
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['da-DK'] = {
formatLoadingMessage: function () {
return 'Indlæser, vent venligst...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' poster pr side';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Viser ' + pageFrom + ' til ' + pageTo + ' af ' + totalRows + ' rækker';
},
formatSearch: function () {
return 'Søg';
},
formatNoMatches: function () {
return 'Ingen poster fundet';
},
formatRefresh: function () {
return 'Opdater';
},
formatToggle: function () {
return 'Skift';
},
formatColumns: function () {
return 'Kolonner';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['da-DK']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table German translation
* Author: Paul Mohr - Sopamo<p.mohr@sopamo.de>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['de-DE'] = {
formatLoadingMessage: function () {
return 'Lade, bitte warten...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' Einträge pro Seite';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Zeige ' + pageFrom + ' bis ' + pageTo + ' von ' + totalRows + ' Zeile' + ((totalRows > 1) ? "n" : "");
},
formatSearch: function () {
return 'Suchen';
},
formatNoMatches: function () {
return 'Keine passenden Ergebnisse gefunden';
},
formatRefresh: function () {
return 'Neu laden';
},
formatToggle: function () {
return 'Umschalten';
},
formatColumns: function () {
return 'Spalten';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['de-DE']);
})(jQuery);
@@ -0,0 +1,28 @@
/**
* Bootstrap Table Greek translation
* Author: giannisdallas
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['el-GR'] = {
formatLoadingMessage: function () {
return 'Φορτώνει, παρακαλώ περιμένετε...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' αποτελέσματα ανά σελίδα';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Εμφανίζονται από την ' + pageFrom + ' ως την ' + pageTo + ' από σύνολο ' + totalRows + ' σειρών';
},
formatSearch: function () {
return 'Αναζητήστε';
},
formatNoMatches: function () {
return 'Δεν βρέθηκαν αποτελέσματα';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['el-GR']);
})(jQuery);
@@ -0,0 +1,43 @@
/**
* Bootstrap Table English translation
* Author: Zhixin Wen<wenzhixin2010@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['en-US'] = {
formatLoadingMessage: function () {
return 'Loading, please wait...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' records per page';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
},
formatSearch: function () {
return 'Search';
},
formatNoMatches: function () {
return 'No matching records found';
},
formatPaginationSwitch: function () {
return 'Hide/Show pagination';
},
formatRefresh: function () {
return 'Refresh';
},
formatToggle: function () {
return 'Toggle';
},
formatColumns: function () {
return 'Columns';
},
formatAllRows: function () {
return 'All';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['en-US']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table <Language> translation
* Author: Your Name <your@email>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['en-US'] = {
formatLoadingMessage: function () {
return 'Loading, please wait...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' records per page';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
},
formatSearch: function () {
return 'Search';
},
formatNoMatches: function () {
return 'No matching records found';
},
formatPaginationSwitch: function () {
return 'Hide/Show pagination';
},
formatRefresh: function () {
return 'Refresh';
},
formatToggle: function () {
return 'Toggle';
},
formatColumns: function () {
return 'Columns';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['en-US']);
})(jQuery);
@@ -0,0 +1,31 @@
/**
* Bootstrap Table Spanish (Argentina) translation
* Author: Felix Vera (felix.vera@gmail.com)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['es-AR'] = {
formatLoadingMessage: function () {
return 'Cargando, espere por favor...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
},
formatSearch: function () {
return 'Buscar';
},
formatNoMatches: function () {
return 'No se encontraron registros';
},
formatAllRows: function () {
return 'Todo';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-AR']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Spanish (Costa Rica) translation
* Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['es-CR'] = {
formatLoadingMessage: function () {
return 'Cargando, por favor espere...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
},
formatSearch: function () {
return 'Buscar';
},
formatNoMatches: function () {
return 'No se encontraron registros';
},
formatRefresh: function () {
return 'Refrescar';
},
formatToggle: function () {
return 'Alternar';
},
formatColumns: function () {
return 'Columnas';
},
formatAllRows: function () {
return 'Todo';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-CR']);
})(jQuery);
@@ -0,0 +1,32 @@
/**
* Bootstrap Table Spanish (México) translation (Obtenido de traducción de Argentina)
* Author: Felix Vera (felix.vera@gmail.com)
* Copiado: Mauricio Vera (mauricioa.vera@gmail.com)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['es-MX'] = {
formatLoadingMessage: function () {
return 'Cargando, espere por favor...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
},
formatSearch: function () {
return 'Buscar';
},
formatNoMatches: function () {
return 'No se encontraron registros';
},
formatAllRows: function () {
return 'Todo';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-MX']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Spanish (Nicaragua) translation
* Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['es-NI'] = {
formatLoadingMessage: function () {
return 'Cargando, por favor espere...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
},
formatSearch: function () {
return 'Buscar';
},
formatNoMatches: function () {
return 'No se encontraron registros';
},
formatRefresh: function () {
return 'Refrescar';
},
formatToggle: function () {
return 'Alternar';
},
formatColumns: function () {
return 'Columnas';
},
formatAllRows: function () {
return 'Todo';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-NI']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Spanish (España) translation
* Author: Antonio Pérez <anpegar@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['es-SP'] = {
formatLoadingMessage: function () {
return 'Cargando, por favor espera...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por p&#225;gina.';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return pageFrom + ' - ' + pageTo + ' de ' + totalRows + ' registros.';
},
formatSearch: function () {
return 'Buscar';
},
formatNoMatches: function () {
return 'No se han encontrado registros.';
},
formatRefresh: function () {
return 'Actualizar';
},
formatToggle: function () {
return 'Alternar';
},
formatColumns: function () {
return 'Columnas';
},
formatAllRows: function () {
return 'Todo';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-SP']);
})(jQuery);
@@ -0,0 +1,28 @@
/**
* Bootstrap Table French (Belgium) translation
* Author: Julien Bisconti (julien.bisconti@gmail.com)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['fr-BE'] = {
formatLoadingMessage: function () {
return 'Chargement en cours...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' entrées par page';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Affiche de' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes';
},
formatSearch: function () {
return 'Recherche';
},
formatNoMatches: function () {
return 'Pas de fichiers trouvés';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-BE']);
})(jQuery);
@@ -0,0 +1,41 @@
/**
* Bootstrap Table French (France) translation
* Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
* Modification: Tidalf (https://github.com/TidalfFR)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['fr-FR'] = {
formatLoadingMessage: function () {
return 'Chargement en cours, patientez, s´il vous plaît ...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' lignes par page';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Affichage des lignes ' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes au total';
},
formatSearch: function () {
return 'Rechercher';
},
formatNoMatches: function () {
return 'Aucun résultat trouvé';
},
formatRefresh: function () {
return 'Rafraîchir';
},
formatToggle: function () {
return 'Alterner';
},
formatColumns: function () {
return 'Colonnes';
},
formatAllRows: function () {
return 'Tous';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-FR']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Hungarian translation
* Author: Nagy Gergely <info@nagygergely.eu>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['hu-HU'] = {
formatLoadingMessage: function () {
return 'Betöltés, kérem várjon...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' rekord per oldal';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Megjelenítve ' + pageFrom + ' - ' + pageTo + ' / ' + totalRows + ' összesen';
},
formatSearch: function () {
return 'Keresés';
},
formatNoMatches: function () {
return 'Nincs találat';
},
formatRefresh: function () {
return 'Frissítés';
},
formatToggle: function () {
return 'Váltás';
},
formatColumns: function () {
return 'Oszlopok';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['hu-HU']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Italian translation
* Author: Davide Renzi<davide.renzi@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['it-IT'] = {
formatLoadingMessage: function () {
return 'Caricamento in corso...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' records per pagina';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Pagina ' + pageFrom + ' di ' + pageTo + ' (' + totalRows + ' records)';
},
formatSearch: function () {
return 'Cerca';
},
formatNoMatches: function () {
return 'Nessun record trovato';
},
formatRefresh: function () {
return 'Rinfrescare';
},
formatToggle: function () {
return 'Alternare';
},
formatColumns: function () {
return 'Colonne';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['it-IT']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Japanese translation
* Author: Azamshul Azizy <azamshul@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ja-JP'] = {
formatLoadingMessage: function () {
return '読み込み中です。少々お待ちください。';
},
formatRecordsPerPage: function (pageNumber) {
return 'ページ当たり最大' + pageNumber + '件';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return '全' + totalRows + '件から、'+ pageFrom + 'から' + pageTo + '件目まで表示しています';
},
formatSearch: function () {
return '検索';
},
formatNoMatches: function () {
return '該当するレコードが見つかりません';
},
formatPaginationSwitch: function () {
return 'ページ数を表示・非表示';
},
formatRefresh: function () {
return '更新';
},
formatToggle: function () {
return 'トグル';
},
formatColumns: function () {
return '列';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ja-JP']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Georgian translation
* Author: Levan Lotuashvili <l.lotuashvili@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ka-GE'] = {
formatLoadingMessage: function() {
return 'იტვირთება, გთხოვთ მოიცადოთ...';
},
formatRecordsPerPage: function(pageNumber) {
return pageNumber + ' ჩანაწერი თითო გვერდზე';
},
formatShowingRows: function(pageFrom, pageTo, totalRows) {
return 'ნაჩვენებია ' + pageFrom + '-დან ' + pageTo + '-მდე ჩანაწერი ჯამური ' + totalRows + '-დან';
},
formatSearch: function() {
return 'ძებნა';
},
formatNoMatches: function() {
return 'მონაცემები არ არის';
},
formatPaginationSwitch: function() {
return 'გვერდების გადამრთველის დამალვა/გამოჩენა';
},
formatRefresh: function() {
return 'განახლება';
},
formatToggle: function() {
return 'ჩართვა/გამორთვა';
},
formatColumns: function() {
return 'სვეტები';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ka-GE']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Korean translation
* Author: Yi Tae-Hyeong (jsonobject@gmail.com)
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ko-KR'] = {
formatLoadingMessage: function () {
return '데이터를 불러오는 중입니다...';
},
formatRecordsPerPage: function (pageNumber) {
return '페이지 당 ' + pageNumber + '개 데이터 출력';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return '전체 ' + totalRows + '개 중 ' + pageFrom + '~' + pageTo + '번째 데이터 출력,';
},
formatSearch: function () {
return '검색';
},
formatNoMatches: function () {
return '조회된 데이터가 없습니다.';
},
formatRefresh: function () {
return '새로 고침';
},
formatToggle: function () {
return '전환';
},
formatColumns: function () {
return '컬럼 필터링';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ko-KR']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Malay translation
* Author: Azamshul Azizy <azamshul@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ms-MY'] = {
formatLoadingMessage: function () {
return 'Permintaan sedang dimuatkan. Sila tunggu sebentar...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' rekod setiap muka surat';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Sedang memaparkan rekod ' + pageFrom + ' hingga ' + pageTo + ' daripada jumlah ' + totalRows + ' rekod';
},
formatSearch: function () {
return 'Cari';
},
formatNoMatches: function () {
return 'Tiada rekod yang menyamai permintaan';
},
formatPaginationSwitch: function () {
return 'Tunjuk/sembunyi muka surat';
},
formatRefresh: function () {
return 'Muatsemula';
},
formatToggle: function () {
return 'Tukar';
},
formatColumns: function () {
return 'Lajur';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ms-MY']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table norwegian translation
* Author: Jim Nordbø, jim@nordb.no
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['nb-NO'] = {
formatLoadingMessage: function () {
return 'Oppdaterer, vennligst vent...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' poster pr side';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Viser ' + pageFrom + ' til ' + pageTo + ' av ' + totalRows + ' rekker';
},
formatSearch: function () {
return 'Søk';
},
formatNoMatches: function () {
return 'Ingen poster funnet';
},
formatRefresh: function () {
return 'Oppdater';
},
formatToggle: function () {
return 'Endre';
},
formatColumns: function () {
return 'Kolonner';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nb-NO']);
})(jQuery);
@@ -0,0 +1,28 @@
/**
* Bootstrap Table Dutch translation
* Author: Your Name <info@a2hankes.nl>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['nl-NL'] = {
formatLoadingMessage: function () {
return 'Laden, even geduld...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' records per pagina';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Toon ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' records';
},
formatSearch: function () {
return 'Zoeken';
},
formatNoMatches: function () {
return 'Geen resultaten gevonden';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nl-NL']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Polish translation
* Author: zergu <michal.zagdan @ gmail com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['pl-PL'] = {
formatLoadingMessage: function () {
return 'Ładowanie, proszę czekać...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' rekordów na stronę';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Wyświetlanie rekordów od ' + pageFrom + ' do ' + pageTo + ' z ' + totalRows;
},
formatSearch: function () {
return 'Szukaj';
},
formatNoMatches: function () {
return 'Niestety, nic nie znaleziono';
},
formatRefresh: function () {
return 'Odśwież';
},
formatToggle: function () {
return 'Przełącz';
},
formatColumns: function () {
return 'Kolumny';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pl-PL']);
})(jQuery);
@@ -0,0 +1,41 @@
/**
* Bootstrap Table Brazilian Portuguese Translation
* Author: Eduardo Cerqueira<egcerqueira@gmail.com>
* Update: João Mello<jmello@hotmail.com.br>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['pt-BR'] = {
formatLoadingMessage: function () {
return 'Carregando, aguarde...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registros por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Exibindo ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
},
formatSearch: function () {
return 'Pesquisar';
},
formatRefresh: function () {
return 'Recarregar';
},
formatToggle: function () {
return 'Alternar';
},
formatColumns: function () {
return 'Colunas';
},
formatPaginationSwitch: function () {
return 'Ocultar/Exibir paginação';
},
formatNoMatches: function () {
return 'Nenhum registro encontrado';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-BR']);
})(jQuery);
@@ -0,0 +1,28 @@
/**
* Bootstrap Table Portuguese Portugal Translation
* Author: Burnspirit<burnspirit@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['pt-PT'] = {
formatLoadingMessage: function () {
return 'A carregar, aguarde...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' registos por página';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'A mostrar ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
},
formatSearch: function () {
return 'Pesquisa';
},
formatNoMatches: function () {
return 'Nenhum registo encontrado';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-PT']);
})(jQuery);
@@ -0,0 +1,43 @@
/**
* Bootstrap Table Romanian translation
* Author: cristake <cristianiosif@me.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ro-RO'] = {
formatLoadingMessage: function () {
return 'Se incarca, va rugam asteptati...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' inregistrari pe pagina';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Arata de la ' + pageFrom + ' pana la ' + pageTo + ' din ' + totalRows + ' randuri';
},
formatSearch: function () {
return 'Cauta';
},
formatNoMatches: function () {
return 'Nu au fost gasite inregistrari';
},
formatPaginationSwitch: function () {
return 'Ascunde/Arata paginatia';
},
formatRefresh: function () {
return 'Reincarca';
},
formatToggle: function () {
return 'Comuta';
},
formatColumns: function () {
return 'Coloane';
},
formatAllRows: function () {
return 'Toate';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ro-RO']);
})(jQuery);
@@ -0,0 +1,36 @@
/**
* Bootstrap Table Russian translation
* Author: Dunaevsky Maxim <dunmaksim@yandex.ru>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ru-RU'] = {
formatLoadingMessage: function () {
return 'Пожалуйста, подождите, идёт загрузка...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' записей на страницу';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Записи с ' + pageFrom + ' по ' + pageTo + ' из ' + totalRows;
},
formatSearch: function () {
return 'Поиск';
},
formatNoMatches: function () {
return 'Ничего не найдено';
},
formatRefresh: function () {
return 'Обновить';
},
formatToggle: function () {
return 'Переключить';
},
formatColumns: function () {
return 'Колонки';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ru-RU']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Slovak translation
* Author: Jozef Dúc<jozef.d13@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['sk-SK'] = {
formatLoadingMessage: function () {
return 'Prosím čakajte ...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' záznamov na stranu';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Zobrazená ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
},
formatSearch: function () {
return 'Vyhľadávanie';
},
formatNoMatches: function () {
return 'Nenájdená žiadne vyhovujúca položka';
},
formatRefresh: function () {
return 'Obnoviť';
},
formatToggle: function () {
return 'Prepni';
},
formatColumns: function () {
return 'Stĺpce';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sk-SK']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Swedish translation
* Author: C Bratt <bratt@inix.se>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['sv-SE'] = {
formatLoadingMessage: function () {
return 'Laddar, vänligen vänta...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' rader per sida';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Visa ' + pageFrom + ' till ' + pageTo + ' av ' + totalRows + ' rader';
},
formatSearch: function () {
return 'Sök';
},
formatNoMatches: function () {
return 'Inga matchande resultat funna.';
},
formatRefresh: function () {
return 'Uppdatera';
},
formatToggle: function () {
return 'Skifta';
},
formatColumns: function () {
return 'kolumn';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sv-SE']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Thai translation
* Author: Monchai S.<monchais@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['th-TH'] = {
formatLoadingMessage: function () {
return 'กำลังโหลดข้อมูล, กรุณารอสักครู่...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' รายการต่อหน้า';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'รายการที่ ' + pageFrom + ' ถึง ' + pageTo + ' จากทั้งหมด ' + totalRows + ' รายการ';
},
formatSearch: function () {
return 'ค้นหา';
},
formatNoMatches: function () {
return 'ไม่พบรายการที่ค้นหา !';
},
formatRefresh: function () {
return 'รีเฟรส';
},
formatToggle: function () {
return 'สลับมุมมอง';
},
formatColumns: function () {
return 'คอลัมน์';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['th-TH']);
})(jQuery);
@@ -0,0 +1,38 @@
/**
* Bootstrap Table Turkish translation
* Author: Emin Şen
* Author: Sercan Cakir <srcnckr@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['tr-TR'] = {
formatLoadingMessage: function () {
return 'Yükleniyor, lütfen bekleyin...';
},
formatRecordsPerPage: function (pageNumber) {
return 'Sayfa başına ' + pageNumber + ' kayıt.';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return totalRows + ' kayıttan ' + pageFrom + '-' + pageTo + ' arası gösteriliyor.';
},
formatSearch: function () {
return 'Ara';
},
formatNoMatches: function () {
return 'Eşleşen kayıt bulunamadı.';
},
formatRefresh: function () {
return 'Yenile';
},
formatToggle: function () {
return 'Değiştir';
},
formatColumns: function () {
return 'Sütunlar';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['tr-TR']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Ukrainian translation
* Author: Vitaliy Timchenko <vitaliy.timchenko@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['uk-UA'] = {
formatLoadingMessage: function () {
return 'Завантаження, будь ласка, зачекайте...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' записів на сторінку';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Показано з ' + pageFrom + ' по ' + pageTo + '. Всього: ' + totalRows;
},
formatSearch: function () {
return 'Пошук';
},
formatNoMatches: function () {
return 'Не знайдено жодного запису';
},
formatRefresh: function () {
return 'Оновити';
},
formatToggle: function () {
return 'Змінити';
},
formatColumns: function () {
return 'Стовпці';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['uk-UA']);
})(jQuery);
@@ -0,0 +1,37 @@
/**
* Bootstrap Table Urdu translation
* Author: Malik <me@malikrizwan.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['ur-PK'] = {
formatLoadingMessage: function () {
return 'براۓ مہربانی انتظار کیجئے';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' ریکارڈز فی صفہ ';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'دیکھیں ' + pageFrom + ' سے ' + pageTo + ' کے ' + totalRows + 'ریکارڈز';
},
formatSearch: function () {
return 'تلاش';
},
formatNoMatches: function () {
return 'کوئی ریکارڈ نہیں ملا';
},
formatRefresh: function () {
return 'تازہ کریں';
},
formatToggle: function () {
return 'تبدیل کریں';
},
formatColumns: function () {
return 'کالم';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ur-PK']);
})(jQuery);
@@ -0,0 +1,28 @@
/**
* Bootstrap Table Vietnamese translation
* Author: Duc N. PHAM <pngduc@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['vi-VN'] = {
formatLoadingMessage: function () {
return 'Đang tải...';
},
formatRecordsPerPage: function (pageNumber) {
return pageNumber + ' bản ghi mỗi trang';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return 'Hiển thị từ trang ' + pageFrom + ' đến ' + pageTo + ' của ' + totalRows + ' bảng ghi';
},
formatSearch: function () {
return 'Tìm kiếm';
},
formatNoMatches: function () {
return 'Không có dữ liệu';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['vi-VN']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Chinese translation
* Author: Zhixin Wen<wenzhixin2010@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['zh-CN'] = {
formatLoadingMessage: function () {
return '正在努力地加载数据中,请稍候……';
},
formatRecordsPerPage: function (pageNumber) {
return '每页显示 ' + pageNumber + ' 条记录';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录';
},
formatSearch: function () {
return '搜索';
},
formatNoMatches: function () {
return '没有找到匹配的记录';
},
formatPaginationSwitch: function () {
return '隐藏/显示分页';
},
formatRefresh: function () {
return '刷新';
},
formatToggle: function () {
return '切换';
},
formatColumns: function () {
return '列';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);
})(jQuery);
@@ -0,0 +1,40 @@
/**
* Bootstrap Table Chinese translation
* Author: Zhixin Wen<wenzhixin2010@gmail.com>
*/
(function ($) {
'use strict';
$.fn.bootstrapTable.locales['zh-TW'] = {
formatLoadingMessage: function () {
return '正在努力地載入資料,請稍候……';
},
formatRecordsPerPage: function (pageNumber) {
return '每頁顯示 ' + pageNumber + ' 項記錄';
},
formatShowingRows: function (pageFrom, pageTo, totalRows) {
return '顯示第 ' + pageFrom + ' 到第 ' + pageTo + ' 項記錄,總共 ' + totalRows + ' 項記錄';
},
formatSearch: function () {
return '搜尋';
},
formatNoMatches: function () {
return '沒有找符合的結果';
},
formatPaginationSwitch: function () {
return '隱藏/顯示分頁';
},
formatRefresh: function () {
return '刷新';
},
formatToggle: function () {
return '切換';
},
formatColumns: function () {
return '列';
}
};
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-TW']);
})(jQuery);