Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

resolved bugs, multiple values search, new release 1.0.5 #8

Merged
merged 1 commit into from
Oct 26, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,34 @@ Generating `Pagination` for Given data
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2})

// pagination with sorting by key ascending
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sortBy: 'name'})
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sort_by: 'name'})

// pagination with sorting by key descending
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sortBy: '-name'})
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sort_by: '-name'})

// pagination with search by value and selected columns
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sortBy: 'name', search: 'a', search_cols: ['name', 'grade']})
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sort_by: 'name', search: 'a', search_cols: ['name', 'grade']})

// Pagination with Full Text Searching by value
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sortBy: 'name', full_text_search: 'a'})
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sort_by: 'name', search: 'a'})

// Search the multiple values
var result = Pagin.CreatePagin(data, {page_size:10, page_no: 2, sort_by: 'name', search: ['a', 'b']})

// Result values
console.log(result);
{
page_size: 10,
page_no: 1,
previous_page: null,
current_page: 1,
next_page: null,
total_pages: null,
data: [],
total: 4,
from: 1,
to: 4
}
```

## Author
Expand Down
80 changes: 66 additions & 14 deletions lib/pagin.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,33 @@ var paginData = {
to: 0
}
// exports to access global
module.exports = function(datalist, {page_size=15, page_no=1, sortBy=null, search=null, search_cols=[], full_text_search=null}) {
module.exports = function(datalist, {page_size=15, page_no=1, sort_by=null, search=null, search_fields=[]}) {
paginData.total = datalist.length;
paginData.page_size = page_size
if (datalist.length<1) {
console.log('Your data is empty......!')
return paginData;
} else {

// if full_text_search
if (full_text_search !== null) {
datalist = searchFullText(datalist, full_text_search);
}

// if search by cols
if (search_cols.length> 0 && search !== null) {
datalist = searchCols(datalist, search, search_cols);
if (search_fields.length> 0 && search !== null) {
if (search instanceof Array) {
datalist = searchColsbyMultiple(datalist, search, search_fields);
} else {
datalist = searchCols(datalist, search, search_fields);
}
} else if (search !== null) {
// if full_text_search
if (search instanceof Array) {
datalist = fullTextSearchMultiple(datalist, search);
} else {
datalist = searchFullText(datalist, search);
}
}

// if sort by
if (sortBy !== null) {
datalist = sortBy[0]==='-'?sortDataByDes(datalist, sortBy):sortDataByAsc(datalist, sortBy);
if (sort_by !== null) {
datalist = sort_by[0]==='-'?sortDataByDes(datalist, sort_by):sortDataByAsc(datalist, sort_by);
}

// preset pagin
Expand All @@ -57,7 +63,7 @@ function createPagin(datalist) {
if (paginData.page_size * paginData.page_no > paginData.total) {
paginData.page_no = 1
paginData.current_page = 1
console.log("%cInvalid Page no", "color: red");
// console.log("%cInvalid Page no", "color: red");
}

// check whether correct page_size
Expand Down Expand Up @@ -136,12 +142,12 @@ function sortDataByAsc(data, key) {
}

// search value by selected cols
function searchCols(datalist, key, search_cols) {
function searchCols(datalist, key, search_fields) {
const results = [];
const len = datalist.length;
for (let i = 0; i < len; i += 1) {
for (var item in search_cols) {
const fn = datalist[i][search_cols[item]].toLowerCase().indexOf(key);
for (var item in search_fields) {
const fn = datalist[i][search_fields[item]].toLowerCase().indexOf(key);
if (fn >= 0) {
results.push(datalist[i]);
break;
Expand All @@ -151,6 +157,29 @@ function searchCols(datalist, key, search_cols) {
return results;
}

// search values by selected cols
function searchColsbyMultiple(datalist, key, search_fields) {
const results = [];
const len = datalist.length;
for (let i = 0; i < len; i += 1) {
for (var item in search_fields) {
var flag = 0;
for (var k in key) {
const fn = datalist[i][search_fields[item]].toLowerCase().indexOf(key[k]);
if (fn >= 0) {
results.push(datalist[i]);
flag = 1;
break;
}
}
if (flag === 1) {
break;
}
}
}
return results;
}

// Full text search by value
function searchFullText(datalist, key) {
const results = [];
Expand All @@ -165,4 +194,27 @@ function searchFullText(datalist, key) {
}
}
return results;
}

// full text search by multiple keys
function fullTextSearchMultiple(datalist, key) {
const results = [];
const len = datalist.length;
for (let i = 0; i < len-1; i += 1) {
for (var item in datalist[i]) {
var flag = 0;
for (var k in key) {
const fn = String(datalist[i][item]).toLowerCase().indexOf(key[k]);
if (fn >= 0) {
results.push(datalist[i]);
flag = 1;
break;
}
}
if (flag === 1) {
break;
}
}
}
return results;
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "create-pagin",
"version": "1.0.4",
"version": "1.0.5",
"description": "custom pagination for frontend side",
"main": "index.js",
"scripts": {
Expand Down