Changeset 6491 for trunk/Wsp_ModelingAssmnt/spaces/gen/modelBuilder/bs.doss/sma_assmntUnitMlqXhtmlTransf/xhtmlContent.xsl.xsl
- Timestamp:
- 09/08/06 18:46:38 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Wsp_ModelingAssmnt/spaces/gen/modelBuilder/bs.doss/sma_assmntUnitMlqXhtmlTransf/xhtmlContent.xsl.xsl
r6483 r6491 93 93 load:function(pSession){ 94 94 var vStr = (pSession!=null) ? scServices.assmntMgr.getResponse(this.fId, pSession, "pos") : null; 95 var vList = vStr ? eval(vStr) : null;96 95 <!-- Reset des tableaux 97 96 --> for(var i=this.fGroupsC.length -1; i >=0; i--) { … … 100 99 } 101 100 <!-- Remplissage 102 --> for(var i=0, len=this.fLabels.length; i < len; i++) { 103 var vLabelToAdd = vList ? vList[i] || {} : {}; 104 vLabelToAdd.label = this.fLabels[i]; 105 var vGroupCs = this.fGroupsC[vLabelToAdd.g||0]; 106 if(vGroupCs.length == 1) vGroupCs[0].labelsToAdd[ "offs" in vLabelToAdd ? vLabelToAdd.offs : vGroupCs[0].labelsToAdd.length] = vLabelToAdd; 107 else if("offs" in vLabelToAdd) vGroupCs[vLabelToAdd.offs].labelsToAdd.push(vLabelToAdd); 108 // TODO else 101 --> if(vStr) { 102 <!-- Reload un état 103 --> var vList = eval(vStr); 104 for(var i=0, len=this.fLabels.length; i < len; i++) { 105 var vLabelToAdd = vList[i]; 106 vLabelToAdd.label = this.fLabels[i]; 107 var vGroupC = this.fGroupsC[vLabelToAdd.g]; 108 if(vGroupC.length == 1) vGroupC[0].labelsToAdd[vLabelToAdd.offs] = vLabelToAdd; 109 else vGroupC[vLabelToAdd.offs].labelsToAdd.push(vLabelToAdd); 110 } 111 } else { 112 <!-- Aucun état enregistré, reset 113 --> var vBasketC = this.fGroupsC[0]; 114 for(var i=vBasketC.length-1; i >=0; i--) for(var j=0, vLen=vBasketC[i]._Labels.length; j < vLen; j++) vBasketC[i].labelsToAdd.push({label:vBasketC[i]._Labels[j]}); 109 115 } 110 116 scDragMgr.repopulateContainers("<xsl:value-of select="$vIdObj"/>"); … … 114 120 var vGroup = this.fGroupsC[i]; 115 121 var vOffset = 0; 116 for(var j= vGroup.length-1; j >=0; j--) {122 for(var j=0, vLenJ=vGroup.length; j < vLenJ; j++) { 117 123 var vItems = scDragMgr.getLabels(vGroup[j]); 118 for(var k= vItems.length-1; k >=0; k--) {124 for(var k=0, vLenK = vItems.length; k < vLenK; k++) { 119 125 vItems[k].rG = i; 120 126 vItems[k].rO = vOffset++; … … 164 170 <xsl0:otherwise>this.fGroupsC = [scDragMgr.getContainers("<xsl:value-of select="$vIdObj"/>", document.getElementById("<xsl:value-of select="$vIdObj"/>_L"))]; 165 171 </xsl0:otherwise> 166 </xsl0:choose>this.initSeq(this.getOnLoadSeq()); 172 </xsl0:choose><!-- Mémorisation de la position initiale des labels dans _Labels. 173 --> for(var i = this.fGroupsC[0].length-1; i >=0; i--) this.fGroupsC[0][i]._Labels = scDragMgr.getLabels(this.fGroupsC[0][i]); 174 this.initSeq(this.getOnLoadSeq()); 167 175 var vNodeRoot = document.getElementById("<xsl:value-of select="$vIdObj"/>_A"); 168 176 vNodeRoot.style.display = "block"; … … 347 355 </xsl0:when> 348 356 <xsl0:when test="$vInteraction='matchTarget'"> 349 vLabel.className = (vLabel.sG == vLabel.rG <xsl0:if test="sm:scoreComputing/sm:orderingScoring/@algorithm ='distance'"> && vLabel.sO == vLabel.rO</xsl0:if>) ? "<xsl0:value-of select="si(sm:resultDisplaying/@classIfRight, sm:resultDisplaying/@classIfRight, 'assmntResult_Right')"/>" : "<xsl0:value-of select="si(sm:resultDisplaying/@classIfWrong, sm:resultDisplaying/@classIfWrong, 'assmntResult_Wrong')"/>";357 vLabel.className = (vLabel.sG == vLabel.rG <xsl0:if test="sm:scoreComputing/sm:orderingScoring/@algorithm"> && vLabel.sO == vLabel.rO</xsl0:if>) ? "<xsl0:value-of select="si(sm:resultDisplaying/@classIfRight, sm:resultDisplaying/@classIfRight, 'assmntResult_Right')"/>" : "<xsl0:value-of select="si(sm:resultDisplaying/@classIfWrong, sm:resultDisplaying/@classIfWrong, 'assmntResult_Wrong')"/>"; 350 358 </xsl0:when> 351 359 </xsl0:choose> … … 413 421 --> this.computeScore = function() { 414 422 <!-- Calcul du score 415 --> <xsl0:if test="$vInteraction='orderLabels' or sm:scoreComputing/sm:orderingScoring/@algorithm='distance'"> 416 function scoreOrder(pLabels) { 417 var vMax, vErr; 423 --> <xsl0:choose> 424 <xsl0:when test="sm:scoreComputing/sm:orderingScoring/@algorithm='distance'"> 425 function scoreOrder(pLabels, pGroup) { 426 var vMax=0, vErr=0; 418 427 var vD = pLabels.length-1; 419 for(var i=pLabels.length -1; i >=0; i--) { 420 vErr += Math.abs(pLabels[i].sO - pLabels[i].gO); 428 for(var i=vD; i >=0; i--) { 429 if(pGroup && pGroup!=pLabels[i].rG) return 0; 430 vErr += Math.abs(pLabels[i].sO - pLabels[i].rO); 421 431 vMax += Math.abs(vD); 422 432 vD = vD - 2; 423 433 } 424 return (vMax - vErr) / vMax; 425 } 426 </xsl0:if> 434 return vMax>0 ? (vMax - vErr) / vMax : 0; 435 } 436 </xsl0:when> 437 <xsl0:when test="$vInteraction='orderLabels' or sm:scoreComputing/sm:orderingScoring/@algorithm='boolean'"> 438 function scoreOrder(pLabels, pGroup) { 439 for(var i=pLabels.length-1; i >=0; i--) { 440 if(pGroup && pGroup!=pLabels[i].rG) return 0; 441 if(pLabels[i].sO != pLabels[i].rO) return 0; 442 } 443 return 1; 444 } 445 </xsl0:when> 446 </xsl0:choose> 427 447 <xsl0:choose> 428 <xsl0:when test="$vInteraction='orderLabels'"> var vList = this.fGroupsC[this.fGroupsC.length-1];448 <xsl0:when test="$vInteraction='orderLabels'"> 429 449 this.fMinPts = 0; 430 this.fMaxPts = vList.length;431 this.fScorePts = Math. round(scoreOrder(this.fLabels) * vList.length);450 this.fMaxPts = this.fLabels.length; 451 this.fScorePts = Math.floor(scoreOrder(this.fLabels, this.fGroupsC.length-1) * this.fLabels.length); 432 452 </xsl0:when> 433 453 <xsl0:when test="$vInteraction='associateLabels'">this.fMinPts = 0; 434 this.fMaxPts = this.fGroupsC.length ;454 this.fMaxPts = this.fGroupsC.length - 1; 435 455 this.fScorePts = 0; 436 456 var vWrong = {}; 437 457 var vLists = {}; 438 for(var i=this.fGroupsC.length-1; i >=1; i--) {vLists[i] = []; this.fGroupsC[i].isRight=true;}; 439 for(var i=this.fLabels.length -1; i >=0; i--) { 440 vLists[this.fLabels[i].sG][this.fLabels[i].rO] = this.fLabels[i]; 441 } 442 for(var i=this.fGroupsC.length-1; i >=1; i--) { 443 var vList = this.fGroupsC[i]; 444 var j=vList.length-1; 445 for(; j >=1; j--) if(vList[j].rG != vList[0].rG) {this.fGroupsC[vList[0].rG].isRight = false; this.fGroupsC[vList[j].rG].isRight = false;} 446 } 447 for(var i=this.fGroupsC.length-1; i >=1; i--) if(this.fGroupsC[i].isRight) this.fScorePts += <xsl0:value-of select="si(sm:scoreComputing/sm:orderingScoring/@algorithm='distance', 'scoreOrder(vLists[i])', '1')"/>; 458 for(var i=this.fGroupsC.length-1; i >=1; i--) this.fGroupsC[i].isRight=true; 459 loopLabels: 460 for(var i=this.fLabels.length-1; i >=0; i--) { 461 var vSG = this.fLabels[i].sG; 462 if(this.fGroupsC[vSG].isRight) { 463 var vRG = this.fLabels[i].rG; 464 if(vRG==0) {this.fGroupsC[vSG].isRight=false; continue loopLabels;} 465 if(! vLists[vSG]) vLists[vSG] = []; 466 else for(var j = vLists[vSG].length-1; j >=0; j--) if(vLists[vSG][j].rG != vRG) { 467 this.fGroupsC[vSG].isRight = false; 468 continue loopLabels; 469 }<!-- On regarde si d'autres labels ne seraient pas dans ce group 470 --> for(var j=this.fLabels.length-1; j >=0; j--) if(i!=j && this.fLabels[j].rG == vRG && this.fLabels[j].sG != vSG) { 471 this.fGroupsC[vSG].isRight = false; 472 this.fGroupsC[this.fLabels[j].sG].isRight = false; 473 continue loopLabels; 474 } 475 vLists[vSG].push(this.fLabels[i]); 476 } 477 } 478 for(var i=this.fGroupsC.length-1; i >=1; i--) if(this.fGroupsC[i].isRight) this.fScorePts += <xsl0:value-of select="si(sm:scoreComputing/sm:orderingScoring/@algorithm, 'scoreOrder(vLists[i])', '1')"/>; 448 479 </xsl0:when> 449 480 <xsl0:when test="$vInteraction='matchTarget'">this.fMinPts = 0; … … 453 484 if(this.fLabels[i].sG == this.fLabels[i].rG) this.fScorePts += 1; 454 485 } 455 <xsl0:if test="sm:scoreComputing/sm:orderingScoring/@algorithm ='distance'">for(var i=this.fGroupsC.length-1; i >=1; i--) {486 <xsl0:if test="sm:scoreComputing/sm:orderingScoring/@algorithm">for(var i=this.fGroupsC.length-1; i >=1; i--) { 456 487 var vList = []; 457 488 var j=this.fLabels.length -1; … … 462 493 } 463 494 } 464 if(j<0) this.fScorePts += Math. round(scoreOrder(vList)*vList.length);495 if(j<0) this.fScorePts += Math.floor(scoreOrder(vList)*vList.length); 465 496 } 466 497 this.fScorePts /= 2;
Note: See TracChangeset
for help on using the changeset viewer.