~helioviewer/helioviewer.org/1.0

« back to all changes in this revision

Viewing changes to lib/helioviewer/MovieBuilderOld.js

  • Committer: V. Keith Hughitt
  • Date: 2009-07-30 13:13:26 UTC
  • mfrom: (233.1.59 helioviewer)
  • Revision ID: hughitt1@kore-20090730131326-69sq8n2z24748la5
2009/07/30 post-merge save

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**
2
 
 * @fileoverview Contains the definition of a class for generating and displaying movies.
3
 
 * @author <a href="mailto:vincent.k.hughitt@nasa.gov">Keith Hughitt</a>
4
 
 *
5
 
 */
6
 
/*global MoviesBuilder, Class, UIElement, Event, document, window, Shadowbox, getOS, Ajax */
7
 
//TODO: pass in bit-rate depending upon codec chosen! Xvid?
8
 
 
9
 
var MovieBuilder = Class.create(UIElement, 
10
 
        /** @lends MovieBuilder.prototype */
11
 
        {
12
 
        /**
13
 
         * @description Default MovieBuilder options
14
 
         */
15
 
        defaultOptions: {
16
 
                active      : false,
17
 
                url         : "api/index.php",
18
 
                minZoomLevel: 13, //can relax for single layer movies...
19
 
                numFrames   : 40,
20
 
                frameRate   : 8,
21
 
                sharpen     : false,
22
 
                edgeEnhance : false,
23
 
                format      : {win: "asf", mac: "mov", linux: "mp4"}
24
 
        },
25
 
 
26
 
        /**
27
 
     * @constructs
28
 
     * @description Creates a new MovieBuilder
29
 
     * @param {Object} options Custom MovieBuilder options
30
 
     */
31
 
    initialize: function (options) {
32
 
                Object.extend(this, this.defaultOptions);
33
 
                Object.extend(this, options);
34
 
 
35
 
        var self = this;
36
 
 
37
 
        //Quick Movie Event Handler
38
 
                Event.observe(this.id, 'click', function () {
39
 
                        if (!self.active) {
40
 
                                var hv = self.controller,
41
 
                                        hqFormat, displayRange, xhr;
42
 
        
43
 
                                self.active = true;
44
 
                                
45
 
                                // Chose an optimal codec based on User's OS
46
 
                                hqFormat = self.format[getOS()];
47
 
                                
48
 
                                // Get range of tiles to use
49
 
                                displayRange = hv.viewport.displayRange();
50
 
        
51
 
                                //Ajax Request
52
 
                                xhr = new Ajax.Request(self.url, {
53
 
                                        method: 'POST',
54
 
                                        parameters: {
55
 
                                                action:    "buildQuickMovie",
56
 
                                layers:    "SOHEITEIT304,SOHLAS0C20WL",
57
 
                                startDate: hv.date.getTime() / 1000,
58
 
                                zoomLevel: hv.viewport.zoomLevel, //Math.max(hv.viewport.zoomLevel, self.minZoomLevel),
59
 
                                numFrames: self.numFrames,
60
 
                                frameRate: self.frameRate,
61
 
                                edges:     self.edgeEnhance,
62
 
                                sharpen:   self.sharpen,
63
 
                                format:    hqFormat,
64
 
                                xRange:    displayRange.xStart + ", " + displayRange.xEnd,
65
 
                                                yRange:    displayRange.yStart + ", " + displayRange.yEnd
66
 
                                        },
67
 
                                        onComplete: function (transport) {
68
 
                                                // Let user know that video is read
69
 
                                                var linkId = self.controller.messageConsole.link('', 'Quick-Video ready! Click here to start watching.');
70
 
                                                
71
 
                                                self.active = false;
72
 
        
73
 
                                                Event.observe(linkId, 'click', function () {
74
 
                                                        Shadowbox.open({
75
 
                                                        player:  'iframe',
76
 
                                                        title:   'Helioviewer Movie Player',
77
 
                                                        height:   650,
78
 
                                                        width:    550,
79
 
                                                        content: self.url + '?action=playMovie&format=' + hqFormat + '&url=' + transport.responseJSON
80
 
                                                        });
81
 
                                                });
82
 
                                        }
83
 
                                });
84
 
                        }
85
 
                });
86
 
    }
87
 
});