You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

791 lines
35 KiB

var DataReSort
(function ($) {
var defaults,
CreateData,
CreateInfo,
CreatePager,
CreateBtnPrev,
CreateBtnNext,
CreateAPrev,
CreateANext,
FilterJson,
CalculatePageCount,
extdataset,
exttable,
extwriters,
extBaseSet,
obj,
objHeader,
$divPager,
$trPager,
PageCount,
TempSortJson,
TempSort,
TempSortType,
InfoCount,
strSearchValue,
TimerCreateTr,
OldJson = [],
AryColumn = [];
defaults = {
BaseSet: {
HeaderClass: 'trHeader',
PagerID: 'trPager',
DivPagerID: 'Pager',
SelectPageClass: 'pageselected',
DataField: 'DataField',
Sorttype: 'Sorttype',
Sorting: 'Sorting',
Selected: 'Selected',
BtnPrevID: 'btnPrev',
BtnPrevClass: 'icon-angle-left',
BtnPrevText: ' ',
BtnPrevTopID: 'btnPrevTop',
BtnPrevTopClass: 'icon-double-angle-left',
BtnPrevTopText: ' ',
BtnNextID: 'btnNext',
BtnNextClass: 'icon-angle-right',
BtnNextText: ' ',
BtnNextTopID: 'btnNextTop',
BtnNextTopClass: 'icon-double-angle-right',
BtnNextTopText: ' ',
aPrevID: 'aPrev',
aNextID: 'aNext',
txtSearchID: 'txtSearch',
BtnSearchID: 'btnSearch',
BtnSearchClass: 'icon-search top-title-icon',
SelPageSizeID: 'selPageSize',
SelPageText: ' 每頁顯示筆數:',
txtGoPageID: 'txtGoPage',
rowSelect: 'rowSelect',
HeaderType: 'th',
NeedRemove: 'NeedRemove'
},
dataset: {
sorts: {},
PageSize: 10,
PageLens: 10,
perPageOptions: [10, 20, 50, 100],
source: {},
key:[],
ShowColumn: null
},
table: {
ShowSearchBar: true,
ShowDropPageSize: false,
ShowDataCount: true,
ShowGoPage: true,
ShowBtnNextTop: true,
ShowBtnPrevTop: true,
UseTimerCreateTr:false,
ColumnWidth: {},
ColumnAlign:{},
noSort:[]
},
writers: {
_CreateInfo: CreateInfo,
_FilterJson: FilterJson
}
};
$.fn.OTKGridView = function (options, callback) {
/********************************************
* 函數名稱: CreateHeader()
* 目的:產生Header
* 作者:Gary
* 時間:2015/02/26
* 參數說明:
*********************************************/
CreateHeader = function () {
if (!objHeader.length) {
objHeader = $('<tr>', { 'class': extBaseSet.HeaderClass });
var blShowColumn = (extdataset.ShowColumn);
var JObj = (blShowColumn) ? extdataset.ShowColumn : extdataset.source[0];
for (key in JObj) {
if (typeof JObj[key] !== "function") {
var sub_key = key;
var sub_val = (blShowColumn) ? JObj[key] : key;
var $HeaderChild = $('<' + extBaseSet.HeaderType + '>', { 'html': sub_val || key,'width':exttable.ColumnWidth[key] }).attr(extBaseSet.DataField, sub_key).attr(extBaseSet.Sorttype, sub_key);
objHeader.append($HeaderChild);
}
}
$(obj).append(objHeader)
}
AryColumn = [];
$(objHeader).find('[' + extBaseSet.DataField + ']').each(function () {
var ThisValue = $(this).attr(extBaseSet.DataField);
if (ThisValue) {
AryColumn.push($(this).attr(extBaseSet.DataField))
}
})
}
/********************************************
* 函數名稱: CreateData(Json)
* 目的:依照Json產生資料樣式
* 作者:Gary
* 時間:2015/02/25
* 參數說明:Json:團體資料
*********************************************/
CreateData = function (Json) {
if (callback && extdataset.key.length & Json !== OldJson) {
CallBackCreateData(Json);
}
else if (callback) {
}
else {
BaseCreateData(Json);
}
OldJson = Json;
callback = false;
}
/********************************************
* 函數名稱: BaseCreateData(Json)
* 目的:依照Json產生資料樣式(基本版)
* 作者:Gary
* 時間:2015/05/22
* 參數說明:
*********************************************/
function BaseCreateData(Json) {
if ($($trPager).length) {
$trPager.siblings('tr').not(objHeader).remove();
}
else {
objHeader.siblings('tr').remove();
}
var intLen = Json.length;
var rowWriter = (extwriters._CreateInfo) ? extwriters._CreateInfo : CreateInfo;
if (exttable.UseTimerCreateTr) {
var intTime = 0;
clearInterval(TimerCreateTr);
TimerCreateTr = setInterval(function () {
if (intTime >= intLen) {
obj.children().attr('guid', guid())
clearInterval(TimerCreateTr);
} else {
rowWriter(Json[intTime]);
}
intTime++;
}, 1);
}
else {
for (var intTime = 0; intTime < intLen; intTime++) {
rowWriter(Json[intTime]);
}
obj.children().attr('guid', guid())
}
}
/********************************************
* 函數名稱: CallBackCreateData(Json)
* 目的:依照Json產生資料樣式(測試版-只更新有變動的資料)
* 作者:Gary
* 時間:2015/05/22
* 參數說明:
*********************************************/
function CallBackCreateData(Json) {
var intLen = Json.length;
var rowWriter = (extwriters._CreateInfo) ? extwriters._CreateInfo : CreateInfo;
$.each(OldJson, function (Index, JObj) {
var OldExist = [];
$.each(extdataset.key,function(Index,Value){
OldExist = getObjects(Json, Value, JObj[Value]);
})
if (OldExist.length) {
}
else {
var trRemove = obj.find('tr:not(.' + extBaseSet.HeaderClass + '):eq(' + Index + ')').fadeOut(500).addClass(extBaseSet.NeedRemove);
}
});
$.each(Json, function (Index, JObj) {
var OldExist = [];
$.each(extdataset.key,function(Index,Value){
OldExist = getObjects(OldJson, Value, JObj[Value]);
})
if (OldExist.length) {
var change = false;
var OldIndex;
$.each(OldJson, function (thisIndex, JObj) {
if (OldExist[0] === JObj) {
OldIndex = thisIndex;
}
});
if (JObj && OldExist[0] && callback) {
var JObjOld = OldExist[0];
$.each(JObj, function (Key, Value) {
if (JObj[Key] !== JObjOld[Key]) {
change = true;
}
})
}
if (change) {
var OldTr = obj.find('tr:not(.' + extBaseSet.HeaderClass + '):not(.' + extBaseSet.NeedRemove + '):eq(' + OldIndex + ')');
OldTr.addClass(extBaseSet.NeedRemove);
rowWriter(Json[Index], Index);
}
} else {
rowWriter(Json[Index], Index);
}
obj.find('tr.' + extBaseSet.NeedRemove).remove();
});
}
/********************************************
* 函數名稱: CreateInfo(JObj)
* 目的:依照JObj產生每筆資料格式
* 作者:Gary
* 時間:2015/02/25
* 參數說明:JObj:每筆資料
*********************************************/
function CreateInfo(JObj, Index) {
var $Tr = $('<tr>');
objHeader.children().each(function (index,value) {
var strDataField = $(this).attr(extBaseSet.DataField);
var $Td = $('<td>', {
'text': JObj[strDataField], 'title': JObj[strDataField]
});
$Tr.append($Td);
})
if ($($trPager).length) {
$($Tr).insertBefore($trPager);
} else {
if (Index === undefined) {
$(obj).append($Tr);
} else { //測試效果中 2015/02/22 Add By Gary
var InsertBefore = $(obj).find('tr:not(.' + extBaseSet.HeaderClass + '):not(.' + extBaseSet.NeedRemove + '):eq(' + Index + ')');
var intTrCount = $(obj).find('tr:not(.' + extBaseSet.HeaderClass + '):not(.' + extBaseSet.NeedRemove + ')').length;
$Tr.hide();
if (InsertBefore.length && intTrCount > Index) {
$Tr.insertBefore(InsertBefore);
} else {
$($Table).append($Tr);
}
$Tr.fadeIn(500);
}
}
}
/********************************************
* 函數名稱: CreatePager(PageCount,intPageStart)
* 目的:建置頁碼
* 作者:Gary
* 時間:2015/02/25
* 參數說明:PageCount:總共的頁碼
intPageStart:起始頁碼
*********************************************/
CreatePager = function (PageCount, intPageStart) {
var NowPage = parseInt($('.' + extBaseSet.SelectPageClass).text(), 10);
intPageValue = parseInt(intPageStart, 10);
$divPager.html('');
var intPage = (PageCount - intPageStart >= extdataset.PageLens) ? extdataset.PageLens : PageCount - intPageStart + 1;
var $btnPrev = CreateBtnPrev(PageCount);
var $btnPrevPrevTop = CreateBtnPrevTop(PageCount);
var $btnNext = CreateBtnNext(PageCount, intPageStart);
var $btnNextTop = CreateBtnNextTop(PageCount);
var $aPrev = CreateAPrev(PageCount, intPageStart);
var $aNext = CreateANext(PageCount, intPageStart);
var $InfoCount = CreateDataCount(PageCount);
var $DropPageSize = CreateDropPageSize(PageCount);
var $GoPage = CreateGoPage(PageCount, NowPage);
btnPrevShow = function () { ($('.' + extBaseSet.SelectPageClass).text() == '1') ? $('#' + extBaseSet.BtnPrevID).hide() : $('#' + extBaseSet.BtnPrevID).show() };
btnNextShow = function () { ($('.' + extBaseSet.SelectPageClass).text() == PageCount) ? $('#' + extBaseSet.BtnNextID).hide() : $('#' + extBaseSet.BtnNextID).show() };
$divPager.append($InfoCount, $btnPrevPrevTop, $btnPrev, $aPrev, $aNext, $btnNext, $btnNextTop, $GoPage, $DropPageSize);
var $Location = ($($aNext).length) ? $aNext : ($($btnNext).length) ? $btnNext : $btnNextTop;
for (var intTime = 0; intTime < intPage; intTime++) {
var $a = $('<a>', { 'href': '#', 'id': 'a' + intPageValue, 'text': intPageValue, 'class': 'Page', 'style': 'margin-right:5px;' })
.click(function () {
var NowPage = parseInt($(this).text(), 10);
var data = FilterJson();
InfoCount = data.length;
data = Enumerable.From(data).Skip((NowPage - 1) * extdataset.PageSize).Take(extdataset.PageSize).ToArray();
CreateData(data);
$(this).addClass(extBaseSet.SelectPageClass).siblings('a').removeClass(extBaseSet.SelectPageClass);
$('#' + extBaseSet.BtnNextID).attr('pagenum', parseInt($(this).text(), 10) + 1);
$('#' + extBaseSet.BtnPrevID).attr('pagenum', parseInt($(this).text(), 10) - 1);
$('#' + extBaseSet.txtGoPageID).val(parseInt($(this).text(), 10));
//btnPrevShow();
//btnNextShow();
}
)
if ($($Location)) {
$a.insertBefore($Location);
}
else {
$divPager.append($a);
}
intPageValue++;
}
NowPage = ($('#a' + NowPage).length) ? NowPage : parseInt($('#' + extBaseSet.DivPagerID + ' a.Page:first').text(), 10);
$('#a' + NowPage).click();
}
/********************************************
* 函數名稱: CreateGoPage()
* 目的:前往指定頁面
* 作者:Gary
* 時間:2015/03/03
* 參數說明:
*********************************************/
CreateGoPage = function (PageCount, NowPage) {
if (PageCount !== 0) {
NowPage = (NowPage) ? NowPage : 1;
var strTotalPage = PageCount + ' 頁';
var $txtGoPage = $('<input>', { 'type': 'text', 'id': extBaseSet.txtGoPageID, 'value': NowPage });
$txtGoPage.unbind('keypress').bind('keypress', function (event) {
if (event.keyCode == 13) {
var thisValue = parseInt(this.value, 10);
thisValue = (thisValue) ? thisValue : 1;
var intDiffNum = (thisValue % extdataset.PageSize == 0) ? parseInt(extdataset.PageSize) - 1 : (thisValue % extdataset.PageSize) - 1;
var thisStartValue = thisValue - intDiffNum;
if (!$('#a' + thisValue).length) { CreatePager(PageCount, thisStartValue); }
$('#a' + thisValue).click();
$('#' + extBaseSet.txtGoPageID).val(thisValue);
return true;
} else if (event.keyCode >= 48 && event.keyCode <= 57) {
return true;
}
return false;
}).bind('keyup', function () { this.value = minmax(this.value, 1, PageCount) })
var $GoPage = (PageCount <=1 || !exttable.ShowGoPage) ? null :
$txtGoPage.add($('<span>', { 'title': strTotalPage, 'text': '/' + strTotalPage }));
}
return $GoPage;
}
/********************************************
* 函數名稱: CreateDropPageSize()
* 目的:建立下拉選單(決定每頁顯示幾筆資料)
* 作者:Gary
* 時間:2015/03/03
* 參數說明:
*********************************************/
CreateDropPageSize = function () {
var $DropPageSize = $('<select>', { 'id': extBaseSet.SelPageSizeID }).bind('change', function () {
extdataset.PageSize = this.value;
var data = FilterJson();
InfoCount = data.length;
PageCount = CalculatePageCount(InfoCount, extdataset.PageSize);
data = Enumerable.From(data).Skip((NowPage - 1) * extdataset.PageSize).Take(extdataset.PageSize).ToArray();
var intFirstPage = ($('#' + extBaseSet.DivPagerID + ' a.Page:first').text()) ? parseInt($('#' + extBaseSet.DivPagerID + ' a.Page:first').text(), 10) : 1;
CreateData(data);
CreatePager(PageCount, intFirstPage);
});
var AryPageOptions = extdataset.perPageOptions;
if (AryPageOptions) {
var intLens = AryPageOptions.length;
for (var intTime = 0; intTime < intLens; intTime++) {
var $Option = $('<option>', { 'text': AryPageOptions[intTime], 'value': AryPageOptions[intTime] });
$DropPageSize.append($Option)
}
}
$DropPageSize.val(extdataset.PageSize)
var $PageSize = (PageCount <=1 || !exttable.ShowDropPageSize) ? null : $('<font>', { 'text': extBaseSet.SelPageText }).add($DropPageSize);
return $PageSize;
}
/********************************************
* 函數名稱: CreateDataCount()
* 目的:建置總筆數
* 作者:Gary
* 時間:2015/03/03
* 參數說明:
*********************************************/
CreateDataCount = function (PageCount) {
var $InfoCount = (PageCount == 0 || !exttable.ShowDataCount) ? null :
$('<p>', { 'text': '共' + ThousandFormatByString(InfoCount) + '筆', 'class': 'left t-blue02' });
return $InfoCount;
}
/********************************************
* 函數名稱: CreateBtnPrev()
* 目的:建置上一頁按鈕
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateBtnPrev = function (PageCount) {
var $btnPrev = (PageCount <= 1) ? null : $('<input>',
{
'id': extBaseSet.BtnPrevID,
'class': extBaseSet.BtnPrevClass,
'type': 'button',
'value': extBaseSet.BtnPrevText
})
.click(function () {
var PrevValue = $(this).attr('pagenum');
if (!$('#a' + PrevValue).length && PrevValue >= 1) { CreatePager(PageCount, PrevValue - (extdataset.PageSize - 1)); }
$('#a' + PrevValue).click();
})
return $btnPrev;
}
/********************************************
* 函數名稱: CreateBtnPrev()
* 目的:建置下一頁按鈕
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateBtnNext = function (PageCount, intPageStart) {
var $btnNext = (PageCount <= 1) ? null : $('<input>',
{
'id': extBaseSet.BtnNextID,
'class': extBaseSet.BtnNextClass,
'type': 'button',
'value': extBaseSet.BtnNextText,
'pagenum': (intPageStart + 1)
})
.click(function () {
var NextValue = $(this).attr('pagenum');
if (!$('#a' + NextValue).length && NextValue <= PageCount) { CreatePager(PageCount, NextValue); }
$('#a' + NextValue).click();
})
return $btnNext;
}
/********************************************
* 函數名稱: CreateBtnNextTop(PageCount)
* 目的:建置最後一頁
* 作者:Gary
* 時間:2015/03/05
* 參數說明:
*********************************************/
CreateBtnNextTop = function (PageCount) {
var $btnNextTop = (PageCount <= 1 || !exttable.ShowBtnNextTop) ? null : $('<input>',
{
'id': extBaseSet.BtnNextTopID,
'class': extBaseSet.BtnNextTopClass,
'type': 'button',
'value': extBaseSet.BtnNextTopText,
'pagenum': PageCount
})
.click(function () {
var thisValue = $(this).attr('pagenum');
var intDiffNum = (thisValue % extdataset.PageSize == 0) ? parseInt(extdataset.PageSize) - 1 : (thisValue % extdataset.PageSize) - 1;
var thisStartValue = thisValue - intDiffNum;
if (!$('#a' + thisValue).length) { CreatePager(PageCount, thisStartValue); }
$('#a' + thisValue).click();
$('#' + extBaseSet.txtGoPageID).val(thisValue);
})
return $btnNextTop;
}
/********************************************
* 函數名稱: CreateBtnPrevTop(PageCount)
* 目的:建置前往第一頁
* 作者:Gary
* 時間:2015/03/05
* 參數說明:
*********************************************/
CreateBtnPrevTop = function (PageCount) {
var $btnNextTop = (PageCount <= 1 || !exttable.ShowBtnPrevTop) ? null : $('<input>',
{
'id': extBaseSet.BtnPrevTopID,
'class': extBaseSet.BtnPrevTopClass,
'type': 'button',
'value': extBaseSet.BtnPrevTopText,
'pagenum': 1
})
.click(function () {
var thisValue = $(this).attr('pagenum');
if (!$('#a' + thisValue).length) { CreatePager(PageCount, thisValue); }
$('#a' + thisValue).click();
$('#' + extBaseSet.txtGoPageID).val(thisValue);
})
return $btnNextTop;
}
/********************************************
* 函數名稱: CreateAPrev()
* 目的:建置更多Prev資料按鈕
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateAPrev = function (PageCount, intPageStart) {
var $aPrev = (intPageStart == 1) ? null :
$('<a>', {
'id': extBaseSet.aPrevID,
'text': '...',
'style': 'margin-right:5px;',
'pagenum': (parseInt(intPageStart, 10) - parseInt(extdataset.PageSize, 10))
})
.click(function () {
var PrevValue = $(this).attr('pagenum');
CreatePager(PageCount, PrevValue);
$('#a' + PrevValue).click();
});
return $aPrev;
}
/********************************************
* 函數名稱: CreateANext()
* 目的:建置更多Next資料按鈕
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateANext = function (PageCount, intPageStart) {
var $aNext = (PageCount - intPageStart < extdataset.PageLens) ? null :
$('<a>', {
'id': extBaseSet.aNextID,
'text': '...',
'style': 'margin-right:5px;',
'pagenum': (parseInt(intPageStart, 10) + parseInt(extdataset.PageSize, 10))
})
.click(function () {
CreatePager(PageCount, $(this).attr('pagenum'));
$('#a' + (intPageStart + 10)).click();
});
return $aNext;
}
/********************************************
* 函數名稱:FilterJson(SortType,Typ)
* 目的:過濾Json資料
* 作者:Gary
* 時間:2015/02/25
* 參數說明:Type:排序方式
SortType:排序欄位
*********************************************/
FilterJson = function (SortType, Type) {
var ReturnJson;
var objSelect = $('.' + extBaseSet.HeaderClass + ' a[' + extBaseSet.Selected + ']');
SortType = (SortType) ? SortType : ($(objSelect).attr(extBaseSet.Sorttype)) ? $(objSelect).attr(extBaseSet.Sorttype) : $('.' + extBaseSet.HeaderClass + ' a[' + extBaseSet.Sorttype + ']:first').attr(extBaseSet.Sorttype);
Type = (Type) ? Type : ($(objSelect).attr(extBaseSet.Sorting)) ? $(objSelect).attr(extBaseSet.Sorting) : 'asc';
ReturnJson = Enumerable.From(extdataset.source)
.Where(function (x) {
var HasValue = (strSearchValue) ? false : true;
if (!HasValue) {
var intLens = AryColumn.length;
while (intLens-- > 0) {
var thisValue = x[AryColumn[intLens]] || '';
thisValue = thisValue.toLowerCase();
strSearchValue = strSearchValue.toLowerCase();
if (typeof thisValue !== 'string') {
thisValue = thisValue.toString();
}
if (thisValue.indexOf(strSearchValue) >= 0) {
HasValue = true;
break;
}
}
}
return HasValue;
}).ToArray()
switch (Type.toLowerCase()) {
case 'asc':
ReturnJson = Enumerable.From(ReturnJson).OrderBy(function (item) { return item[SortType]; }).ToArray();
break;
default:
ReturnJson = Enumerable.From(ReturnJson).OrderByDescending(function (item) { return item[SortType]; }).ToArray();
break;
}
InfoCount = ReturnJson.length;
return ReturnJson;
}
/********************************************
* 函數名稱: DataReSort(obj)
* 目的:資料排序功能
* 作者:Gary
* 時間:2015/02/25
* 參數說明:obj:排序的按鈕
*********************************************/
DataReSort = function (obj) {
var Type = $(obj).attr(extBaseSet.Sorting);
var strSort = $(obj).attr(extBaseSet.Sorttype);
$(obj).closest('.' + extBaseSet.HeaderClass).find('a[' + extBaseSet.Sorting + ']').attr(extBaseSet.Sorting, 'asc').removeAttr(extBaseSet.Selected); ;
$(obj).attr(extBaseSet.Selected, 'Y');
var NowPage = ($('.' + extBaseSet.SelectPageClass).text()) ? parseInt($('.' + extBaseSet.SelectPageClass).text(), 10) : 1;
var data;
switch (Type.toLowerCase()) { //如果原先是desc排序,接下來就是要asc排序。
case 'desc':
$(obj).attr(extBaseSet.Sorting, 'asc').attr(extBaseSet.Selected, 'Y');
data = FilterJson(strSort, 'asc');
break;
default:
$(obj).attr(extBaseSet.Sorting, 'desc').attr(extBaseSet.Selected, 'Y');
data = FilterJson(strSort, 'desc');
break;
}
InfoCount = data.length;
data = Enumerable.From(data).Skip((NowPage - 1) * extdataset.PageSize).Take(extdataset.PageSize).ToArray();
CreateData(data);
}
/********************************************
* 函數名稱: CalculatePageCount(totalCount, pageSize)
* 目的:依照筆數判斷頁碼數量
* 作者:Gary
* 時間:2015/02/25
* 參數說明:totalCount:總共筆數
pageSize:一頁幾筆
*********************************************/
CalculatePageCount = function (totalCount, pageSize) {
var pageCount = 0;
if (totalCount == 0) {
pageCount = 0;
}
else {
if ((totalCount % pageSize) == 0) {
pageCount = totalCount / pageSize;
if (pageCount < 1) pageCount = 1;
}
else {
pageCount = parseInt(Math.ceil(totalCount / pageSize), 10);
}
}
return pageCount;
}
/********************************************
* 函數名稱: CreateDefaluPager()
* 目的:建置分頁
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateDefaluPager = function () {
if (!$('#' + extBaseSet.DivPagerID).length) {
obj.append($('<tr>', { 'id': extBaseSet.PagerID }).append($('<td>', { 'colspan': $(objHeader).children('td,th').length, 'align': 'center' }).append($('<div>', { 'id': extBaseSet.DivPagerID, 'style': 'position: relative;' }))));
}
}
/********************************************
* 函數名稱: CreateSearchBar(obj)
* 目的:建置搜尋文字框
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
CreateSearchBar = function (obj) {
var objSearch = $('#' + extBaseSet.txtSearchID);
if (!objSearch.length) {
objSearch = $('<input>', { 'type': 'text', 'id': extBaseSet.txtSearchID, 'style': 'border-radius: 3px;height: 30px;padding: 0 10px 0 10px;border: solid 1px #666 !important;' })
objSearch.insertBefore(obj);
var objSearchText = $('<label>', { 'text': '全文搜尋:', 'style': 'font-family: Microsoft JhengHei;' })
objSearchText.insertBefore(objSearch);
}
var objSearchBtn = $('#' + extBaseSet.BtnSearchID);
if (!objSearchBtn.length) {
objSearchBtn = $('<i>', { 'class': extBaseSet.BtnSearchClass, 'id': extBaseSet.BtnSearchID, 'html': '&emsp;', 'style': 'margin-left:-25px;cursor: pointer' });
objSearchBtn.insertAfter(objSearch);
}
//objSearch.unbind('keyup').bind('keyup', function () { SearchFunction() });
objSearchBtn.unbind('click').bind('click', function () { SearchFunction() });
objSearch.unbind('keypress').bind('keypress', function (event) {
if (event.keyCode == 13) {
objSearchBtn.click();
}
});
}
/********************************************
* 函數名稱: SetUpDefaultSort()
* 目的:設定排序
* 作者:Gary
* 時間:2015/03/02
* 參數說明:
*********************************************/
SetUpDefaultSort = function () {
for (Key in TempSortJson) {
TempSortType = Key;
TempSort = TempSortJson[Key];
}
$(extBaseSet.HeaderType + '[' + extBaseSet.Sorttype + ']').each(function () {
var thissorttype = $(this).attr(extBaseSet.Sorttype);
if ($(this).children('a').length === 0 && exttable.noSort.indexOf(thissorttype)===-1) {
$(this).html($('<a>', { 'html': $(this).html(), 'style': 'cursor: pointer;' })
.attr(extBaseSet.Sorttype, thissorttype).attr(extBaseSet.Sorting, TempSort)
//.unbind('click').click(function () { DataReSort(this) })
.attr('onclick', 'DataReSort(this)')
)
}
if ($(this).attr(extBaseSet.Sorttype) == TempSortType) {
$(this).children().attr(extBaseSet.Sorting, TempSort).attr(extBaseSet.Selected, 'Y');
} else {
$(this).children().removeAttr(extBaseSet.Selected);
}
})
}
/********************************************
* 函數名稱: SearchFunction()
* 目的:搜尋功能
* 作者:Gary
* 時間:2015/03/03
* 參數說明:
*********************************************/
SearchFunction = function () {
strSearchValue = $('#' + extBaseSet.txtSearchID).val();
//$(obj).OTKLoading({ CheckObj: true, CheckObjCondition: obj });
setTimeout(function () {
var data = FilterJson();
InfoCount = data.length;
var intFristNum = ($('#' + extBaseSet.DivPagerID + ' a.Page:first').length) ? parseInt($('#' + extBaseSet.DivPagerID + ' a.Page:first').text(), 10) : 1;
PageCount = CalculatePageCount(InfoCount, extdataset.PageSize);
data = Enumerable.From(data).Take(extdataset.PageSize).ToArray();
CreateData(data);
CreatePager(PageCount, intFristNum);
}, 1)
}
/********************************************
* 函數名稱:minmax(value, min, max)
* 目的:設定最大最小值。
* 作者:Gary
* 時間:2015/03/03
* 用法:
*********************************************/
minmax = function (value, min, max) {
if (parseInt(value) < min || isNaN(value))
return min;
else if (parseInt(value) > max)
return max;
else return value;
}
/********************************************
* 函數名稱:ThousandFormatByString(value)
* 目的:千位加分隔符號
* 作者:Gary
* 時間:2015/03/04
* 用法:
*********************************************/
ThousandFormatByString = function (Value) {
if (Value) {
Value = Value.toString();
Value = Value.replace(/,/g, '');
Value = Value.replace(/\d+?(?=(?:\d{3})+$)/g, function (s) {
return s + ',';
});
}
return Value;
}
/*取代資料*/
extdataset = (extdataset) ? $.extend(extdataset, options.dataset) : $.extend(defaults.dataset, options.dataset);
exttable = (exttable) ? $.extend(exttable, options.table) : $.extend(defaults.table, options.table);
extwriters = (extwriters) ? $.extend(extwriters, options.writers) : $.extend(defaults.writers, options.writers);
extBaseSet = (extBaseSet) ? $.extend(extBaseSet, options.BaseSet) : $.extend(defaults.BaseSet, options.BaseSet);
FilterJson = extwriters._FilterJson || FilterJson;
obj = this;
if (!callback) {
/*定義物件*/
objHeader = $(obj).find('.' + extBaseSet.HeaderClass);
/*建置Header與Pager*/
CreateHeader();
CreateDefaluPager();
/*取得Pager與divPager*/
$divPager = $('#' + extBaseSet.DivPagerID);
$trPager = $('#' + extBaseSet.PagerID);
/*取得頁碼總數*/
/*取得預設排序即設定預設排序*/
TempSortJson = extdataset.sorts;
SetUpDefaultSort();
/*建置資料*/
var NowPage = ($('.' + extBaseSet.SelectPageClass).text()) ? parseInt($('.' + extBaseSet.SelectPageClass).text(), 10) : 1;
var data = FilterJson();
InfoCount = data.length;
PageCount = CalculatePageCount(InfoCount, extdataset.PageSize);
data = Enumerable.From(data).Skip((NowPage - 1) * extdataset.PageSize).Take(extdataset.PageSize).ToArray();
var intFirstPage = ($('#' + extBaseSet.DivPagerID + ' a.Page:first').text()) ? parseInt($('#' + extBaseSet.DivPagerID + ' a.Page:first').text(), 10) : 1;
CreateData(data);
CreatePager(PageCount, intFirstPage);
if (exttable.ShowSearchBar) {
CreateSearchBar(obj);
}
}
else {
var data = FilterJson();
InfoCount = data.length;
PageCount = CalculatePageCount(InfoCount, extdataset.PageSize);
var intFristNum = ($('#' + extBaseSet.DivPagerID + ' a.Page:first').length) ? parseInt($('#' + extBaseSet.DivPagerID + ' a.Page:first').text(), 10) : 1;
var NowPage = ($('.' + extBaseSet.SelectPageClass).text()) ? parseInt($('.' + extBaseSet.SelectPageClass).text(), 10) : 1;
//data = Enumerable.From(data).Skip((NowPage - 1) * extdataset.PageSize).Take(extdataset.PageSize).ToArray();
//CreateData(data);
CreatePager(PageCount, intFristNum);
}
}
})(jQuery);