Author: lgiessmann Date: Thu Jun 25 05:25:49 2009 New Revision: 63
Log: ajax-client: now all roles created from existing content, also display the existing itemIdentity-elements
Modified: trunk/src/ajax/javascripts/datamodel.js
Modified: trunk/src/ajax/javascripts/datamodel.js ============================================================================== --- trunk/src/ajax/javascripts/datamodel.js (original) +++ trunk/src/ajax/javascripts/datamodel.js Thu Jun 25 05:25:49 2009 @@ -2314,6 +2314,20 @@ alert("From RoleC(): " + err); } }, + "addItemIdentities" : function(additionalItemIdentities){ + if(!additionalItemIdentities || additionalItemIdentities.length === 0) return; + + var con = this.getContent(); + if(!con) con = new Array(); + else con = con.itemIdentities; + + con = con.concat(additionalItemIdentities); + var td = this.__itemIdentity__.getFrame().parentNode; + this.__itemIdentity__.remove(); + + this.__itemIdentity__ = new ItemIdentityC(con.uniq(), this); + td.update(this.__itemIdentity__.getFrame()); + }, "selectPlayer" : function(playerPsi){ if(this.getPlayer() === playerPsi) return; var opts = this.__player__.__frames__[0].getFrame().select("select")[0].select("option"); @@ -2493,6 +2507,7 @@ for(var i = 0; i !== contents.length; ++i){ var rType = contents[i].type; var player = contents[i].topicRef; + var itemIdentities = contents[i].itemIdentities; // --- searches existing roles in the role-container for(var j = 0; j !== roleContainer.length; ++j){ @@ -2540,6 +2555,9 @@
// --- selects the current roletype role.selectType(rType[0]); + + // --- creates itemIdentities for the current role + role.addItemIdentities(itemIdentities); break; } } @@ -2553,9 +2571,11 @@ if(isARC === true) roleContainer = this.__arContainer__.__frames__; if(roleContainer && roleContainer.length !== 0){ + var currentUsedContents = new Array(); for(var i = 0; i !== contents.length; ++i){ var rType = contents[i].type; var player = contents[i].topicRef; + var itemIdentities = contents[i].itemIdentities; // --- gets all existing roles corresponding to the current content var existingRoles = new Array(); @@ -2685,14 +2705,27 @@ this.__setORCAddHandler__(role, orc, orpcs); this.__setORCRemoveHandler__(role, orc, orpcs); } + // --- adds itemIdentities + role.addItemIdentities(itemIdentities); var lastRole = roleContainer[roleContainer.length -2]; lastRole.getFrame().insert({"after" : role.getFrame()}); + currentUsedContents.push(contents[i]); } - } + } + + // --- removes all used contents from contents + if(!usedContents) usedContents = new Array(); + usedContents = usedContents.concat(currentUsedContents).uniq(); + for(var i = 0; i !== usedContents.length; ++i) contents = contents.without(usedContents[i]); } return {"usedContents" : usedContents, "contents" : contents, "alreadyUsedRoles" : alreadyUsedRoles}; }, + "__createNewRolesFromContents__" : function(contents){ + if(!contents || contents.length === 0) return; + + // TODO: implement + }, "__createFromContent__" : function(contents){ if(!contents || contents.lenght === 0) return; @@ -2724,7 +2757,7 @@ usedContents = ret.usedContents; alreadyUsedRoles = ret.alreadyUsedRoles;
- // TODO: create roles that does not belong to any constraint + this.__createNewRolesFromContents__(cContents); }, "resetValues" : function(associationRoleConstraints, rolePlayerConstraints, otherRoleConstraints){ this.__associationRoleConstraints__ = associationRoleConstraints;