Changeset 23008
- Timestamp:
- 07/25/18 23:33:58 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/plot_transient_movie.js
r23007 r23008 1 function plot_transient_movie(md, options, canvas) { //{{{ 2 //PLOT_TRANSIENT_MOVIE - plot a transient result as a movie 3 // 4 // Usage: 5 // plot_transient_movie(md, options, canvas); 6 // 7 // See also: PLOTMODEL, PLOT_MANAGER 1 function plot_transient_movie(md, options, canvas) {//{{{ 2 /** 3 * PLOT_TRANSIENT_MOVIE - plot a transient result as a movie 4 * 5 * Usage: 6 * plot_transient_movie(md, options, canvas); 7 * 8 * See also: PLOTMODEL, PLOT_MANAGER 9 */ 8 10 9 //loop over the time steps 10 var data = options.getfieldvalue('transient_field_data'); 11 var datatype; 12 var steps = new Array(data.length); 13 for (i = 0; i < steps.length; i++) { 11 // Loop over the time steps 12 let data = options.getfieldvalue('transient_field_data'); 13 let dataType = {}; 14 let steps = new Array(data.length); 15 16 for (let i = 0, numSteps = steps.length; i < numSteps; ++i) { 14 17 steps[i] = i; 15 18 } 16 19 17 // calculate caxis20 // Calculate caxis 18 21 if (!options.exist('caxis')) { 19 var range = [Infinity, -Infinity]; 20 var dataresults; 21 for (var i in steps) { 22 dataresults = processdata(md, data[i], options); 23 range[0] = Math.min(range[0], ArrayMin(dataresults[1])); 24 range[1] = Math.max(range[1], ArrayMax(dataresults[1])); 22 let range = [Infinity, -Infinity]; 23 let dataResults; 24 25 for (let i in steps) { 26 dataResults = processdata(md, data[i], options); 27 range[0] = Math.min(range[0], ArrayMin(dataResults[1])); 28 range[1] = Math.max(range[1], ArrayMax(dataResults[1])); 25 29 } 26 datatype = dataresults[1]; 30 31 dataType = dataResults[1]; 27 32 options.addfielddefault('caxis', range); 28 29 33 } 30 34 31 // Create unit node if it does not already exist35 // Create unit node if it does not already exist 32 36 if (!('unit' in canvas.nodes)) { 33 var dataresults = processdata(md, data[0],options);34 var data2 = dataresults[0];35 var datatype = dataresults[1];37 let dataResults = processdata(md, data[0],options); 38 let data2 = dataResults[0]; 39 let dataType = dataResults[1]; 36 40 37 // plot unit38 plot_unit(md,data2,data type,options,canvas);41 // Plot unit 42 plot_unit(md,data2,dataType,options,canvas); 39 43 } 40 44 41 //Setup rendering node 42 var node = canvas.nodes.unit; 43 node.options = options; 44 node.alpha = options.getfieldvalue('alpha', 1.0); 45 node.caxis = options.getfieldvalue('caxis'); 46 node.enabled = options.getfieldvalue('nodata', 'off') == 'off'; 47 node.log = options.getfieldvalue('log', false); 45 // Setup rendering node 46 let node = canvas.nodes.unit; 48 47 49 //process data 50 var dataresults; 51 var processedData = []; 52 for (var i in steps) { 53 dataresults = processdata(md, data[i].slice(), options); 54 processedData[i] = dataresults[0]; 48 node.options = options; 49 node.alpha = options.getfieldvalue('alpha', 1.0); 50 node.caxis = options.getfieldvalue('caxis'); 51 node.enabled = options.getfieldvalue('nodata', 'off') === 'off'; 52 node.log = options.getfieldvalue('log', false); 53 54 // Process data 55 let dataResults; 56 let processedData = []; 57 58 for (let i in steps) { 59 dataResults = processdata(md, data[i].slice(), options); 60 processedData[i] = dataResults[0]; 55 61 } 56 62 57 //display movie 58 canvas.unitMovieData = processedData; 59 canvas.animation.frame = 0; 60 canvas.animation.handler = setInterval(function () { 61 //Update current animation frame 62 var frame = canvas.animation.frame; 63 // Display movie 64 canvas.unitMovieData = processedData; 65 canvas.animation.frame = 0; 66 canvas.animation.handler = setInterval(function () { 67 // Update current animation frame 68 let frame = canvas.animation.frame; 69 let numFrames = steps.length; 70 63 71 if (canvas.animation.play) { 64 72 if (canvas.animation.increment) { 65 if (frame >= steps.length- 1) {73 if (frame >= numFrames - 1) { 66 74 if (canvas.animation.loop) { 67 75 frame = 0; 68 } 69 else { 76 } else { 70 77 toggleMoviePlay(canvas); 71 78 } 72 } 73 else { 74 frame = (frame + 1) % steps.length; 79 } else { 80 frame = (frame + 1) % numFrames; 75 81 } 76 82 } 77 83 } 78 84 79 // If frame has changed, update unit node and data marker display.85 // If frame has changed, update unit node and data marker display 80 86 if (frame !== canvas.animation.lastFrame) { 81 87 node.updateBuffer('Coords', processedData[frame]); 82 88 canvas.unitData = processedData[frame]; 89 83 90 if (canvas.graph.enabled) { 84 91 vesl.graph.draw(canvas); 85 92 } 86 if (!vesl.helpers.isEmptyOrUndefined(canvas.playback.slider)) { 87 canvas.playback.slider.val(frame); 93 94 if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls.slider)) { 95 canvas.playbackControls.slider.val(frame); 88 96 } 89 if (!vesl.helpers.isEmptyOrUndefined(canvas.playback.$progressText)) { 90 canvas.playback.$progressText.html(steps[frame].toFixed(0) + " " + options.getfieldvalue("movietimeunit","yr")); 97 98 if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls.progressText)) { 99 canvas.playbackControls.progressText.html(steps[frame].toFixed(0) + ' ' + options.getfieldvalue('movietimeunit', 'yr')); 91 100 } 101 92 102 if (!vesl.helpers.isEmptyOrUndefined(canvas.nodes.quiver)) { 93 plot_quiver(md, options,canvas,false);103 plot_quiver(md, options, canvas, false); 94 104 } 95 105 } 96 106 97 // Save new frame info.98 canvas.animation.lastFrame = canvas.animation.frame;99 canvas.animation.frame = frame;107 // Save new frame info 108 canvas.animation.lastFrame = canvas.animation.frame; 109 canvas.animation.frame = frame; 100 110 }, canvas.animation.interval); 101 111 102 // Update progress bar with new frame info.103 if (!vesl.helpers.isEmptyOrUndefined(canvas.playback .slider)) {104 canvas.playback .slider.val(canvas.animation.frame);105 canvas.playback .slider.setUpperBound(steps.length - 1);112 // Update progress bar with new frame info 113 if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls.slider)) { 114 canvas.playbackControls.slider.val(canvas.animation.frame); 115 canvas.playbackControls.slider.setUpperBound(steps.length - 1); 106 116 } 107 117 108 118 applyoptions(md, [], options, canvas); 109 } 119 }//}}}
Note:
See TracChangeset
for help on using the changeset viewer.