nscomponentsreact
Version:
React Wrapper Components for NSComponents
359 lines (340 loc) • 12.1 kB
JavaScript
var nsModuleExport = function(root,name,prototype)
{
if(typeof exports === 'object' && typeof module === 'object')
{
module.exports[name] = prototype;
}
else if (typeof define === "function" && define.amd)
{
define(name,[], function () {return prototype;});
}
else if(typeof exports === 'object')
{
exports[name] = prototype;
}
else
{
root[name] = prototype;
}
};var __nsGlobal = (function () {
if (typeof globalThis !== "undefined") return globalThis;
if (typeof self !== "undefined") return self;
if (typeof window !== "undefined") return window;
if (typeof global !== "undefined") return global;
return Function("return this")();
})();var nsIsWeb = function(root)
{
if(typeof exports === 'object' && typeof module === 'object')
{
return false;
}
else if (typeof define === "function" && define.amd)
{
return false;
}
else if(typeof exports === 'object')
{
return false;
}
else
{
return true;
}
};if(!nsIsWeb())
{
var nsutilRef = require('./nsUtil.min.js');
var NSUtil = nsutilRef.NSUtil;
var nscontainerbaseRef = require('./nsContainerBase.min.js');
var nsExtendPrototype = nscontainerbaseRef.nsExtendPrototype;
var NSContainerBase = nscontainerbaseRef.NSContainerBase;
var svgRef = require('./nsSVG.min.js');
var NSSvg = svgRef.NSSvg;
var NSSvgShapes = svgRef.NSSvgShapes;
var plugginsRef = require('./nsPluggins.min.js');
var nsTextEditor = plugginsRef.nsTextEditor;
var nsTextAreaEditor = plugginsRef.nsTextAreaEditor;
var NSCellSelection = plugginsRef.NSCellSelection;
var NSTableCellNavigator = plugginsRef.NSTableCellNavigator;
var dateutilRef = require('./nsDateUtil.min.js');
var NSDateUtil = dateutilRef.NSDateUtil;
}
"use strict";
var NSPagination = (function()
{
function NSPagination(setting)
{
this.PAGE_CLICK = "pageClick";
this.PAGE_CHANGE = "pageChange";
this.util = new NSUtil();
this.__setting = setting;
this.__config = null;
this.__id = null;
this.__container = null;
this.__itemFirst = null;
this.__itemLast = null;
this.__itemPrev = null;
this.__itemNext = null;
this.__arrItemPage = [];
this.__pageCount = 0;
this.__selectedPage = -1;
this.__initialize();
}
NSPagination.prototype.__initialize = function ()
{
if(this.__setting)
{
this.__config = {
parent: this.__setting["parent"] || null,
totalRecords: parseInt(this.__setting["totalRecords"]) || 0,
pageSize: parseInt(this.__setting["pageSize"]) || 0,
totalPageCount: parseInt(this.__setting["totalPageCount"]) || 0,
visiblePages: parseInt(this.__setting["visiblePages"]) || 5,
containerStyle: this.__setting["containerStyle"] || "nsPaginationContainer",
activeStyle: this.__setting["activeStyle"] || "nsPageActive",
disabledStyle: this.__setting["disabledStyle"] || "nsPageDisabled",
textFirst : this.__setting["textFirst"] || "«",
textLast : this.__setting["textLast"] || "»",
textNext : this.__setting["textNext"] || "›",
textPrev : this.__setting["textPrev"] || "‹",
textTitlePagePrefix: this.__setting["textTitlePagePrefix"] || "Page",
textTitleFirst : this.__setting["textTitleFirst"] || 'First Page',
textTitleLast : this.__setting["textTitleLast"] || 'Last Page',
textTitleNext : this.__setting["textTitleNext"] || 'Next Page',
textTitlePrev : this.__setting["textTitlePrev"] || 'Previous Page',
showPrevNext : (!this.util.isUndefined(this.__setting["showPrevNext"]) && this.__setting["showPrevNext"] != null) ? Boolean.parse(this.__setting["showPrevNext"]) : true,
showFirstLast : (!this.util.isUndefined(this.__setting["showFirstLast"]) && this.__setting["showFirstLast"] != null) ? Boolean.parse(this.__setting["showFirstLast"]) : false
};
this.__create();
}
};
NSPagination.prototype.changePageSize = function(pageSize)
{
if(pageSize > 0 && this.__config)
{
this.__config.pageSize = pageSize;
this.__create();
}
};
NSPagination.prototype.setSelectedPage = function(pageNumber)
{
this.__update(pageNumber);
};
NSPagination.prototype.getSelectedPage = function(pageNumber)
{
return this.__selectedPage;
};
NSPagination.prototype.__create = function()
{
if(this.__config.parent)
{
if(this.__container)
{
this.__container.parentNode.removeChild(this.__container);
this.__arrItemPage = [];
this.__selectedPage = -1;
}
if(this.__config.totalPageCount > 0)
{
this.__pageCount = this.__config.totalPageCount;
}
else if(this.__config.pageSize > 0)
{
this.__pageCount = Math.ceil(this.__config.totalRecords / this.__config.pageSize);
}
this.__container = this.util.createElement("ul",this.__getID() + "container",this.__config.containerStyle);
this.__config.parent.appendChild(this.__container);
if(this.__config.showFirstLast)
{
this.__itemFirst = this.__createItem("-4",this.__config["textFirst"],this.__config.textTitleFirst,this.__controlItemClickHandler);
}
if(this.__config.showPrevNext)
{
this.__itemPrev = this.__createItem("-3",this.__config["textPrev"],this.__config.textTitlePrev,this.__controlItemClickHandler);
}
var createdNumber = Math.min(this.__pageCount,this.__config.visiblePages);
for(var count = 1;count <= createdNumber;count++)
{
var pageItem = this.__createItem(count,count,this.__config.textTitlePagePrefix + " " + count,this.__pageItemClickHandler);
this.__arrItemPage.push(pageItem);
}
if(this.__config.showPrevNext)
{
this.__itemNext = this.__createItem("-2",this.__config["textNext"],this.__config.textTitleNext,this.__controlItemClickHandler);
}
if(this.__config.showFirstLast)
{
this.__itemLast = this.__createItem("-1",this.__config["textLast"],this.__config.textTitleLast,this.__controlItemClickHandler);
}
//this.__selectPage(1);
this.__updateControlState(1);
}
};
NSPagination.prototype.__controlItemClickHandler = function(event)
{
var target = this.util.getTarget(event);
target = this.util.findParent(target,"li");
var index = parseInt(target.getAttribute("pageNum"));
var pageSelected = -1;
switch(index)
{
case -4:
pageSelected = 1;
break;
case -3:
pageSelected = this.__selectedPage - 1;
break;
case -2:
pageSelected = this.__selectedPage + 1;
break;
case -1:
pageSelected = this.__pageCount;
break;
}
this.__update(pageSelected);
};
NSPagination.prototype.__pageItemClickHandler = function(event)
{
var target = this.util.getTarget(event);
target = this.util.findParent(target,"li");
var index = parseInt(target.getAttribute("pageNum"));
this.__update(index);
};
NSPagination.prototype.__createItem = function(pageNumber,htmlText,titleText,clickHandler)
{
var pageItem = this.util.createElement("li",this.__getID() + "Page" + pageNumber,null);
pageItem.setAttribute("pageNum",pageNumber);
pageItem.setAttribute("title",titleText);
this.util.addEvent(pageItem,"click",clickHandler.bind(this));
var pageText = this.util.createElement("a",null,null);
pageText.setAttribute("href","javascript:void(0);");
pageText.innerHTML = htmlText;
pageItem.appendChild(pageText);
this.__container.appendChild(pageItem);
return pageItem;
};
NSPagination.prototype.__update = function(pageNumber)
{
if(pageNumber <= 0)
{
pageNumber = 1;
}
else if(pageNumber > this.__pageCount)
{
pageNumber = this.__pageCount;
}
var range = this.__calculateRange(this.__pageCount,Math.min(this.__pageCount,this.__config.visiblePages),pageNumber);
this.__updateItem(range[0],range[1]);
this.__selectPage(pageNumber);
this.__updateControlState(pageNumber);
};
NSPagination.prototype.__updateItem = function(fromPage,toPage)
{
var firstNumber = parseInt(this.__arrItemPage[0].getAttribute("pageNum"));
var lastNumber = parseInt(this.__arrItemPage[this.__arrItemPage.length - 1].getAttribute("pageNum"));
if(!(firstNumber === fromPage && lastNumber === toPage))
{
for(var count = 0;count < this.__arrItemPage.length;count++)
{
var pageItem = this.__arrItemPage[count];
var index = count + fromPage;
pageItem.setAttribute("pageNum",index);
pageItem.setAttribute("title",this.__config.textTitlePagePrefix + " " + index);
var pageText = pageItem.firstChild;
pageText.innerHTML = index;
}
}
};
NSPagination.prototype.__updateControlState = function(pageNumber)
{
if(pageNumber === 1)
{
this.__itemFirst ? this.util.addStyleClass(this.__itemFirst,this.__config.disabledStyle) : "";
this.__itemPrev ? this.util.addStyleClass(this.__itemPrev,this.__config.disabledStyle) : "";
}
else
{
this.__itemFirst ? this.util.removeStyleClass(this.__itemFirst,this.__config.disabledStyle) : "";
this.__itemPrev ? this.util.removeStyleClass(this.__itemPrev,this.__config.disabledStyle) : "";
}
if(pageNumber === this.__pageCount)
{
this.__itemNext ? this.util.addStyleClass(this.__itemNext,this.__config.disabledStyle) : "";
this.__itemLast ? this.util.addStyleClass(this.__itemLast,this.__config.disabledStyle) : "";
}
else
{
this.__itemNext ? this.util.removeStyleClass(this.__itemNext,this.__config.disabledStyle) : "";
this.__itemLast ? this.util.removeStyleClass(this.__itemLast,this.__config.disabledStyle) : "";
};
};
NSPagination.prototype.__calculateRange = function(totalPages,visiblePages,pageToBeSelected)
{
var renderPage = [1,totalPages];
var limit = Math.floor(visiblePages/2);
if(visiblePages > 0)
{
renderPage[0] = Math.max(pageToBeSelected - limit, 1);
renderPage[1] = Math.min(pageToBeSelected + limit, totalPages);
var difference = renderPage[1] - renderPage[0];
if(renderPage[0] === 1 && difference < visiblePages)
{
renderPage[1] = visiblePages;
}
else if(renderPage[1] === totalPages && difference < visiblePages)
{
renderPage[0] = renderPage[1] - visiblePages + 1;
}
}
return renderPage;
};
NSPagination.prototype.__selectPage = function(pageIndex)
{
var selectedIndex = -1;
for(var count = 0;count < this.__arrItemPage.length;count++)
{
var pageItem = this.__arrItemPage[count];
this.util.removeStyleClass(pageItem,this.__config.activeStyle);
var index = parseInt(pageItem.getAttribute("pageNum"));
if(index === pageIndex)
{
selectedIndex = count;
}
}
if(selectedIndex > -1)
{
var oldPage = this.__selectedPage;
this.util.addStyleClass(this.__arrItemPage[selectedIndex],this.__config.activeStyle);
this.__selectedPage = pageIndex;
var fromRecord = (pageIndex - 1) * this.__config.pageSize;
var toRecord = fromRecord + this.__config.pageSize - 1;
toRecord = (toRecord < this.__config.totalRecords) ? toRecord : ((toRecord === this.__config.totalRecords) ? this.__config.totalRecords - 1 : this.__config.totalRecords);
var item = {oldIndex:oldPage,newIndex:this.__selectedPage,fromRecord:fromRecord,toRecord:toRecord};
this.util.dispatchEvent(this.__config.parent,this.PAGE_CLICK,item,item);
if(oldPage !== this.__selectedPage)
{
this.util.dispatchEvent(this.__config.parent,this.PAGE_CHANGE,item,item);
}
}
};
NSPagination.prototype.__getID = function()
{
if(!this.__id)
{
if(this.__config.parent.hasAttribute("id"))
{
this.__id = this.__config.parent.getAttribute("id");
}
else if(this.__config.parent.hasAttribute("name"))
{
this.__id = this.__config.parent.getAttribute("name");
}
else
{
this.__id = "comp" + this.util.getUniqueId();
}
}
return this.__id;
};
return NSPagination;
})();
nsModuleExport(__nsGlobal,"NSPagination",NSPagination);