dev-core
 

Changeset 9632

Show
Ignore:
Timestamp:
07.09.2007 22:30:02 (1 year ago)
Author:
sam
Message:

tooltip: Ajout plus de possibilités de config pour sm:position/sm:relativeToAnchor / correction bug positionnement si ancestor scrollé / garantir que le tt reste bien dans l'écran si pos:FIX

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Wsp_Modeling/es/content/xEdition/smWTooltip.xed.xml

    r9600 r9632  
    106106                                                <element se:name="sm:relativeToAnchor" se:bind="element" se:card="1"> 
    107107                                                        <atts> 
     108                                                                <attribute se:name="horizontal" se:bind="attribute"> 
     109                                                                        <choiceInput> 
     110                                                                                <ciItem label="overAnchor"/> 
     111                                                                                <ciItem label="center"/> 
     112                                                                                <ciSeparator/> 
     113                                                                                <ciItem label="leftOfAnchor"/> 
     114                                                                                <ciItem label="rightOfAnchor"/> 
     115                                                                        </choiceInput> 
     116                                                                </attribute> 
    108117                                                                <se:ref se:refid="tt_horizontalOffset"/> 
     118                                                                <attribute se:name="vertical" se:bind="attribute"> 
     119                                                                        <choiceInput> 
     120                                                                                <ciItem label="overAnchor"/> 
     121                                                                                <ciItem label="center"/> 
     122                                                                                <ciSeparator/> 
     123                                                                                <ciItem label="aboveAnchor"/> 
     124                                                                                <ciItem label="belowAnchor"/> 
     125                                                                        </choiceInput> 
     126                                                                </attribute> 
    109127                                                                <se:ref se:name="verticalOffset" se:refid="tt_horizontalOffset"/> 
    110128                                                        </atts> 
  • trunk/Wsp_Modeling/spaces/gen/modelBuilder/bs.doss/_common/sm/web/sm_WTooltip.xml.xsl

    r9401 r9632  
    7070                        <xsl0:value-of select="si(sm:position/sm:relativeToCursor/@followCursor='false','STATIC:true,','')"/> 
    7171                        <xsl0:value-of select="si(sm:position/sm:relativeToAnchor,concat('FIXTYPE:&quot;node&quot;,FIX:[',si(sm:position/sm:relativeToAnchor/@horizontalOffset,sm:position/sm:relativeToAnchor/@horizontalOffset,'0'),',',si(sm:position/sm:relativeToAnchor/@verticalOffset,sm:position/sm:relativeToAnchor/@verticalOffset,'0'),'],'),'')"/> 
     72                        <xsl0:value-of select="si(sm:position/sm:relativeToAnchor/@horizontal,concat('HPOS:&quot;',sm:position/sm:relativeToAnchor/@horizontal,'&quot;,'),'')"/> 
     73                        <xsl0:value-of select="si(sm:position/sm:relativeToAnchor/@vertical,concat('VPOS:&quot;',sm:position/sm:relativeToAnchor/@vertical,'&quot;,'),'')"/> 
    7274                        <xsl0:value-of select="si(sm:position/sm:fixed/@baseObjectId,concat('FIXID:&quot;',sm:position/sm:fixed/@baseObjectId,'&quot;,'),'')"/> 
    7375                        <xsl0:value-of select="si(sm:position/sm:fixed/@horizontalOffset|sm:position/sm:fixed/@verticalOffset,concat('FIX:[',si(sm:position/sm:fixed/@horizontalOffset,sm:position/sm:fixed/@horizontalOffset,'0'),',',si(sm:position/sm:fixed/@verticalOffset,sm:position/sm:fixed/@verticalOffset,'0'),'],'),'')"/> 
  • trunk/Wsp_Modeling/spaces/gen/modelBuilder/bs.doss/_common/sm/webSiteGenerator/scTooltipMgr.js

    r9606 r9632  
    5353        cTtFixType : "win", // type of fixed positionning (win,node,id) 
    5454        cTtTextAlign : "left", 
     55        cTtHPos : "overAnchor", 
     56        cTtVPos : "overAnchor", 
    5557 
    5658        //TooltipMgr fields 
     
    8183        fFixId : false, 
    8284        fFixType : "win", 
     85        fTtHPos : null, 
     86        fTtVPos : null, 
    8387         
    8488        // Browser flags 
     
    132136                return(vHtml+'</div>'); 
    133137        }, 
    134         xShow: function(pEvt, pId, pSup, pDelay, pFix, pFixId, pFixType, pLeft, pOffx, pOffy, pStatic, pSticky, pTemp) { 
     138        xShow: function(pEvt, pId, pSup, pDelay, pFix, pFixId, pFixType, pLeft, pHPos, pVPos, pOffx, pOffy, pStatic, pSticky, pTemp) { 
    135139                if(this.fCurrTt) this.hideTooltip(true); 
    136140                this.fMmovEvt = document.onmousemove || null; 
     
    158162                        this.fFixId = pFixId; 
    159163                        this.fFixType = pFixType; 
     164                        this.fTtHPos = pHPos; 
     165                        this.fTtVPos = pVPos; 
    160166                        if(this.fNavop7) this.xOpDeHref(pEvt); 
    161167                        this.fXlim = this.xInt((this.fDb && this.fDb.clientWidth)? this.fDb.clientWidth : window.innerWidth)+this.xInt(window.pageXOffset || (this.fDb? this.fDb.scrollLeft : 0) || 0)-this.fCurrTtW; 
    162168                        this.fYlim = this.xInt(window.innerHeight || this.fDb.clientHeight)+this.xInt(window.pageYOffset || (this.fDb? this.fDb.scrollTop : 0) || 0)-this.fCurrTtH-this.fOffY; 
    163169                        this.xSetDivZ(); 
    164                         if(pFix) this.xSetDivPosFix(pFixType, pFix[0], pFix[1], pFixId); 
     170                        if(pFix) this.xSetDivPosFix(pFixType, pFix[0], pFix[1], pFixId, pHPos, pVPos); 
    165171                        else this.xSetDivPos(this.xEvX(pEvt), this.xEvY(pEvt)); 
    166172                        var vTimeOutTxt = 'scTooltipMgr.showDiv(\'true\');'; 
     
    225231                } else { 
    226232                        vX = this.xInt(pElt.offsetLeft); 
    227                         if (pElt.offsetParent.tagName.toLowerCase() != 'body' && pElt.offsetParent.tagName.toLowerCase() != 'html') vX += this.xGetEltL(pElt.offsetParent); 
     233                        if (pElt.offsetParent.tagName.toLowerCase() != 'body' && pElt.offsetParent.tagName.toLowerCase() != 'html') { 
     234                                vX -= pElt.offsetParent.scrollLeft; 
     235                                vX += this.xGetEltL(pElt.offsetParent); 
     236                        } 
    228237                } 
    229238                if (this.fNavsf) { 
     
    237246                } else { 
    238247                        vY = this.xInt(pElt.offsetTop); 
    239                         if (pElt.offsetParent.tagName.toLowerCase() != 'body' && pElt.offsetParent.tagName.toLowerCase() != 'html') vY += this.xGetEltT(pElt.offsetParent); 
     248                        if (pElt.offsetParent.tagName.toLowerCase() != 'body' && pElt.offsetParent.tagName.toLowerCase() != 'html') { 
     249                                vY -= pElt.offsetParent.scrollTop; 
     250                                vY += this.xGetEltT(pElt.offsetParent); 
     251                        } 
    240252                } 
    241253                if (this.fNavsf) { 
     
    268280                } 
    269281        }, 
    270         xSetDivPosFix: function(pType, pX, pY, pRelId) { 
     282        xSetDivPosFix: function(pType, pX, pY, pRelId, pHPos, pVPos) { 
     283                var vX; 
     284                var vY; 
    271285                switch(pType){ 
    272286                case "win": 
    273                         this.xSetDivPos(pX, pY); 
     287                        vX = pX; 
     288                        vY = pY; 
    274289                        break 
    275290                case "id": 
    276291                        var vRelBase = document.getElementById(pRelId); 
    277                         var vX = this.xGetEltL(vRelBase) + pX; 
    278                         var vY = this.xGetEltT(vRelBase) + pY; 
    279                         this.xSetDivPos(vX, vY); 
     292                        vX = this.xGetEltL(vRelBase) + pX; 
     293                        vY = this.xGetEltT(vRelBase) + pY; 
    280294                        break 
    281295                case "node": 
    282                         var vX = this.xGetEltL(this.fCurrTt.fNode) + pX; 
    283                         var vY = this.xGetEltT(this.fCurrTt.fNode) + pY; 
    284                         this.xSetDivPos(vX, vY); 
    285                 } 
    286 /*              if (pRelId) { 
    287                         var vRelBase = document.getElementById(pRelId); 
    288                         var vX = this.xGetEltL(vRelBase) + pX; 
    289                         var vY = this.xGetEltT(vRelBase) + pY; 
    290                         this.xSetDivPos(vX, vY); 
    291                 } else this.xSetDivPos(pX, pY);*/ 
     296                        switch(pHPos){ 
     297                        case "center": 
     298                                vX = this.xGetEltL(this.fCurrTt.fNode) + (this.xGetEltW(this.fCurrTt.fNode) - this.fCurrTtW)/2 + pX; 
     299                                break 
     300                        case "leftOfAnchor": 
     301                                vX = this.xGetEltL(this.fCurrTt.fNode) - this.fCurrTtW + pX; 
     302                                if (!this.xIsInWinH(vX)) vX = this.xGetEltL(this.fCurrTt.fNode) + this.xGetEltW(this.fCurrTt.fNode) - pX; 
     303                                break 
     304                        case "rightOfAnchor": 
     305                                vX = this.xGetEltL(this.fCurrTt.fNode) + this.xGetEltW(this.fCurrTt.fNode) + pX; 
     306                                if (!this.xIsInWinH(vX)) vX = this.xGetEltL(this.fCurrTt.fNode) - this.fCurrTtW - pX; 
     307                                break 
     308                        default : 
     309                                vX = this.xGetEltL(this.fCurrTt.fNode) + pX; 
     310                        } 
     311                        switch(pVPos){ 
     312                        case "center": 
     313                                vY = this.xGetEltT(this.fCurrTt.fNode) + (this.xGetEltH(this.fCurrTt.fNode) - this.fCurrTtH)/2 + pY; 
     314                                break 
     315                        case "aboveAnchor": 
     316                                vY = this.xGetEltT(this.fCurrTt.fNode) - this.fCurrTtH + pY; 
     317                                if (!this.xIsInWinV(vY)) vY = this.xGetEltT(this.fCurrTt.fNode) + this.xGetEltH(this.fCurrTt.fNode) - pY; 
     318                                break 
     319                        case "belowAnchor": 
     320                                vY = this.xGetEltT(this.fCurrTt.fNode) + this.xGetEltH(this.fCurrTt.fNode) + pY; 
     321                                if (!this.xIsInWinV(vY)) vY = this.xGetEltT(this.fCurrTt.fNode) - this.fCurrTtH - pY; 
     322                                break 
     323                        default : 
     324                                vY = this.xGetEltT(this.fCurrTt.fNode) + pY; 
     325                        } 
     326                } 
     327                if(vX > this.fXlim) vX = this.fXlim; 
     328                var vScrX = this.xInt(window.pageXOffset || (this.fDb? this.fDb.scrollLeft : 0) || 0); 
     329                if(vX < vScrX) vX = vScrX; 
     330                if(vY > this.fYlim) vY = this.fYlim; 
     331                var vScrY = this.xInt(window.pageYOffset || (this.fDb? this.fDb.scrollTop : 0) || 0); 
     332                if(vY < vScrY) vY = vScrY; 
     333                this.xSetDivPos(vX, vY); 
     334        }, 
     335        xIsInWinH: function(pX) { 
     336                if(pX > this.fXlim) return(false); 
     337                var vScr = this.xInt(window.pageXOffset || (this.fDb? this.fDb.scrollLeft : 0) || 0); 
     338                if(pX < vScr) return(false); 
     339                return(true); 
     340        }, 
     341        xIsInWinV: function(pY) { 
     342                if(pY > this.fYlim) return(false); 
     343                var vScr = this.xInt(window.pageYOffset || (this.fDb? this.fDb.scrollTop : 0) || 0); 
     344                if(pY < vScr) return(false); 
     345                return(true); 
    292346        }, 
    293347        xSetDivPos: function(pX, pY) { 
     
    468522        }, 
    469523        reposTooltip: function() { 
    470                 scTooltipMgr.xSetDivPosFix(scTooltipMgr.fFixType, scTooltipMgr.fFix[0], scTooltipMgr.fFix[1], scTooltipMgr.fFixId); 
     524                scTooltipMgr.xSetDivPosFix(scTooltipMgr.fFixType, scTooltipMgr.fFix[0], scTooltipMgr.fFix[1], scTooltipMgr.fFixId, scTooltipMgr.fTtHPos, scTooltipMgr.fTtVPos); 
    471525        }, 
    472526        // END CALLBACK functions 
     
    482536                vFixType = (typeof vOpt.FIXTYPE != this.fUndef)? vOpt.FIXTYPE : ((vFixId == "")? this.cTtFixType : "id"), 
    483537                vLeft = (typeof vOpt.LEFT != this.fUndef)? vOpt.LEFT : this.cTtLeft, 
     538                vVPos = (typeof vOpt.VPOS != this.fUndef)? vOpt.VPOS : this.cTtVPos, 
     539                vHPos = (typeof vOpt.HPOS != this.fUndef)? vOpt.HPOS : this.cTtHPos, 
    484540                vOffx = (typeof vOpt.OFFSETX != this.fUndef)? vOpt.OFFSETX : this.cTtOffsetX, 
    485541                vOffy = (typeof vOpt.OFFSETY != this.fUndef)? vOpt.OFFSETY : this.cTtOffsetY, 
     
    513569 
    514570                //show tooltip 
    515                 this.xShow(pEvt, vTtId, vSsup, vDelay, vFix, vFixId, vFixType, vLeft, vOffx, vOffy, vStatic, vSticky, vTemp); 
     571                this.xShow(pEvt, vTtId, vSsup, vDelay, vFix, vFixId, vFixType, vLeft, vHPos, vVPos, vOffx, vOffy, vStatic, vSticky, vTemp); 
    516572        } 
    517573};