Changeset 23008


Ignore:
Timestamp:
07/25/18 23:33:58 (7 years ago)
Author:
jdquinn
Message:

CHG: Final changes to VESL movie plotting function

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
     1function 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         */
    810
    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) {
    1417                steps[i] = i;
    1518        }
    1619
    17         //calculate caxis
     20        // Calculate caxis
    1821        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]));
    2529                }
    26                 datatype = dataresults[1];
     30
     31                dataType = dataResults[1];
    2732                options.addfielddefault('caxis', range);
    28 
    2933        }
    3034
    31         //Create unit node if it does not already exist
     35        // Create unit node if it does not already exist
    3236        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];
    3640
    37                 //plot unit
    38                 plot_unit(md,data2,datatype,options,canvas);
     41                // Plot unit
     42                plot_unit(md,data2,dataType,options,canvas);
    3943        }
    4044
    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;
    4847
    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];
    5561        }
    5662
    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
    6371                if (canvas.animation.play) {
    6472                        if (canvas.animation.increment) {
    65                                 if (frame >= steps.length - 1) {
     73                                if (frame >= numFrames - 1) {
    6674                                        if (canvas.animation.loop) {
    6775                                                frame = 0;
    68                                         }
    69                                         else {
     76                                        } else {
    7077                                                toggleMoviePlay(canvas);
    7178                                        }
    72                                 }
    73                                 else {
    74                                         frame = (frame + 1) % steps.length;
     79                                } else {
     80                                        frame = (frame + 1) % numFrames;
    7581                                }
    7682                        }
    7783                }
    7884
    79                 //If frame has changed, update unit node and data marker display.
     85                // If frame has changed, update unit node and data marker display
    8086                if (frame !== canvas.animation.lastFrame) {
    8187                        node.updateBuffer('Coords', processedData[frame]);
    8288                        canvas.unitData = processedData[frame];
     89
    8390                        if (canvas.graph.enabled) {
    8491                                vesl.graph.draw(canvas);
    8592                        }
    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);
    8896                        }
    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'));
    91100                        }
     101
    92102                        if (!vesl.helpers.isEmptyOrUndefined(canvas.nodes.quiver)) {
    93                                 plot_quiver(md,options,canvas,false);
     103                                plot_quiver(md, options, canvas, false);
    94104                        }
    95105                }
    96106
    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;
    100110        }, canvas.animation.interval);
    101111
    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);
    106116        }
    107117
    108118        applyoptions(md, [], options, canvas);
    109 } //}}}
     119}//}}}
Note: See TracChangeset for help on using the changeset viewer.