Changeset 19821


Ignore:
Timestamp:
11/25/15 22:20:33 (9 years ago)
Author:
dlcheng
Message:

CHG: Optimizing colorbar and adding colorbar ticks for test101.html

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/plot/applyoptions.js

    r19800 r19821  
    142142                        var cdivisions = cheight/4;
    143143                        var color;
    144                         var ccanvas = $('<canvas id="'+options.getfieldvalue('canvasid')+'_colorbar" width="'+cwidth+'" height="'+cheight+'"></canvas>').insertAfter('#'+options.getfieldvalue('canvasid'));
    145                         ccanvas.css({'position':'relative','top':((canvassize-cheight)/-2).toFixed(2)+'px'});
     144                        var cheightoffset = options.getfieldvalue('colorbarfontsize',16);
     145                        var ccanvas = $('<canvas id="'+options.getfieldvalue('canvasid')+'_colorbar" width="'+String(cwidth*4)+'" height="'+String(cheight+cheightoffset)+'"></canvas>').insertAfter('#'+options.getfieldvalue('canvasid'));
     146                        ccanvas.css({'position':'relative','top':((canvassize-cheight-cheightoffset)/-2).toFixed(2)+'px'});
    146147                        var ccontext = ccanvas[0].getContext('2d');
    147                         for (var i = 0; i < cdivisions; i++) {
    148                                 var cindex= Math.floor(i / cdivisions * (colorbar.length - 1));
    149                                 color = colorbar[(colorbar.length - 1) - cindex];
    150                                 color = [Math.round(color[0] * 255), Math.round(color[1] * 255), Math.round(color[2] * 255)];   
    151                                 ccontext.fillStyle = 'rgba(' + color.toString() + ',1.0)';
    152                                 ccontext.fillRect(0, Math.floor(i * cheight / cdivisions), cwidth, Math.ceil(cheight / cdivisions));
    153                         }
     148                        var cgradient = ccontext.createLinearGradient(0,cheightoffset/2,0,cheight);
     149                        for (var i = 0; i < colorbar.length; i++) {
     150                                color = colorbar[colorbar.length-i-1];
     151                                color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];   
     152                                cgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
     153                        }
     154                        ccontext.fillStyle=cgradient;
     155                        ccontext.fillRect(0,cheightoffset/2,cwidth,cheight);
     156                        //Draw colorbar border
     157                        ccontext.beginPath();
     158                        ccontext.lineWidth='1';
     159                        ccontext.strokeStyle='black';
     160                        ccontext.rect(0,cheightoffset/2,cwidth,cheight);
     161                        ccontext.stroke();
    154162                        //Set colorbar lables
    155                         var clabels = $('<ul id="'+options.getfieldvalue('canvasid')+'_colorbar_labels"></ul>');
    156                         clabels.css({'position':'relative','width':'auto','vertical-align':'top','height':String(cheight)+'px','list-style-type':'none','display':'inline-table','top':((canvassize-cheight)/2).toFixed(2)+'px','padding':'0px','margin':'0px '+String(cwidth/4)+'px 0px '+String(cwidth/4)+'px','font-size':String(options.getfieldvalue('colorbarfontsize',16))+'px','color':String(options.getfieldvalue('FontColor','black'))});
    157                         clabels.insertAfter('#'+options.getfieldvalue('canvasid')+'_colorbar');
    158163                        var labels = [];
    159164                        var cdivisions = 8;
    160165                        var caxisdelta = caxis[1] - caxis[0];
    161166                        var clabelitem;
    162 
    163167                        if (options.exist('log')) {
    164                                 //logvalue=options.getfieldvalue('log');
    165                                 //set(c,'YTick',log(tick_vals)./log(logvalue));
    166168                                for (var i = cdivisions; i >= 0; i--) {
    167                                         labels[i] = (caxisdelta*i/cdivisions+caxis[0]).toPrecision(3);
     169                                        if (caxisdelta*i/cdivisions==min) {
     170                                                labels[i] = (caxis[0]).toPrecision(3);
     171                                        }
     172                                        else {
     173                                                labels[i] = (Math.exp(Math.log(caxisdelta)*i/cdivisions)+caxis[0]).toPrecision(3);
     174                                        }       
    168175                                }
    169176                        } else {
    170177                                for (var i = cdivisions; i >= 0; i--) {
    171                                         labels[i] = (caxisdelta*i/cdivisions+caxis[0]).toPrecision(3);
     178                                        labels[i] = (caxisdelta*(cdivisions-i)/cdivisions+caxis[0]).toPrecision(3);
    172179                                }
    173180                        }
    174181                        for (var i = cdivisions; i >= 0; i--) {
    175                                 var clabelitem = $('<li><div>'+labels[i]+'</div></li>')
    176                                 clabelitem.css({'display':'table-row'});
    177                                 clabelitem.find('div').css({'display':'table-cell','vertical-align':'middle'});
    178                                 clabelitem.appendTo('#'+options.getfieldvalue('canvasid')+'_colorbar_labels');
     182                                var y = i/cdivisions*cheight+cheightoffset/2;
     183                                var x = 0.2*cwidth;
     184                                ccontext.beginPath();
     185                                ccontext.moveTo(0,y);
     186                                ccontext.lineTo(x,y);
     187                                ccontext.moveTo(cwidth-x,y);
     188                                ccontext.lineTo(cwidth,y);
     189                                ccontext.stroke();
     190                                ccontext.font=String(options.getfieldvalue('colorbarfontsize',16))+'px Arial';
     191                                ccontext.fillStyle='black';
     192                                ccontext.textAlign='left';
     193                                ccontext.fillText(labels[i],cwidth+x,y+cheightoffset/2);
     194
    179195                        }
    180196                        /* //{{{
Note: See TracChangeset for help on using the changeset viewer.