handsontable-helpers
Advanced tools
Comparing version 1.0.4 to 1.0.5
/** | ||
* TODO | ||
* | ||
* work changes simple, return changes obj | ||
* do not work with number as integer, work as text | ||
* collect columns for objArr | ||
* Handsontable helper functions | ||
* artbels @ 2016 | ||
* | ||
* | ||
*/ | ||
@@ -21,3 +17,3 @@ | ||
"string": "text", | ||
"number": "numeric", | ||
"number": "text", //handsontable numeric is only integers | ||
"boolean": "checkbox", | ||
@@ -29,13 +25,31 @@ "object": "text", | ||
HH.draw = function(objArr, parent) { | ||
HH.draw = function(objArr, params) { | ||
parent = parent || document.querySelector("#hot") || document.body; | ||
if(typeof params == "string") params = { | ||
parent: document.querySelector(params) | ||
}; | ||
hot = new Handsontable(parent, { | ||
columns: HH.getColumns(objArr), | ||
if(typeof hot != "undefined") hot.destroy(); | ||
params = params || {}; | ||
params.parent = params.parent || document.querySelector("#ht") || document.body; | ||
params.contextMenu = (typeof params.contextMenu == "boolean") ? params.contextMenu : true; | ||
var columns = HH.getColumns(objArr, params.cols); | ||
if(params.readOnly) columns = columns.map(function (a) { | ||
a.readOnly = true; | ||
return a; | ||
}); | ||
hot = new Handsontable(params.parent, { | ||
data: HH.stringifyArrObj(objArr), | ||
colHeaders: true, | ||
columns: columns, | ||
colHeaders: columns.map(function (a) { | ||
return a.data; | ||
}), | ||
manualColumnResize: true, | ||
columnSorting: true, | ||
contextMenu: true | ||
contextMenu: params.contextMenu | ||
}); | ||
@@ -45,17 +59,2 @@ }; | ||
HH.updateIdArr = function(data, colHeaders) { | ||
var idArr = []; | ||
for (var i = 0; i < data.length; i++) { | ||
var item = data[i]; | ||
for (var j = 0; j < colHeaders.length; j++) { | ||
var col = colHeaders[j]; | ||
if (col == "_id") { | ||
idArr.push(item[j]); | ||
} | ||
} | ||
} | ||
return idArr; | ||
}; | ||
HH.setColType = function(prop, jsType) { | ||
@@ -75,5 +74,6 @@ | ||
HH.getColumns = function(objArr) { | ||
HH.getColumns = function(objArr, cols) { | ||
var props = {}; | ||
var columns = []; | ||
var col; | ||
@@ -92,5 +92,15 @@ for (var i = 0; i < objArr.length; i++) { | ||
for (var prop in props) { | ||
var col = HH.setColType(prop, props[prop]); | ||
columns.push(col); | ||
if(cols) { | ||
for (var j = 0; j < cols.length; j++) { | ||
var colName = cols[j]; | ||
if(props[colName]) { | ||
col = HH.setColType(colName, props[colName]); | ||
columns.push(col); | ||
} | ||
} | ||
} else { | ||
for (var prop in props) { | ||
col = HH.setColType(prop, props[prop]); | ||
columns.push(col); | ||
} | ||
} | ||
@@ -102,31 +112,15 @@ | ||
HH.buildSchema = function(arr) { | ||
var props = {}; | ||
var o = { | ||
columns: [], | ||
colHeaders: [], | ||
idArr: [] | ||
}; | ||
for (var i = 0; i < arr.length; i++) { | ||
var row = arr[i]; | ||
o.idArr.push(row._id); | ||
for (var key in row) { | ||
var val = row[key]; | ||
var jsType = typeof val; | ||
if(jsType == "string") { | ||
if(HH.reJsStrData.test(val)) jsType = "date"; | ||
HH.updateIdArr = function(data, colHeaders) { | ||
var idArr = []; | ||
for (var i = 0; i < data.length; i++) { | ||
var item = data[i]; | ||
for (var j = 0; j < colHeaders.length; j++) { | ||
var col = colHeaders[j]; | ||
if (col == "_id") { | ||
idArr.push(item[j]); | ||
break; | ||
} | ||
if (!props[key]) props[key] = jsType; | ||
} | ||
} | ||
for (var prop in props) { | ||
var col = HH.setColType(prop, props[prop]); | ||
o.columns.push(col); | ||
o.colHeaders.push(prop); | ||
} | ||
return o; | ||
return idArr; | ||
}; | ||
@@ -181,6 +175,3 @@ | ||
var o = { | ||
new: {}, | ||
upd: {} | ||
}; | ||
var changesArr = []; | ||
@@ -190,33 +181,16 @@ for (var i = 0; i < changes.length; i++) { | ||
var oldValue = change[2]; | ||
var newValue = change[3]; | ||
var changed = (oldValue != newValue); | ||
var o = { | ||
oldValue: change[2], | ||
newValue: change[3] | ||
}; | ||
var changed = (o.oldValue != o.newValue); | ||
if (!changed) continue; | ||
var rowNum = Number(change[0]); | ||
var field = change[1]; | ||
var fieldType; | ||
for (var t = 0; t < columns.length; t++) { | ||
var col = columns[t]; | ||
if (col.data == field) fieldType = col.jsType; | ||
} | ||
var setId = (field === "_id"); | ||
if (setId) continue; | ||
var docId = arr[rowNum]._id; | ||
if (docId) { | ||
o.upd[rowNum] = o.upd[rowNum] || {}; | ||
o.upd[rowNum][field] = HH.setDataType(newValue, fieldType); | ||
} else { | ||
o.new[rowNum] = o.new[rowNum] || {}; | ||
o.new[rowNum][field] = HH.setDataType(newValue, fieldType); | ||
} | ||
o.rowNum = Number(change[0]); | ||
o.field = change[1]; | ||
changesArr.push(o); | ||
} | ||
o.newArr = Object.keys(o.new); | ||
o.updArr = Object.keys(o.upd); | ||
return o; | ||
return changesArr; | ||
}; | ||
@@ -286,15 +260,2 @@ | ||
HH.buildParseSchema = function(columns, colHeaders) { | ||
var schemeObj = {}; | ||
for (var i = 0; i < columns.length; i++) { | ||
var item = columns[i]; | ||
schemeObj[colHeaders[i]] = { | ||
type: item.jsType | ||
}; | ||
} | ||
return schemeObj; | ||
}; | ||
HH.stringifyArrObj = function(arr) { | ||
@@ -318,2 +279,15 @@ | ||
HH.buildParseSchema = function(columns, colHeaders) { | ||
var schemeObj = {}; | ||
for (var i = 0; i < columns.length; i++) { | ||
var item = columns[i]; | ||
schemeObj[colHeaders[i]] = { | ||
type: item.jsType | ||
}; | ||
} | ||
return schemeObj; | ||
}; | ||
})(); |
{ | ||
"name": "handsontable-helpers", | ||
"version": "1.0.4", | ||
"_args": [ | ||
[ | ||
"handsontable-helpers@1.0.4", | ||
"C:\\Users\\Art\\Dropbox\\Development\\geoclog" | ||
] | ||
], | ||
"_from": "handsontable-helpers@1.0.4", | ||
"_id": "handsontable-helpers@1.0.4", | ||
"_inCache": true, | ||
"_installable": true, | ||
"_location": "/handsontable-helpers", | ||
"_nodeVersion": "4.4.2", | ||
"_npmOperationalInternal": { | ||
"host": "packages-12-west.internal.npmjs.com", | ||
"tmp": "tmp/handsontable-helpers-1.0.4.tgz_1470503509013_0.672645550686866" | ||
}, | ||
"_npmUser": { | ||
"email": "Artbels@gmail.com", | ||
"name": "artbels" | ||
}, | ||
"_npmVersion": "3.8.6", | ||
"_phantomChildren": {}, | ||
"_requested": { | ||
"name": "handsontable-helpers", | ||
"raw": "handsontable-helpers@1.0.4", | ||
"rawSpec": "1.0.4", | ||
"scope": null, | ||
"spec": "1.0.4", | ||
"type": "version" | ||
}, | ||
"_requiredBy": [ | ||
"/" | ||
], | ||
"_shasum": "74573df5f91af312f3eba18163a8b082af709273", | ||
"_shrinkwrap": null, | ||
"_spec": "handsontable-helpers@1.0.4", | ||
"_where": "C:\\Users\\Art\\Dropbox\\Development\\geoclog", | ||
"author": { | ||
"name": "artbels" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/artbels/handsontable-helpers/issues" | ||
}, | ||
"dependencies": {}, | ||
"description": "", | ||
"devDependencies": {}, | ||
"directories": {}, | ||
"dist": { | ||
"shasum": "74573df5f91af312f3eba18163a8b082af709273", | ||
"tarball": "https://registry.npmjs.org/handsontable-helpers/-/handsontable-helpers-1.0.4.tgz" | ||
}, | ||
"gitHead": "64240158b85a9b1bea13a8b4aa86a5465a86b6ce", | ||
"homepage": "https://github.com/artbels/handsontable-helpers#readme", | ||
"license": "ISC", | ||
"main": "handsontable.helpers.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
}, | ||
"maintainers": [ | ||
{ | ||
"email": "Artbels@gmail.com", | ||
"name": "artbels" | ||
} | ||
], | ||
"name": "handsontable-helpers", | ||
"optionalDependencies": {}, | ||
"readme": "ERROR: No README data found!", | ||
"repository": { | ||
@@ -13,8 +70,6 @@ "type": "git", | ||
}, | ||
"author": "artbels", | ||
"license": "ISC", | ||
"bugs": { | ||
"url": "https://github.com/artbels/handsontable-helpers/issues" | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
}, | ||
"homepage": "https://github.com/artbels/handsontable-helpers#readme" | ||
"version": "1.0.5" | ||
} |
11904
222