[isidorus-cvs] r55 - in trunk/src: ajax/javascripts unit_tests
Lukas Giessmann
lgiessmann at common-lisp.net
Mon Jun 22 20:23:23 UTC 2009
Author: lgiessmann
Date: Mon Jun 22 16:23:23 2009
New Revision: 55
Log:
ajax-client: fixed a bug in poems.xtm; added the functionality of inserting existing contents to specific constraint frames
Modified:
trunk/src/ajax/javascripts/datamodel.js
trunk/src/unit_tests/poems.xtm
Modified: trunk/src/ajax/javascripts/datamodel.js
==============================================================================
--- trunk/src/ajax/javascripts/datamodel.js (original)
+++ trunk/src/ajax/javascripts/datamodel.js Mon Jun 22 16:23:23 2009
@@ -1331,7 +1331,7 @@
this.__containers__.push(new Array(new Object()));
var owner = this.__containers__[0][0];
var cssTitle = "No constraint found for this name";
- for(var i = 0; i !== contents.length; ++i){
+ for(var i = 0; i !== cContents.length; ++i){
var name = new NameC(cContents[i], null, null, owner, 0, 1, null);
this.__error__.insert({"before" : name.getFrame()});
}
@@ -1519,13 +1519,15 @@
for(var i = 0; occurrenceTypes && i !== occurrenceTypes.length; ++i){
for(var j = 0; j != occurrenceTypes[i].occurrenceType.length; ++j){
types.push(occurrenceTypes[i].occurrenceType[j]);
- if(typeContent && typeContent[0] === ooccurrenceTypes[i].occurrenceType[j]){
+ if(typeContent && typeContent[0] === occurrenceTypes[i].occurrenceType[j]){
var selected = occurrenceTypes[i].occurrenceType[j];
types[types.length - 1] = types[0];
types[0] = selected;
}
}
}
+ if(types.length === 0 && contents && contents.length !== 0) types = contents.type;
+ if(types.length === 0) throw "From OccurrenceC(): There must be given an occurrencetype or any occurrencetype-constraint!";
this.__type__ = new Object();
var tr = newRow(CLASSES.typeFrame(), "Type", new SelectrowC(types, this.__type__, 1, 1).getFrame());
this.__table__.insert({"bottom" : tr});
@@ -1536,9 +1538,15 @@
onTypeChangeScope(this, contents && contents.scopes ? contents.scopes : null, occurrenceTypes, "occurrence");
// --- resource value and datatype
+ var noConstraint = false;
+ if(!constraint){
+ constraint = {"regexp" : ".*", "cardMin" : 0, "cardMax" : MAX_INT};
+ noConstraint = true;
+ }
var _min = parseInt(constraint.cardMin);
var _max = constraint.cardMax !== MAX_INT ? parseInt(constraint.cardMax) : MMAX_INT;
- var cssTitle = "min: " + _min + " max: " + _max + " regular expression: " + constraint.regexp;
+ var cssTitle = "No constraint found for this occurrence";
+ if(noConstraint === false) cssTitle = "min: " + _min + " max: " + _max + " regular expression: " + constraint.regexp;
this.__cssTitle__ = cssTitle;
makeResource(this, contents, constraint, (occurrenceTypes ? occurrenceTypes[0].datatypeConstraint : null), cssTitle);
@@ -1643,21 +1651,58 @@
this.__constraints__ = constraints;
try{
- if((!contents || contents.length === 0) && constraints && constraints.length > 0){
+ if(constraints && constraints.length > 0){
+ var cContents = new Array();
+ if(contents) cContents = contents.clone();
+
for(var i = 0; i != constraints.length; ++i){
+ var simpleConstraints = constraints[i].constraints;
+
+ var allTypes = new Array();
+ for(var k = 0; k !== constraints[i].occurrenceTypes.length; ++k){
+ allTypes = allTypes.concat(constraints[i].occurrenceTypes[k].occurrenceType);
+ }
+ allTypes = allTypes.flatten().uniq();
+
+ var ret = makeConstraintsAndContents(cContents, simpleConstraints, allTypes);
+ var constraintsAndContents = ret.constraintsAndContents;
+ cContents = ret.contents;
+
+ var _c_ = "";
+ for(var j = 0; j !== constraintsAndContents.length; ++j){
+ for(var k = 0; k !== constraintsAndContents[j].contents.length; ++k){
+ var val = constraintsAndContents[j].contents[k].resourceRef;
+ if(!val){
+ if(constraintsAndContents[j].contents[k].resourceData)
+ val = constraintsAndContents[j].contents[k].resourceData.value;
+ }
+ _c_ += val + "\n";
+ }
+ }
+
this.__containers__.push(new Array());
for(var j = 0; j != constraints[i].constraints.length; ++j){
this.__containers__[i].push(new Object());
var min = parseInt(constraints[i].constraints[j].cardMin);
var max = constraints[i].constraints[j].cardMax !== MAX_INT ? parseInt(constraints[i].constraints[j].cardMax) : MMAX_INT;
+ var _contents = null;
+ for(var k = 0; k !== constraintsAndContents.length; ++k){
+ if(constraintsAndContents[k].constraint === constraints[i].constraints[j]){
+ _contents = constraintsAndContents[k].contents;
+ break;
+ }
+ }
+ var endIdx = min;
+ endIdx = _contents && _contents.length > endIdx ? _contents.length : endIdx;
var regexp = constraints[i].constraints[j].regexp;
- if(max !== 0){
+ if(max !== 0 || (_contents && contents.length)){
var dblClickHandler = null;
if(min === 0) dblClickHandler = dblClickHandlerF;
-
var title = "min: " + min + " max: " + max + " regular expression: " + regexp;
- for(var k = 0; k !== (min === 0 ? 1 : min); ++k){
- var occurrence = new OccurrenceC("", constraints[i].occurrenceTypes, constraints[i].constraints[j], constraints[i].uniqueConstraints, this.__containers__[i][j], min === 0 ? 1 : min, max === MMAX_INT ? -1 : max, title, dblClickHandler);
+ for(var k = 0; k !== endIdx; ++k){
+ var _content = null;
+ if(_contents && _contents.length > k) _content = _contents[k];
+ var occurrence = new OccurrenceC(_content, constraints[i].occurrenceTypes, constraints[i].constraints[j], constraints[i].uniqueConstraints, this.__containers__[i][j], min === 0 ? 1 : min, max === MMAX_INT ? -1 : max, title, dblClickHandler);
if(min === 0) occurrence.disable();
this.__error__.insert({"before" : occurrence.getFrame()});
if(min === 0)occurrence.minimize();
@@ -1665,10 +1710,26 @@
}
}
}
+ // --- inserts not used contents
+ if(cContents.length !== 0){
+ this.__containers__.push(new Array(new Object()));
+ var owner = this.__containers__[0][0];
+ var cssTitle = "No constraint found for this occurrence";
+ for(var i = 0; i !== cContents.length; ++i){
+ var occurrence = new OccurrenceC(cContents[i], null, null, null, owner, 0, 1, cssTitle, null);
+ this.__error__.insert({"before" : occurrence.getFrame()});
+ }
+ }
}
- else {
- // TODO: check already existing contents and order them to the corresponding fields
- }
+ else if(contents && contents.length !== 0){
+ this.__containers__.push(new Array(new Object()));
+ var owner = this.__containers__[0][0];
+ var cssTitle = "No constraint found for this occurrence";
+ for(var i = 0; i !== contents.length; ++i){
+ var occurrence = new OccurrenceC(contents[i], null, null, null, owner, 0, 1, null);
+ this.__error__.insert({"before" : occurrence.getFrame()});
+ }
+ }
}
catch(err){
alert("From OccurrenceContainerC(): " + err);
@@ -3367,9 +3428,9 @@
}
else if(content && content.resourceData){
value = content.resourceData.value;
- datatype = contents.resourceData.datatype;
+ datatype = content.resourceData.datatype;
}
-
+
try{
this.__value__.remove();
this.__value__ = null;
@@ -3435,6 +3496,10 @@
for(var k = 0; k !== simpleConstraints.length; ++k){
var rex = new RegExp(simpleConstraints[k].regexp);
var contentValue = (isForTypes === true ? contents[j].value : contents[j]);
+ if(!contentValue){ // must be an occurrence
+ if(contents[j].resourceRef) contentValue = contents[j].resourceRef;
+ else if(contents[j].resourceData) contentValue = contents[j].resourceData.value;
+ }
if(rex.match(contentValue) === true && (tmpConstraint === null || (tmpConstraint && (simpleConstraints[k].regexp.length > tmpConstraint.regexp.length)))){
tmpConstraint = simpleConstraints[k];
}
@@ -3487,6 +3552,10 @@
for(var l = 0; l !== constraintsAndContents[k].contents.length; ++l){
if(_min >= _len - contentsToMove.length || min <= len + contentsToMove.length) break;
var contentValue = (isForTypes === true ? constraintsAndContents[k].contents[l].value : constraintsAndContents[k].contents[l]);
+ if(!contentValue){ // must be an occurrence
+ if(constraintsAndContents[k].contents[l].resourceRef) contentValue = constraintsAndContents[k].contents[l].resourceRef;
+ else if(constraintsAndContents[k].contents[l].resourceData) contentValue = constraintsAndContents[k].contents[l].resourceData.value;
+ }
if(rex.match(contentValue) === true){
contentsToMove.push(constraintsAndContents[k].contents[l]);
}
Modified: trunk/src/unit_tests/poems.xtm
==============================================================================
--- trunk/src/unit_tests/poems.xtm (original)
+++ trunk/src/unit_tests/poems.xtm Mon Jun 22 16:23:23 2009
@@ -1568,7 +1568,7 @@
</tm:occurrence>
<tm:occurrence>
<tm:type><tm:topicRef href="#regexp"/></tm:type>
- <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">^.+$</tm:resourceData>
+ <tm:resourceData datatype="http://www.w3.org/2001/XMLSchema#string">.+</tm:resourceData>
</tm:occurrence>
</tm:topic>
More information about the Isidorus-cvs
mailing list