Add notification for editing search / replace

This commit is contained in:
Romain Neutron
2012-02-16 18:59:08 +01:00
parent 65e98b0478
commit 400db81f28
3 changed files with 90 additions and 85 deletions

View File

@@ -1,6 +1,6 @@
(function( window ) {
function checkVocabId(VocabularyId)
{
if(typeof VocabularyId === 'undefined')
@@ -8,23 +8,23 @@
if(VocabularyId === '')
VocabularyId = null;
return VocabularyId;
}
var recordFieldValue = function(meta_id, value, VocabularyId) {
VocabularyId = checkVocabId(VocabularyId);
this.datas = {
meta_id:meta_id,
value:value,
meta_id:meta_id,
value:value,
VocabularyId:VocabularyId
};
var $this = this;
};
recordFieldValue.prototype = {
getValue : function() {
return this.datas.value;
@@ -36,7 +36,7 @@
return this.datas.VocabularyId;
},
setValue : function(value, VocabularyId) {
this.datas.value = value;
this.datas.VocabularyId = checkVocabId(VocabularyId);
return this;
@@ -44,13 +44,13 @@
remove : function() {
this.datas.value = '';
this.datas.VocabularyId = null;
return this;
}
};
var databoxField = function(name, meta_struct_id, options) {
var defaults = {
multi : false,
required : false,
@@ -63,23 +63,23 @@
vocabularyRestricted : false
},
options = (typeof options == 'object') ? options : {};
if(isNaN(meta_struct_id))
{
throw 'meta_struct_id should be a number';
}
this.name = name;
this.meta_struct_id = meta_struct_id;
this.options = jQuery.extend(defaults, options);
if(this.options.multi === true && this.options.separator === null)
{
this.options.separator = ';';
}
};
databoxField.prototype = {
getMetaStructId : function() {
return this.meta_struct_id;
@@ -109,9 +109,9 @@
return this.options.separator;
}
};
var recordField = function(databoxField, arrayValues) {
this.databoxField = databoxField;
this.options = {
dirty : false
@@ -122,9 +122,9 @@
{
if(arrayValues.length > 1 && !databoxField.isMulti())
throw 'You can not add multiple values to a non multi field';
var first = true;
for(v in arrayValues)
{
if(typeof arrayValues[v] !== 'object')
@@ -133,20 +133,20 @@
{
console.error('Trying to add a non-recordFieldValue to the field...');
}
continue;
}
if(isNaN(arrayValues[v].getMetaId()))
{
if(window.console)
{
console.error('Trying to add a recordFieldValue without metaId...');
}
continue;
}
if(!first && this.options.multi === false)
{
if(window.console)
@@ -154,17 +154,17 @@
console.error('Trying to add multi values in a non-multi field');
}
}
if(window.console)
{
console.log('adding a value : ', arrayValues[v]);
}
this.datas.push(arrayValues[v]);
first = false;
}
}
var $this = this;
}
recordField.prototype = {
@@ -184,26 +184,26 @@
return this.options.dirty;
},
addValue : function(value, merge, VocabularyId) {
VocabularyId = checkVocabId(VocabularyId);
merge = !!merge;
if(this.databoxField.isReadonly())
{
if(window.console)
{
console.error('Unable to set a value to a readonly field');
}
return;
}
if(window.console)
{
console.log('adding value ',value,' vocId : ', VocabularyId , ' ; merge is ',merge);
}
if(this.isMulti())
{
if(!this.hasValue(value, VocabularyId))
@@ -232,10 +232,10 @@
console.log('Merging value ',value);
}
this.datas[0].setValue(this.datas[0].getValue() + ' ' + value, VocabularyId);
this.options.dirty = true;
}
else
else
{
if(merge === true && this.isEmpty() === false && VocabularyId !== null)
{
@@ -247,7 +247,7 @@
}
else
{
if(!this.hasValue(value, VocabularyId))
{
if(this.datas.length === 0)
@@ -271,11 +271,11 @@
}
}
}
return this;
},
hasValue : function(value, VocabularyId) {
if(typeof value === 'undefined')
{
if(window.console)
@@ -283,9 +283,9 @@
console.error('Trying to check the presence of an undefined value');
}
}
VocabularyId = checkVocabId(VocabularyId);
for(d in this.datas)
{
if(VocabularyId !== null)
@@ -311,24 +311,24 @@
return false;
},
removeValue : function(value, vocabularyId) {
if(this.databoxField.isReadonly())
{
if(window.console)
{
console.error('Unable to set a value to a readonly field');
}
return;
}
vocabularyId = checkVocabId(vocabularyId);
if(window.console)
{
console.log('Try to remove value ', value, vocabularyId, this.datas);
}
for(d in this.datas)
{
if(window.console)
@@ -361,7 +361,7 @@
},
isEmpty : function() {
var empty = true;
for(d in this.datas)
{
if(this.datas[d].getValue() !== '')
@@ -370,17 +370,17 @@
return empty;
},
empty : function() {
if(this.databoxField.isReadonly())
{
if(window.console)
{
console.error('Unable to set a value to a readonly field');
}
return;
}
for(d in this.datas)
{
this.datas[d].remove();
@@ -389,100 +389,101 @@
return this;
},
getValue : function() {
if(this.isMulti())
throw 'This field is multi, I can not give you a single value';
if(this.isEmpty())
return null;
return this.datas[0];
},
getValues : function() {
if(!this.isMulti())
{
throw 'This field is not multi, I can not give you multiple values';
}
if(this.isEmpty())
return new Array();
var arrayValues = [];
for(d in this.datas)
{
if(this.datas[d].getValue() === '')
continue;
arrayValues.push(this.datas[d]);
}
return arrayValues;
},
sort : function(algo) {
this.datas.sort(algo);
return this;
},
getSerializedValues : function() {
var arrayValues = [];
var values = this.getValues();
for(v in values)
{
arrayValues.push(values[v].getValue());
}
return arrayValues.join(' ' + this.databoxField.getSeparator() + ' ');
},
replaceValue : function(search, replace) {
if(this.databoxField.isReadonly())
{
if(window.console)
{
console.error('Unable to set a value to a readonly field');
}
return;
return 0;
}
var n = 0;
for(d in this.datas)
{
if(this.datas[d].getVocabularyId() !== null)
{
continue;
}
var value = this.datas[d].getValue();
var replacedValue = value.replace(search, replace);
if(value === replacedValue)
{
continue;
}
n++;
this.removeValue(value);
if(!this.hasValue(replacedValue))
{
this.addValue(replacedValue);
}
this.options.dirty = true;
}
/**
* cleanup and remove duplicates
*/
return this;
return n;
},
exportDatas : function() {
var returnValue = new Array();
for(d in this.datas)
{
var temp = {
@@ -490,22 +491,22 @@
meta_struct_id : this.getMetaStructId(),
value : this.datas[d].getValue()
};
if(this.datas[d].getVocabularyId())
{
temp.vocabularyId = this.datas[d].getVocabularyId();
}
returnValue.push(temp);
}
return returnValue;
}
};
window.p4 = window.p4 || {};
window.p4.databoxField = databoxField;
window.p4.recordFieldValue = recordFieldValue;
window.p4.recordField = recordField;
})(window);