Changeset 20401
- Timestamp:
- 03/30/16 22:49:50 (9 years ago)
- Location:
- issm/trunk-jpl/src/m/plot
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/applyoptions.js
r20358 r20401 11 11 if (options.getfieldvalue('colorbar')==1) { 12 12 //Handle movie data {{{ 13 if (typeof data == 'string') { 14 //throw Error('plot error message: data of type string'); 15 return; 16 } 13 17 var dataresults = processdata(md,data,options); 14 18 var data2 = dataresults[0]; -
issm/trunk-jpl/src/m/plot/plot_manager.js
r20205 r20401 12 12 var data=options.getfieldvalue('data'); 13 13 14 //standard plot: initialize open Gl for each canvas, if needed: 15 var canvas = $('<div><canvas id="'+options.getfieldvalue('canvasid')+'" width="'+options.getfieldvalue('canvassize',480)+'" height="'+options.getfieldvalue('canvassize',480)+'"></canvas></div>)') 16 canvas.css({'height':String(options.getfieldvalue('canvassize',480)+'px')}); 17 if ($('#'+options.getfieldvalue('canvasid')).length == 0) { 18 canvas.appendTo('body'); 19 } 20 canvas=document.getElementById(options.getfieldvalue('canvasid')); 21 //Initialize the buffer structure when first data is drawn to mesh: 22 var requestDrawing = false; 23 var gl = canvas.gl; 24 if (!canvas.hasOwnProperty("nodes")) { 25 canvas.nodes = {}; 26 canvas.datalength = 0; 27 requestDrawing = true; 28 //Initialize the GL context: 29 gl = initWebGL(canvas,options); 30 if (!gl) { 31 throw Error("plotmodel error message: could not initialize open Gl!"); 14 //TODO: Move into webgl.js? 15 function initCanvas() { 16 //standard plot: initialize open Gl for each canvas, if needed: 17 var canvas = $('<div><canvas id="'+options.getfieldvalue('canvasid')+'" width="'+options.getfieldvalue('canvassize',480)+'" height="'+options.getfieldvalue('canvassize',480)+'"></canvas></div>)') 18 canvas.css({'height':String(options.getfieldvalue('canvassize',480)+'px')}); 19 if ($('#'+options.getfieldvalue('canvasid')).length == 0) { 20 canvas.appendTo('body'); 32 21 } 33 canvas.gl = gl; 34 } 35 canvas.nodes["data"+String(++canvas.datalength)] = Node(gl,options); 22 canvas=document.getElementById(options.getfieldvalue('canvasid')); 23 //Initialize the buffer structure when first data is drawn to mesh: 24 canvas.requestDrawing = false; 25 var gl = canvas.gl; 26 if (!canvas.hasOwnProperty("nodes")) { 27 canvas.nodes = {}; 28 canvas.datalength = 0; 29 canvas.requestDrawing = true; 30 //Initialize the GL context: 31 gl = initWebGL(canvas,options); 32 if (!gl) { 33 throw Error("plotmodel error message: could not initialize open Gl!"); 34 } 35 canvas.gl = gl; 36 } 37 canvas.nodes["data"+String(++canvas.datalength)] = Node(gl,options); 38 return canvas; 39 } 40 var canvas = initCanvas(); 36 41 37 42 //figure out if this is a special plot … … 42 47 case 'boundaries': 43 48 plot_boundaries(md,options,subplotwidth,i); 44 break;49 return; 45 50 case 'BC': 46 51 plot_BC(md,options,subplotwidth,i,data); 47 break;52 return; 48 53 case 'edges': 49 54 plot_edges(md,options,subplotwidth,i,data); 50 break;55 return; 51 56 case 'elementnumbering': 52 57 plot_elementnumbering(md,options,subplotwidth,i); 53 break;58 return; 54 59 case 'highlightelements': 55 60 plot_highlightelements(md,options,subplotwidth,i); 56 break;61 return; 57 62 case 'qmumean': 58 63 plot_qmumean(md,options,nlines,ncols,i); 59 break;64 return; 60 65 case 'qmustddev': 61 66 plot_qmustddev(md,options,nlines,ncols,i); 62 break;67 return; 63 68 case 'qmuhistnorm': 64 69 plot_qmuhistnorm(md,options,nlines,ncols,i); 65 break;70 return; 66 71 case 'qmu_mass_flux_segments': 67 72 plot_qmu_mass_flux_segments(md,options,nlines,ncols,i); 68 break;73 return; 69 74 case 'part_hist': 70 75 plot_parthist(md,options,nlines,ncols,i); 71 break;76 return; 72 77 case 'part_hist_n': 73 78 plot_parthistn(md,options,nlines,ncols,i); 74 break;79 return; 75 80 case 'part_hist_w': 76 81 plot_parthistw(md,options,nlines,ncols,i); 77 break;82 return; 78 83 case 'elements_type': 79 84 plot_elementstype(md,options,subplotwidth,i); 80 break;85 return; 81 86 case 'vertexnumbering': 82 87 plot_vertexnumbering(md,options,subplotwidth,i); 83 break;88 return; 84 89 case 'highlightvertices': 85 90 plot_highlightvertices(md,options,subplotwidth,i); 86 break;91 return; 87 92 case 'basal_drag': 88 93 plot_basaldrag(md,options,subplotwidth,i,data); 89 break;94 return; 90 95 case 'basal_dragx': 91 96 plot_basaldrag(md,options,subplotwidth,i,data); 92 break;97 return; 93 98 case 'basal_dragy': 94 99 plot_basaldrag(md,options,subplotwidth,i,data); 95 break;100 return; 96 101 case 'driving_stress': 97 102 plot_drivingstress(md,options,subplotwidth,i); 98 break;103 return; 99 104 case 'mesh': 100 105 plot_mesh(md,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]); 101 break;106 return; 102 107 case 'none': 103 108 if (!(options.exist('overlay'))){ 104 109 plot_none(md,options,nlines,ncols,i); 105 110 } 106 break;111 return; 107 112 case 'penalties': 108 113 plot_penalties(md,options,subplotwidth,i); 109 break;114 return; 110 115 case 'partition': 111 116 plot_partition(md,options,nlines,ncols,i); 112 break;117 return; 113 118 case 'referential': 114 119 plot_referential(md,options,nlines,ncols,i); 115 break;120 return; 116 121 case 'riftvel': 117 122 plot_riftvel(md,options,nlines,ncols,i); 118 break;123 return; 119 124 case 'riftnumbering': 120 125 plot_riftnumbering(md,options,nlines,ncols,i); 121 break;126 return; 122 127 case 'rifts': 123 128 plot_rifts(md,options,nlines,ncols,i); 124 break;129 return; 125 130 case 'riftrelvel': 126 131 plot_riftrelvel(md,options,nlines,ncols,i); 127 break;132 return; 128 133 case 'riftpenetration': 129 134 plot_riftpenetration(md,options,nlines,ncols,i); 130 break;135 return; 131 136 case 'riftfraction': 132 137 plot_riftfraction(md,options,nlines,ncols,i); 133 break;138 return; 134 139 case 'sarpwr': 135 140 plot_sarpwr(md,options,subplotwidth,i); 136 break;141 return; 137 142 case 'time_dependant': 138 143 plot_vstime(md,options,nlines,ncols,i); 139 break;144 return; 140 145 case 'icefront': 141 146 plot_icefront(md,options,subplotwidth,i,data); 142 break;147 return; 143 148 case 'segments': 144 149 plot_segments(md,options,subplotwidth,i,data); 145 break;150 return; 146 151 case 'quiver': 147 data=[md.initialization.vx, md.initialization.vy]; //Go ahead and try plot_unit148 152 plot_quiver(md,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]); 153 return; 149 154 case 'strainrate_tensor': 150 155 case 'strainrate': … … 166 171 case 'deviatoricstress_principalaxis3': 167 172 plot_tensor(md,options,subplotwidth,i,data); 168 break;173 return; 169 174 case 'thermaltransient_results': 170 175 plot_thermaltransient_results(md,options,subplotwidth,i); 171 break;176 return; 172 177 case 'transient_movie': 173 178 plot_transient_movie(md,options,subplotwidth,i); 174 break;179 return; 175 180 case 'transient_results': 176 181 plot_transient_results(md,options,subplotwidth,i); 177 break;182 return; 178 183 case 'transient_field': 179 184 plot_transient_field(md,options,subplotwidth,i); 180 break;185 return; 181 186 default: 182 187 if (data in md){ … … 218 223 return; 219 224 } 220 225 221 226 if (typeof data !== 'string'){ 222 227 //plot unit … … 225 230 226 231 applyoptions(md,data,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]); 227 228 //Draw into the canvas if needed:229 if (requestDrawing) draw(gl,options,canvas);230 232 } -
issm/trunk-jpl/src/m/plot/plot_mesh.js
r20234 r20401 62 62 node["modelMatrix"] = recalculateModelMatrix(node); 63 63 node["drawMode"] = gl.LINES; 64 node["overlay"] = false;65 64 node["drawOrder"] = 0; 66 65 node["maskEnabled"] = options.exist('mask'); … … 109 108 node["arrays"] = [vertices, colors, indices]; 110 109 node["buffers"] = initBuffers(gl, node["arrays"]); 110 if (canvas.requestDrawing) draw(gl,options,canvas); 111 111 } -
issm/trunk-jpl/src/m/plot/plot_overlay.js
r20258 r20401 65 65 node["texture"] = initTexture(gl,options.getfieldvalue('image')); 66 66 node["alpha"] = options.getfieldvalue('outeralpha',1.0); 67 node["overlay"] = false;68 67 node["drawOrder"] = 1; 69 68 node["maskEnabled"] = options.getfieldvalue('outermask','off') == 'on'; … … 127 126 node["arrays"] = [vertices, texcoords, indices]; 128 127 node["buffers"] = initBuffers(gl,node["arrays"]); 128 if (canvas.requestDrawing) draw(gl,options,canvas); 129 129 } -
issm/trunk-jpl/src/m/plot/plot_unit.js
r20354 r20401 70 70 node["modelMatrix"] = recalculateModelMatrix(node); 71 71 node["alpha"] = options.getfieldvalue('alpha',1.0); 72 node["overlay"] = options.getfieldvalue('overlay','off') == 'on';73 72 node["drawOrder"] = 0; 74 73 node["maskEnabled"] = options.getfieldvalue('innermask','off') == 'on'; … … 200 199 node["movieFrame"] = 0; 201 200 node["movieHandler"] = function () { 202 node["movieFrame"] = (node["movieFrame"] + 1) % (node["movieLength"]); 203 var array = [node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]; 204 node["buffers"] = initBuffers(gl,array); 201 if (canvas["moviePlay"]) { 202 node["movieFrame"] = canvas["movieFrame"]; 203 if (canvas["movieIncrement"]) { 204 if (canvas["movieReverse"]) { 205 node["movieFrame"] = (((node["movieFrame"] - 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus 206 } 207 else { 208 node["movieFrame"] = (((node["movieFrame"] + 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus 209 } 210 } 211 if (canvas["timeLabel"]) { 212 canvas["timeLabel"].html(String(node["movieFrame"]) + "/" + String(node["movieLength"] - 1)); 213 } 214 if (canvas["progressBar"]) { 215 canvas["progressBar"].slider("value", node["movieFrame"]); 216 } 217 var array = [node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]; 218 node["buffers"] = initBuffers(gl,array); 219 canvas["movieFrame"] = node["movieFrame"]; 220 } 205 221 setTimeout(node["movieHandler"], node["movieInterval"]); 206 222 }; 207 223 setTimeout(node["movieHandler"], node["movieInterval"]); 224 if (canvas["progressBar"]) { 225 canvas["movieFrame"] = 0; 226 canvas["progressBar"].slider("value", 0); 227 canvas["progressBar"].slider("option", {max: node["movieLength"]-1}); 228 } 208 229 } 209 230 … … 216 237 throw Error(sprintf("%s%i%s\n",'case ',datatype,' not supported')); 217 238 } 239 if (canvas.requestDrawing) draw(gl,options,canvas); 218 240 } -
issm/trunk-jpl/src/m/plot/slider.js
r20359 r20401 23 23 24 24 $('#'+slidersdiv).css({width:width}); 25 $('<div class=" slider'+name+'"></div>').appendTo('#'+slidersdiv);25 $('<div class="'+name+'-slider"></div>').appendTo('#'+slidersdiv); 26 26 $('<div class="info'+name+'">'+startmessage[0]+value.toString()+startmessage[1]+'</div>').appendTo('#'+slidersdiv); 27 27 var info=$('.info'+name); 28 $('. slider'+name).slider({28 $('.'+name+'-slider').slider({ 29 29 range:'min', 30 30 value:value, … … 37 37 stop:function(event,ui){ 38 38 stopSlide(event,ui,info,callback,middlemessage,endmessage,precision); 39 } ,39 } 40 40 }); 41 $('. ui-slider').css({41 $('.'+name+'-slider.ui-slider').css({ 42 42 width:'auto', 43 43 height:height, … … 45 45 margin:'8px' 46 46 }); 47 $('. ui-slider-handle').css({47 $('.'+name+'-slider .ui-slider-handle').css({ 48 48 background:color, 49 49 height:parseInt(height)+8 50 50 }); 51 $('. ui-slider-range').css({51 $('.'+name+'-slider .ui-slider-range').css({ 52 52 background:color 53 53 }); 54 55 54 } 56 55 … … 66 65 info.text(endmessage[0]+val.toPrecision(precision).toString()+endmessage[1]); 67 66 } 67 68 function progress(){ 69 //Convert arguments to options 70 var args = Array.prototype.slice.call(arguments); 71 var options = new pairoptions(args.slice()); 72 73 var value = options.getfieldvalue('value',0); 74 var name = options.getfieldvalue('name','hma'); 75 var min = options.getfieldvalue('min',0.6*value); 76 var max = options.getfieldvalue('max',1.4*value); 77 var width = options.getfieldvalue('width','auto'); 78 var height = options.getfieldvalue('height',32); 79 var color = options.getfieldvalue('color','#bbbbbb'); 80 var progressdiv = options.getfieldvalue('progressdiv','progressdiv'); 81 82 var canvas = $('#'+name)[0]; 83 var progressbar = $('#'+name+'-progressbar'); 84 var playbutton = $('#'+name+'-playbutton'); 85 var reversebutton = $('#'+name+'-reversebutton'); 86 var timelabel = $('#'+name+'-timelabel'); 87 88 89 playbutton.click(function() { 90 canvas.moviePlay = !canvas.moviePlay; 91 if (canvas.moviePlay) { 92 $("#playButton").html("❚❚"); 93 } 94 else { 95 $("#playButton").html("▶"); 96 } 97 }); 98 reversebutton.click(function() { 99 canvas.movieReverse = !canvas.movieReverse; 100 if (canvas.movieReverse) { 101 reversebutton.html("◀◀"); 102 } 103 else { 104 reversebutton.html("▶▶"); 105 } 106 }); 107 canvas.timeLabel = timelabel; 108 109 $('#'+progressdiv).css({width:width}); 110 $('<div class="'+name+'-progressbar"></div>').prependTo('#'+progressdiv); 111 $('.'+name+'-progressbar').slider({ 112 range:'min', 113 value:0, 114 min:0, 115 max:1, 116 step:1, 117 start:function(event,ui){ 118 startProgress(event,ui,canvas); 119 }, 120 slide:function(event,ui){ 121 moveProgress(event,ui,canvas); 122 }, 123 stop:function(event,ui){ 124 stopProgress(event,ui,canvas); 125 } 126 }); 127 $('.'+name+'-progressbar.ui-slider').css({ 128 width:'auto', 129 height:height, 130 background:color, 131 margin:'8px' 132 }); 133 $('.'+name+'-progressbar .ui-slider-handle').css({ 134 background:color, 135 height:parseInt(height)+8 136 }); 137 $('.'+name+'-progressbar .ui-slider-range').css({ 138 background:'red' 139 }); 140 141 canvas.progressBar = $('.'+name+'-progressbar'); 142 } 143 144 function startProgress(event,ui,canvas){ 145 canvas.movieFrame = ui.value; 146 canvas.movieIncrement = false; 147 } 148 149 function moveProgress(event,ui,canvas){ 150 canvas.movieFrame = ui.value; 151 } 152 153 function stopProgress(event,ui,canvas){ 154 canvas.movieFrame = ui.value; 155 canvas.movieIncrement = true; 156 } -
issm/trunk-jpl/src/m/plot/webgl.js
r20358 r20401 45 45 canvas.controlsensitivity = 1; 46 46 canvas.twod = options.getfieldvalue('2d','off') == 'on'; 47 canvas.moviePlay = true; 48 canvas.movieReverse = false; 49 canvas.movieIncrement = true; 47 50 48 51 if (canvas.twod) {
Note:
See TracChangeset
for help on using the changeset viewer.