define(function(require, exports, module) {
    var Engine       = require('famous/core/Engine');
    var EventHandler = require('famous/core/EventHandler');
    var EventFilter  = require('famous/events/EventFilter');
    
    Engine.createContext();

    var eventHandlerA = new EventHandler();
    var eventHandlerB = new EventHandler();
   
    var myFilter = new EventFilter(function(type, data) {
        return data && (data.msg === 'ALERT!');
    });

    eventHandlerA.pipe(myFilter).pipe(eventHandlerB);
    eventHandlerB.on('A', function(data){
        alert('piped message: ' + data.msg);
    });

    var currentMsg = 'ALERT!';

    Engine.on('click', function() {
        eventHandlerA.trigger('A', {msg: currentMsg});
        currentMsg = currentMsg === 'ALERT!' ? 'chickenDogStar': 'ALERT!';
    });
});
Esempio n. 2
0
define(function(require, exports, module) {
    var Engine       = require('famous/core/Engine');
    var EventHandler = require('famous/core/EventHandler');
    var EventMapper  = require('famous/events/EventMapper');
   
    var eventHandlerA = new EventHandler();
    var eventHandlerB = new EventHandler();
    var eventHandlerC = new EventHandler();
      
    var myMapper = new EventMapper(function(type, data) {
        return (data && (data.direction === 'x')) ? eventHandlerB : eventHandlerC;
    });

    eventHandlerA.pipe(myMapper);

    eventHandlerB.on('A', function(data){
        alert('B direction : ' + data.direction);
    });
    eventHandlerC.on('A', function(data){
        alert('C direction : ' + data.direction);
    });

    var currentDirection = 'x';
    Engine.on('click', function() {
        eventHandlerA.trigger('A', {direction : currentDirection});
        currentDirection = currentDirection === 'x' ? 'y' : 'x';
    });
});
define(function(require, exports, module) {
    'use strict';
    var RenderNode = require('famous/core/RenderNode');
    var Surface = require('famous/core/Surface');
    var StateModifier = require('famous/modifiers/StateModifier');
    var EventHandler = require('famous/core/EventHandler');

    var node = new RenderNode();

    var eventHandlerA = new EventHandler();
    var eventHandlerB = new EventHandler();

    var surfaceA = new Surface({
        size: [100, 100],
        content: 'A',
        properties: {
            color: 'white',
            textAlign: 'center',
            backgroundColor: '#FA5C4F',
            lineHeight: '100px'
        }
    });
      
    var surfaceB = new Surface({
        size: [100, 100],
        content: 'B',
        properties: {
            color: 'white',
            textAlign: 'center',
            backgroundColor: '#FA5C4F',
            lineHeight: '100px'
        }
    });

    var emitTimes = 0;
    var heardTimes = 0;
    surfaceA.on('click', function() {
      eventHandlerA.emit('hello');
      surfaceA.setContent('said hello ' + ++emitTimes);
    });

    eventHandlerA.pipe(eventHandlerB);

    eventHandlerB.on('hello', function() {
      surfaceB.setContent('heard hello ' + ++heardTimes);
    });
      
    var modifierA = new StateModifier({
        origin: [0.5, 0.5]
    });
    var modifierB = new StateModifier({
        origin: [1, 1]
    });
      
    node.add(modifierA).add(surfaceA);
    node.add(modifierB).add(surfaceB);

    module.exports = node;
});
Esempio n. 4
0
    PageView.prototype.addOne = function(Story) { 
        var that = this;
            
        // console.log('Adding a Game Surface');
        // console.log(Game);

        moment.lang('en', {
            relativeTime : {
                future: "in %s",
                past:   "%s ago",
                s:  "s",
                m:  "m",
                mm: "%dm",
                h:  "1h",
                hh: "%dh",
                d:  "1d",
                dd: "%dd",
                M:  "1m",
                MM: "%dm",
                y:  "1y",
                yy: "%dy"
            }
        });

        var StoryIndex = this.contentScrollView.Views.length;

        // gameContent creation function, created at runtime
        var storyFunc = function(){

            var tmpStory = Story.toJSON();

            // var bgImage = '';
            // if(tmpStory.template_data.bg_pattern){
            //     bgImage = 'url(img/transparenttextures/' + tmpStory.template_data.bg_pattern.toString() + '.png)';
            // }

            return {
                // content: template({
                //     paginator: {
                //         currentPage: that.collection.currentPage + 1,
                //         firstPage: that.collection.firstPage,
                //         totalPages: that.collection.totalPages,
                //         totalResults: that.collection.totalResults
                //     },
                //     story: tmpStory
                // }),
                properties: {
                    backgroundColor: tmpStory.template_data.bg_color,
                    backgroundImage: bgImage,
                    color: tmpStory.template_data.text_color,
                }
            };

        };


        // Chess
        // - Starred by: You + 3 Friends
        // - Media (if it exists, in a grid of 3 max?)

        var clickHandler = new EventHandler();

        var storyView = new View();
        
        // // Size Modifier
        // storyView.SizeModifier = new Modifier({
        //     size: function(){
        //         return [undefined, something...]
        //     }
        // });

        // Spacer
        storyView.TopSpacer = new Surface({
            size: [undefined, 20],
            content: ''
            // classes: ['story-surface-top-default']
        });
        storyView.TopSpacer.pipe(clickHandler);
        that.contentScrollView.Views.push(storyView.TopSpacer);

        // Sport name
        storyView.TopSurface = new Surface({
            size: [undefined, 24],
            content: '<span class="ellipsis-all">' + Story.get('sport_id').name + '</span>',
            classes: ['story-surface-top-default']
        });
        storyView.TopSurface.pipe(clickHandler);
        that.contentScrollView.Views.push(storyView.TopSurface);

        // Winner / 1st place
        var winner_content = '<span class="ellipsis-all">No Winner</span>';
        switch(Story.get('sport_id.result_type')){
            case '1v1':
                // Find the winner
                var winner_id = false;
                _.each(Story.get('player_results'), function(val, key){
                    if(val.result == 'w'){
                        winner_id = key;
                    }
                });
                if(winner_id !== false){
                    winner_content = '<span class="ellipsis-all">Winner: <span data-replace-id="'+winner_id+'" data-replace-model="Player" data-replace-field="Profile.name">&nbsp;</span></span>';
                }
                break;
            case 'free-for-all':
                // Find the winner
                var winner_id = false;
                _.each(Story.get('player_results'), function(val, key){
                    if(parseInt(val.place, 10) == 1){
                        winner_id = key;
                    }
                });
                if(winner_id !== false){
                    winner_content = '<span class="ellipsis-all">Winner: <span data-replace-id="'+winner_id+'" data-replace-model="Player" data-replace-field="Profile.name">&nbsp;</span></span>';
                }
                break;
            default:
                console.error('missing result_type');
                break;

        }
        storyView.WinnerSurface = new Surface({
            size: [undefined, 18],
            content: winner_content,
            classes: ['story-surface-winner-default']
        });
        storyView.WinnerSurface.pipe(clickHandler);
        that.contentScrollView.Views.push(storyView.WinnerSurface);

        // Media layout
        if(Story.get('media').length > 0){
            storyView.MediaGrid = new SequentialLayout({
                direction: 0,
            });
            storyView.MediaGrid.getSize = function(){
                return [undefined, 100];
            };
            storyView.MediaGrid.Views = [];
            _.each(Story.get('media'), function(tmpMedia){
                if(tmpMedia.assembled !== true || !tmpMedia.urls){
                    // skip until assembled
                    return;
                }
                var tmpView = new ImageSurface({
                    content: tmpMedia.urls.thumb100x100,
                    size: [100,100]
                });
                tmpView.pipe(clickHandler);
                tmpView.on('click', function(e){

                    // Ask what they want to do
                    App.Cache.OptionModal = {
                        list: [
                            {
                                text: 'View Image',
                                value: 'view'
                            },
                            {
                                text: 'View Game',
                                value: 'game'
                            }
                        ],
                        on_choose: function(chosen_type){
                            // that.PlayerFilterChanger.Data = chosen_type.value;

                            switch(chosen_type.value){
                                case 'view':
                                    window.open(Media.get('urls.original'), '_system');
                                    break;
                                case 'game':
                                    App.history.navigate('game/' + Media.get('game_id'));
                                    // window.plugins.socialsharing.share('',null,media.urls.original,'www.nemesisapp.net/game/public/' + Story.get('_id'));
                                    break;
                                default:
                                    break;
                            }

                        },
                        on_cancel: function(){
                            // App.history.navigate(that.previousPage);
                            // debugger;
                        },
                        // title: '',
                        back_to_default_hint: false
                    };


                    e.dontbubble = true;

                    // Navigate
                    App.history.navigate('modal/list', {history: false});

                    return false;
                });

                storyView.MediaGrid.Views.push(tmpView);

            });
            storyView.MediaGrid.sequenceFrom(storyView.MediaGrid.Views);
            that.contentScrollView.Views.push(storyView.MediaGrid);
        }
        // storyView.MediaGrid.pipe(clickHandler);
        



        clickHandler.pipe(that.contentScrollView);
        clickHandler.on('click', function(e){
            // visit game
            if(e.dontbubble){
                return;
            }
            App.history.navigate('game/' + Story.get('_id'));
        });

        Utils.dataModelReplaceOnSurface(storyView.WinnerSurface);

        // this.contentScrollView.Views.push(storyView);
        this.collection.infiniteResults += 1;

        // if(!this.contentScrollView.isSeq){
            // this.contentScrollView.isSeq = true;
            this.contentScrollView.sequenceFrom(this.contentScrollView.Views);
        // }

    };
