Skip to content

Commit

Permalink
resolved bugs, multiple values search, new release 1.0.5
Browse files Browse the repository at this point in the history
  • Loading branch information
vkatepalli committed Oct 26, 2018
1 parent 687e3ae commit 79c3b1a
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 19 deletions.
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

0 comments on commit 79c3b1a

Please sign in to comment.