Don't normalize primary data values in Item.setField()
Just enforce proper data types
This commit is contained in:
parent
cca5dc0314
commit
bb0a1dab13
2 changed files with 21 additions and 13 deletions
|
@ -615,17 +615,6 @@ Zotero.Item.prototype.setField = function(field, value, loadIn) {
|
||||||
throw new Error(`'${field}' value cannot be undefined`);
|
throw new Error(`'${field}' value cannot be undefined`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Normalize values
|
|
||||||
if (typeof value == 'number') {
|
|
||||||
value = "" + value;
|
|
||||||
}
|
|
||||||
else if (typeof value == 'string') {
|
|
||||||
value = value.trim().normalize();
|
|
||||||
}
|
|
||||||
if (value === "" || value === null || value === false) {
|
|
||||||
value = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Zotero.debug("Setting field '" + field + "' to '" + value + "' (loadIn: " + (loadIn ? 'true' : 'false') + ") for item " + this.id + " ");
|
//Zotero.debug("Setting field '" + field + "' to '" + value + "' (loadIn: " + (loadIn ? 'true' : 'false') + ") for item " + this.id + " ");
|
||||||
|
|
||||||
if (!field) {
|
if (!field) {
|
||||||
|
@ -646,6 +635,9 @@ Zotero.Item.prototype.setField = function(field, value, loadIn) {
|
||||||
|
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case 'itemTypeID':
|
case 'itemTypeID':
|
||||||
|
if (typeof value != 'number' || value != parseInt(value)) {
|
||||||
|
throw new Error(`${field} must be a number`);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'dateAdded':
|
case 'dateAdded':
|
||||||
|
@ -664,10 +656,15 @@ Zotero.Item.prototype.setField = function(field, value, loadIn) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'version':
|
case 'version':
|
||||||
value = parseInt(value);
|
if (typeof value != 'number' || value != parseInt(value)) {
|
||||||
|
throw new Error(`${field} must be a number`);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'synced':
|
case 'synced':
|
||||||
|
if (typeof value != 'boolean') {
|
||||||
|
throw new Error(`${field} must be a boolean`);
|
||||||
|
}
|
||||||
value = !!value;
|
value = !!value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -714,6 +711,17 @@ Zotero.Item.prototype.setField = function(field, value, loadIn) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Normalize values
|
||||||
|
if (typeof value == 'number') {
|
||||||
|
value = "" + value;
|
||||||
|
}
|
||||||
|
else if (typeof value == 'string') {
|
||||||
|
value = value.trim().normalize();
|
||||||
|
}
|
||||||
|
if (value === "" || value === null || value === false) {
|
||||||
|
value = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!loadIn) {
|
if (!loadIn) {
|
||||||
this._requireData('itemData');
|
this._requireData('itemData');
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,7 @@ describe("Zotero.DataObject", function() {
|
||||||
var obj = createUnsavedDataObject(type);
|
var obj = createUnsavedDataObject(type);
|
||||||
var id = yield obj.saveTx();
|
var id = yield obj.saveTx();
|
||||||
|
|
||||||
obj.synced = 1;
|
obj.synced = true;
|
||||||
yield obj.saveTx();
|
yield obj.saveTx();
|
||||||
|
|
||||||
if (type == 'item') {
|
if (type == 'item') {
|
||||||
|
|
Loading…
Reference in a new issue