var EventHandler = require('famous/core/EventHandler');

var mainContext = Engine.createContext();

var surfaceA, surfaceB;
createSurfaces();

var eventHandlerA = new EventHandler();
var eventHandlerB = new EventHandler();

surfaceA.on('click', function() {
	eventHandlerA.emit('hello');
	surfaceA.setContent('said hello');
});

eventHandlerA.pipe(eventHandlerB);

eventHandlerB.on('hello', function() {
	surfaceB.setContent('heard hello');
});

function createSurfaces() {
	surfaceA = new Surface({
		size: [100, 100],
		content: 'A<br>click me to say hello',
		properties: {
			color: 'white',
			textAlign: 'center',
			backgroundColor: '#FA5C4F'
		}
	});
Esempio n. 6
0
    function PlaylistView() {
        View.apply(this, arguments);

        eventHandler.pipe(this);
        
        this.currentlySelectedIndex = 0;
        this.currentlyPlayingIndex = 0;

        this.rootContainer = new ScrollContainer({
            scrollview: {
                direction: 1,
                //edgeGrip: 1,
                //edgeDamp: 1,
                //speedLimit: 0.5,
                //friction: 1,
                //drag: 5
            }
        });

        this.on("prevSelect", function() {
            if(this.currentlySelectedIndex > 0) {
                this.currentlySelectedIndex--;
                this._eventOutput.emit("select", this.currentlySelectedIndex);
            }
        });
        this.on("nextSelect", function() {
            if(this.currentlySelectedIndex < playlistItems.length - 1) {
                this.currentlySelectedIndex++;
                this._eventOutput.emit("select", this.currentlySelectedIndex);
            }
        });
        this.on("prevPlay", function() {
            this.currentlyPlayingIndex = this.currentlySelectedIndex;
            this._eventOutput.emit("play", this.currentlyPlayingIndex);
        });
        this.on("nextPlay", function() {
            this.currentlyPlayingIndex = this.currentlySelectedIndex;
            this._eventOutput.emit("play", this.currentlyPlayingIndex);
        });

        this.on("select", function(index) {
            this.currentlySelectedIndex = index;

            for(var i = 0; i < playlistItems.length; i++) {
                if(i == index) {
                    playlistItems[i]._child._child._object.setProperties(this.options.selectedProperties);
                } else {
                    playlistItems[i]._child._child._object.setProperties(this.options.defaultProperties);
                    playlistItems[this.currentlyPlayingIndex]._child._child._object.setProperties(this.options.playingProperties);
                }
            }
        });

        this.on("play", function(index) {
            this.currentlyPlayingIndex = index;

            for(var i = 0; i < playlistItems.length; i++) {
                if(i == index) {
                    playlistItems[i]._child._child._object.setProperties(this.options.playingProperties);
                } else {
                    playlistItems[i]._child._child._object.setProperties(this.options.defaultProperties);
                }
            }
        });

        _construct.call(this);

        this.rootContainer.on("dragover", function(event) {
            event.preventDefault();

        });

        this.rootContainer.on("drop", function(event) {
            event.preventDefault();
            var data = event.dataTransfer.getData("Text");

            eventHandler.emit("playlistEntryAdded", data)

        });

        this.rootContainer.sequenceFrom(playlistItems);
        this.add(this.rootContainer);

    }