Example #1
0
define(function(requires,exports,module){
    var Engine = require("famous/core/Engine");
    var Surface = require("famous/core/Surface");
    var GridLayout = require("famous/views/GridLayout");

    var mainContext = Engine.createContext();

    var grid = new GridLayout({
        dimensions: [4, 2]
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    for(var i = 0; i < 50; i++) {
        surfaces.push(new Surface({
            content: "panel " + (i + 1),
            size: [undefined, undefined],
            properties: {
                backgroundColor: "hsl(" + (i * 360 / 50) + ", 100%, 50%)",
                color: "#404040",
                lineHeight: '200px',
                textAlign: 'center'
            }
        }));
    }

    mainContext.add(grid);
});
Example #2
0
function createGrid( section, dimensions ) {
	var grid = new GridLayout({
		dimensions: dimensions
	});

	var views = [];
	grid.sequenceFrom(views);

	for(var i = 0; i < 8; i++) {
		var view = new View();

		var centerModifier = new Modifier({
			origin: [0.5, 0.5]
		});

		var surface = new Surface({
			content: section + ' ' + (i + 1),
			size: [100, 100],
			classes: ['red-bg'],
			properties: {
				color: 'white',
				textAlign: 'center',
				lineHeight: '100px'
			},
		});

		view.add(centerModifier).add(surface);

		views.push(view);
	}

	return grid;
}
Example #3
0
define(function(require, exports, module) {
    var Engine     = require("famous/core/Engine");
    var Surface    = require("famous/core/Surface");
    var Modifier   = require("famous/core/Modifier");
    var GridLayout = require("famous/views/GridLayout");

    var mainContext = Engine.createContext();

    var grid = new GridLayout({
        dimensions: [4, 2]
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    for(var i = 0; i < 8; i++) {
        surfaces.push(new Surface({
            content: "I am panel " + (i + 1),
            size: [undefined, 100],
            properties: {
                backgroundColor: "hsl(" + (i * 360 / 8) + ", 100%, 50%)",
                color: "black",
                lineHeight: '100px',
                textAlign: 'center'
            }
        }));
    }

    mainContext.add(new Modifier({
        size: [400, 200],
        origin: [.5, .5],
        align: [.5, .5]
    })).add(grid);
});
Example #4
0
	function _createBody() {
		var grid = new GridLayout({
			dimensions: [3, 2]
		});

		var gridView = [];
		grid.sequenceFrom(gridView);

		imgObject = {
			1: './assets/pic1.jpg',
			2: './assets/pic2.jpg',
			3: './assets/pic3.jpg',
			4: './assets/pic4.jpg',
			5: './assets/pic5.jpg',
			6: './assets/pic6.jpg'
		};

		for(var i = 1; i < 8; i++) {
			this.gridBox = new Surface({
	  		// content: imgObject[1+i],
	  		content: i,
	  		size: [undefined, undefined],
	  		properties: {
	  			backgroundImage: 'url('+	imgObject[i] + ')',
	  			backgroundRepeat: 'no-repeat',
	  			backgroundSize: '100% 100%',
	  			// backgroundColor: "hsl(" + (i * 300 / 6) + ","+ (i * 10) + "%, "+ (i * 18) +"%)",
	  			color: "#404040",
	  			lineHeight: '200px',
	  			textAlign: 'center',
	  			class: i
	  		}
	  	});

	  	gridView.push(this.gridBox);
	  }

	  function _setListeners() {
		  for(var i = 0; i < gridView.length; i++) {
		  	var holder = gridView[i];
		  	// console.log(gridView[i]);
		  	function _listening() {
		  		this.on('click', function() {
		  		  this.eventHandler.downstream.push('flipBoard');
		  			console.log(this.content);
		  		}.bind(this))
		  	};
		  	_listening.call(holder);
		  }
	  }
	  console.log(gridView);
	  _setListeners.call(this);

	  // this.contentModifier = new Modifier({
	  // 	transform: Transform.translate(0, this.options.screenHeight, 50)
	  // });
this.layout.content.add(grid);
}
define(function(require) {
    'use strict';

    // import dependencies
    var Engine = require('famous/core/Engine');
    var Surface = require('famous/core/Surface');
    var Modifier = require('famous/core/Modifier');
    var RenderNode = require('famous/core/RenderNode');
    var GridLayout = require('famous/views/GridLayout');
    var BkImageSurface = require('famous-bkimagesurface');

    // create the main context
    var mainContext = Engine.createContext();

    // Create grid-layout
    var renderables = [];
    var grid = new GridLayout({
        dimensions: [4, 3]
    });
    grid.sequenceFrom(renderables);

    // Demo sizing-modes
    var url = 'images/earth.png';
    var sizeMode;
    for (sizeMode in BkImageSurface.SizeMode) {
        var bkImage = new BkImageSurface({
            content: url,
            sizeMode: BkImageSurface.SizeMode[sizeMode],
            properties: {
                backgroundColor: 'black'
            }
        });

        var text = new Surface({
            content: 'SizeMode.' + sizeMode,
            properties: {
                color: 'white',
                padding: '10px',
                textShadow: '0px 1px 2px rgba(0, 0, 0, 1)'
            }
        });

        var modifier = new Modifier();
        var renderNode = new RenderNode(modifier);
        renderNode.add(bkImage);
        renderNode.add(text);
        renderables.push(renderNode);
    }

    mainContext.add(grid);
});
Example #6
0
    function _createButtons(draggable) {        
        var grid = new GridLayout({
            dimensions: [this.options.cols, this.options.rows],
            gutterSize: [5, 5]
        });

        var tools = [];
        grid.sequenceFrom(tools);

        var menuEvent = function() {
            this.menu.current = this.content;
            this.menu._eventOutput.emit('menu');
        };

        for (var i = 0; i < this.icons.length; i++) {
            var toolView = new ToolView();
            toolView.tool.setOptions({
                content: this.icons[i],
                properties: {
                    backgroundColor: 'pink',
                    lineHeight: '60px',
                    textAlign: 'center',
                    fontSize: '40px',
                    cursor: 'pointer'
                }
            });

            toolView.tool.menu = this;

            toolView.tool.on('click', menuEvent);

            tools.push(toolView.tool);
        }

        var gridModifier = new StateModifier({
            size: [this.options.spacing * this.options.cols, 
                   this.options.spacing * this.options.rows],
            origin: [0.5, 0],
            align: [0.5, 0.12],
            transform: Transform.translate(0, 0, 1),
            properties: {
                zIndex: 1
            }
        });

        draggable.subscribe(grid);

        this.add(draggable).add(gridModifier).add(grid);
    }
 QuadrantikView.prototype.sequenceFrom = function (sequence) {
     var grid = new GridLayout({
         dimensions: [2, 2],
         transition: { duration: 1000, curve: 'easeInOut' }
     });
     if (sequence instanceof Array) {
         grid.sequenceFrom(sequence);
         this.panels = sequence;
     };
     this.mod = new StateModifier({
         size: [this._WIDTH * 2, this._HEIGHT * 2],
         origin: [.5, .5]
     });
     this.add(this.mod).add(grid);
 };
Example #8
0
define(function(require, exports, module) {
  var Engine = require("famous/core/Engine");
  var Surface = require("famous/core/Surface");
  var Modifier = require("famous/core/Modifier")
  var GridLayout = require("famous/views/GridLayout");
  var View = require('famous/core/View');
  var ImageSurface = require("famous/surfaces/ImageSurface")

  var mainContext = Engine.createContext();
  var contextSize = window.innerWidth / 6;
  
  var grid = new GridLayout({
   dimensions: [2, 1]
  });

  var surfaces = [_createLeft(),_createRight()];
  grid.sequenceFrom(surfaces);

  function _createLeft(){
    var view = new View()
    var leftMod = new Modifier({
      origin: [0.5,0.5]
    })
    var surface = new ImageSurface({
      size: [contextSize,contextSize],
      content: './2.png'
    })
    view.add(leftMod).add(surface)
    return view
  }
  
  function _createRight(){
    var view = new View()
    var rightMod = new Modifier({
      origin: [0.5,0.5]
    })
    var surface = new ImageSurface({
      size: [contextSize,contextSize],
      content: './2.png'
    })
    view.add(rightMod).add(surface)
    return view
  }  

  mainContext.add(grid);
  console.log(contextSize);
});
Example #9
0
  function _createAuthors () {

    var amar, joe;

    var grid = new GridLayout({
      dimensions: [2, 1]
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);
    // If the window width is less than 800 px use this layout (target mobile phone)
    if (window.innerWidth < 800) {
      // used html for contents on the surface
      amar = new Surface({
        content: '<br/><h2>Amar Patel</h2><center><img width="85%" src="content/images/amar.png"/></center><span display="inline-block"><a href="http://www.github.com/amarpatel"><img width="20%" src="https://assets-cdn.github.com/images/modules/logos_page/Octocat.png"/></a>  <a href="http://www.linkedin.com/in/amarmpatel"><img width="20%" src="http://press.linkedin.com/display-media/206/4"/></a></span><br/><a color="#000" href="http://www.amarpatel.io/">amarpatel.io</a>',
        size: [undefined, undefined],
        properties: this.options.bioProps
      });

      amar.setProperties({borderRight: '1px solid lightgrey'});

      joe = new Surface({
        content: '<br/><h2>Joe Dou</h2><center><img width="85%" src="content/images/joe.png"/></center><span display="inline-block"><a href="http://www.github.com/joedou"><img width="20%" src="https://assets-cdn.github.com/images/modules/logos_page/Octocat.png"/></a>  <a href="http://www.linkedin.com/in/joedou"><img width="20%" src="http://press.linkedin.com/display-media/206/4"/></a></span><br/><a color="#000" href="http://www.whatwouldjoedou.com/">whatwouldjoedou.com</a>',
        size: [undefined, undefined],
        properties: this.options.bioProps
      });
    } else { // If the window width is greater than 800 px use this layout (target desktop)
      amar = new Surface({
        content: '<br/><h2>Amar Patel</h2><center><img width="25%" src="content/images/amar.png"/></center><br/><br/><br/><span display="inline-block"><a href="http://www.github.com/amarpatel"><img width="6%" src="https://assets-cdn.github.com/images/modules/logos_page/Octocat.png"/></a>  <a href="http://www.linkedin.com/in/amarmpatel"><img width="5%" src="http://press.linkedin.com/display-media/206/4"/></a></span><br/><a color="#000" href="http://www.amarpatel.io/">amarpatel.io</a>',
        size: [undefined, undefined],
        properties: this.options.bioProps
      });

      amar.setProperties({borderRight: '1px solid lightgrey'});

      joe = new Surface({
        content: '<br/><h2>Joe Dou</h2><center><img width="25%" src="content/images/joe.png"/></center><br/><br/><br/><span display="inline-block"><a href="http://www.github.com/joedou"><img width="6%" src="https://assets-cdn.github.com/images/modules/logos_page/Octocat.png"/></a>  <a href="http://www.linkedin.com/in/joedou"><img width="5%" src="http://press.linkedin.com/display-media/206/4"/></a></span><br/><a color="#000" href="http://www.whatwouldjoedou.com/">whatwouldjoedou.com</a>',
        size: [undefined, undefined],
        properties: this.options.bioProps
      });
    }

    surfaces.push(amar, joe);

    this.add(grid);
  }
Example #10
0
	function _createGrid() {
		var grid = new GridLayout({
			dimensions: this.options
		});

		var gridSurfaces = [];
		grid.sequenceFrom(gridSurfaces);

		for(var i = 0; i < 8; i++) {
			gridSurfaces.push(new Surface({
				content: "panel " + (i + 1),
				size: [undefined, undefined],
				properties: {
					backgroundColor: "hsl(" + (i * 360 / 8) + ", 100%, 50%)",
					color: "#404040",
					lineHeight: '200px',
					textAlign: 'center'
				}
			}));
		}
	}
function ContentView() {
    View.apply(this, arguments);

    var data = this.options.data;

    var contentLayout = new GridLayout({
        dimensions: [1, data.length],
    });
    var contentSurfaces = data.map(function(d, idx) {
        return new Surface({
            content: '<a href="'+d.url+'">'+d.title+'</a>',
            size: [undefined, 60],
            properties: {
                backgroundColor: '#fce',
                border: '2px solid hsl('+(360 * idx / data.length)+', 50%, 50%)'
            },
        });
    });
    contentLayout.sequenceFrom(contentSurfaces);

    this.add(contentLayout);
}
Example #12
0
define(function(require, exports, module) {
    var Engine     = require("famous/core/Engine");
    var Surface    = require("famous/core/Surface");
    var GridLayout = require("famous/views/GridLayout");

    var mainContext = Engine.createContext();

    var contextSize = mainContext.getSize();

    var dimensions;

    if (contextSize[0] < 480 || contextSize[1] < 480) {
        dimensions = [2,8];
    } else {
        dimensions = [8,2];
    };
    
    var grid = new GridLayout({
        dimensions: dimensions
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    for(var i = 0; i < 8; i++) {
        surfaces.push(new Surface({
            content: "I am panel " + (i + 1),
            size: [undefined, undefined],
            properties: {
                backgroundColor: "hsl(" + (i * 360 / 8) + ", 100%, 50%)",
                color: "black",
                lineHeight: window.innerHeight / 2 + 'px',
                textAlign: 'center'
            }
        }));
    }

    mainContext.add(grid);
});
    function createMangaSelector()
    {
        var malList;

        var sectionDisplaying = 1;
        var reading = [];
        var completed = [];
        var onHold = [];
        var dropped = [];
        var planToRead = [];

        var view = new View();

        var headerHeight = 100;
        var footerHeight = 25;
        var layout = new HeaderFooterLayout();
        view.add(layout);

        var headerFooterColor = window.colorScheme.main;

        layout.header.add(Surface({
            properties: {
                backgroundColor: headerFooterColor
            }
        }));
        var date = new Date();
        var logoSizer = new StateModifier();
        var logo = new ImageSurface({
            content: 'content/images/AnimeflixLogo.png?' + date.getTime()
        });
        layout.header.add(logoSizer).add(logo);
        //#region Footer
        layout.footer.add(Surface({
            properties: {
                backgroundColor: headerFooterColor
            }
        }));

        var footerElements = [];
        var footerGrid = new GridLayout({
            size: [undefined, footerHeight],
            dimensions: [4, 1]
        });
        footerGrid.sequenceFrom(footerElements);
        layout.footer.add(footerGrid);

        var byRichard = Surface({
            content: 'By Richard Kopelow',
            properties: {
                size: [undefined, footerHeight],
                color: 'white',
                textAlign: 'center',
                verticalAlign: 'middle'
            }
        });
        footerElements.push(byRichard);
        var supportContact = Surface({
            content: '<a href="mailto:support@anime-flix.com">support@anime-flix.com</a>',
            properties: {
                size: [undefined, footerHeight],
                color: 'white',
                textAlign: 'center',
                verticalAlign: 'middle',
            }
        });
        footerElements.push(supportContact);
        var featuresContact = Surface({
            content: '<a href="mailto:features@anime-flix.com?subject=Feature Request">features@anime-flix.com</a>',
            properties: {
                size: [undefined, footerHeight],
                color: 'white',
                textAlign: 'center',
                verticalAlign: 'middle',
            }
        });
        footerElements.push(featuresContact);

        var FAQButton = Surface({
            content: 'FAQ',
            properties: {
                size: [undefined, footerHeight],
                color: 'white',
                textAlign: 'center',
                verticalAlign: 'middle',
            }
        });
        FAQButton.on('click', function ()
        {
            view._eventOutput.emit('showFAQ');
        });
        footerElements.push(FAQButton);
        //#region IP Adress
        /*
         var ipAddress = Surface({
         properties: {
         size: [undefined, footerHeight],
         color: 'white',
         textAlign: 'center',
         verticalAlign: 'middle',
         }
         });
         footerElements.push(ipAddress);
         
         var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
         
         var configuration = { "iceServers": [] };
         var pc;
         var localIP;
         
         if (RTCPeerConnection)
         {
         
         pc = new RTCPeerConnection(configuration);
         pc.createDataChannel('', { reliable: false });
         pc.onicecandidate = function (evt)
         {
         if (evt.candidate)
         {
         if (!localIP)
         {
         localIP = getIpFromString(evt.candidate.candidate);
         ipAddress.setContent('IP Address: ' + localIP);
         }
         }
         };
         
         pc.createOffer(function (offerDesc)
         {;
         pc.setLocalDescription(offerDesc);
         }, function (e) { console.warn("offer failed", e); });
         
         function getIpFromString(a)
         {
         var r = a.match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/);
         return r[0];
         }
         
         } else
         {
         //browser doesn't support webrtc   
         }
         */
        //#endregion
        //#endregion

        var buttonProps = {
            textAlign: 'center',
            verticalAlign: 'middle',
            color: 'white'
        };

        var buttonColorEvents = new EventHandler();
        /*
         buttonColorEvents.on('mouseover', function (button)
         {
         button.currentTarget.style.color = 'black';
         button.currentTarget.style.backgroundColor = 'white';
         });
         buttonColorEvents.on('mouseout', function (button)
         {
         button.currentTarget.style.color = 'white';
         button.currentTarget.style.backgroundColor = headerFooterColor;
         });
         */
        var logoutButtonTransform = new StateModifier({
            origin: [1, 0],
            align: [1, 0],
            transform: Transform.translate(-5, -5, 10)
        });
        var logoutButton = Surface({
            size: [100, 40],
            content: 'Logout',
            properties: buttonProps
        });
        logoutButton.on('click', function ()
        {
            sessionStorage.username = undefined;
            sessionStorage.password = undefined;
            localStorage.Gamma=undefined;
            localStorage.Epsilon=undefined;
            location.hash = '';
            location.reload();
        });
        logoutButton.pipe(buttonColorEvents);
        layout.header.add(logoutButtonTransform).add(logoutButton);

        var spinButtonTransform = new StateModifier({
            origin: [1, 0],
            align: [1, 0],
            transform: Transform.translate(-180, -5, 1)
        });
        var spinButton = Surface({
            size: [200, 40],
            content: 'Anime',
            properties: buttonProps
        });
        spinButton.on('click', function ()
        {
            view._eventOutput.emit('spin');
        });
        spinButton.pipe(buttonColorEvents);
        layout.header.add(spinButtonTransform).add(spinButton);

        var gridHeight = headerHeight / 2;
        var gridTransform = new StateModifier();

        var grid = new GridLayout({
            dimensions: [6, 1]
        });

        layout.header.add(gridTransform).add(grid);
        //#region Catagory Buttons
        var buttons = [];
        grid.sequenceFrom(buttons);

        var readingButton = Surface({
            size: [undefined, gridHeight],
            content: 'Reading',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(readingButton);
        buttons.push(buttonView);
        readingButton.on('click', function ()
        {
            if(sectionDisplaying!=1)
            {
                lightbox.show(readingIconView);
            }
            sectionDisplaying = 1;
            window.location.hash = 'mdisplay&1';
        });
        readingButton.pipe(buttonColorEvents);

        var completedButton = Surface({
            size: [undefined, gridHeight],
            content: 'Completed',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(completedButton);
        buttons.push(buttonView);
        completedButton.on('click', function ()
        {
            if(sectionDisplaying!=2) {
                lightbox.show(completedIconView);
            }
            sectionDisplaying = 2;
            window.location.hash = 'mdisplay&2';
        });
        completedButton.pipe(buttonColorEvents);

        var onHoldButton = Surface({
            size: [undefined, gridHeight],
            content: 'On-Hold',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(onHoldButton);
        buttons.push(buttonView);
        onHoldButton.on('click', function ()
        {
            if(sectionDisplaying!=3)
            {
                lightbox.show(onHoldIconView);
            }
            sectionDisplaying = 3;
            window.location.hash = 'mdisplay&3';
        });
        onHoldButton.pipe(buttonColorEvents);

        var droppedButton = Surface({
            size: [undefined, gridHeight],
            content: 'Dropped',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(droppedButton);
        buttons.push(buttonView);
        droppedButton.on('click', function ()
        {
            if(sectionDisplaying!=4)
            {
                lightbox.show(droppedIconView);
            }
            sectionDisplaying = 4;
            window.location.hash = 'mdisplay&4';
        });
        droppedButton.pipe(buttonColorEvents);

        var planToReadButton = Surface({
            size: [undefined, gridHeight],
            content: 'Plan To Read',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(planToReadButton);
        buttons.push(buttonView);
        planToReadButton.on('click', function ()
        {
            if(sectionDisplaying!=6)
            {
                lightbox.show(planToReadIconView);
            }
            sectionDisplaying = 6;
            window.location.hash = 'mdisplay&6';
        });
        planToReadButton.pipe(buttonColorEvents);

        var searchButton = Surface({
            size: [undefined, gridHeight],
            content: 'Search',
            properties: buttonProps
        });
        var buttonView = new View();
        buttonView.add(searchButton);
        buttons.push(buttonView);
        searchButton.on('click', function ()
        {
            if(sectionDisplaying!=7)
            {
                lightbox.show(searchView);
            }
            sectionDisplaying = 7;
            window.location.hash = 'mdisplay&7';
        });
        searchButton.pipe(buttonColorEvents);
        //#endregion

        //#region Series Display
        var seriesDisplayTransform = new StateModifier({
            transform: Transform.translate(0, 0, 15)
        });
        var seriesDisplay = SeriesDisplay();
        view.add(seriesDisplayTransform).add(seriesDisplay);
        seriesDisplay.on('showSelected', function (data) {
            view._eventOutput.emit('showSelected', data);
        });
        seriesDisplay.on('mangaSelected', function (data) {
            view._eventOutput.emit('mangaSelected', data);
        });
        seriesDisplay.on('refreshList', function ()
        {
            view.refreshList();
        });
        //#endregion

        view.resize = function ()
        {
            seriesDisplay.resize();
            seriesDisplay.updatePosition();
            readingButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            completedButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            onHoldButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            droppedButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            planToReadButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            searchButton.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
            logoutButton.setOptions({
                size: [window.formatting.scale * 100, window.formatting.scale * gridHeight]
                });
            spinButton.setOptions({
                size: [window.formatting.scale * 200, window.formatting.scale * gridHeight]
                });
            readingButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            completedButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            onHoldButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            droppedButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            planToReadButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            searchButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            logoutButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            spinButton.setProperties({
                fontSize: window.formatting.scale * 20 + 'px'});
            byRichard.setProperties({
                fontSize: window.formatting.scale * 14 + 'px'});
            supportContact.setProperties({
                fontSize: window.formatting.scale * 14 + 'px'});
            featuresContact.setProperties({
                fontSize: window.formatting.scale * 14 + 'px'});
            FAQButton.setProperties({
                fontSize: window.formatting.scale * 14 + 'px'});
            //ipAddress.setProperties({ fontSize: window.formatting.scale * 14 + 'px' });
            layout.setOptions({
                headerSize: window.formatting.scale * headerHeight,
                footerSize: window.formatting.scale * footerHeight
            });
            logoSizer.setSize([true, window.formatting.scale * 50]);
            //logo.setProperties({ 'height': window.formatting.scale * 50 +'px'});
            gridTransform.setTransform(Transform.translate(0, window.formatting.scale * (headerHeight - gridHeight), 1));
            grid.setOptions({
                size: [undefined, window.formatting.scale * gridHeight]});
        }

        //#region Background
        var background = Surface({
            properties: {
                backgroundColor: window.colorScheme.background,
            }
        });
        layout.content.add(background);
        //#endregion

        //#region Lightbox
        var screenWidth = window.mainContext.getSize()[0];

        var lightboxTransform = new StateModifier({
            transform: Transform.translate(0, 0, 1)
        });
        var lightbox = new Lightbox({
            inOpacity: 1,
            outOpacity: 1,
            inTransform: Transform.translate(screenWidth, 0, 1),
            outTransform: Transform.translate(-1 * screenWidth, 0, 1),
            inTransition: {duration: 1000, curve: Easing.outBack},
            outTransition: {duration: 1000, curve: Easing.easeOut}
        });
        //#endregion
        function searchShowWithID(title, id, callback)
        {
            searchMALAsync(title,'manga', function (obj)
            {
                if(obj.entry.length == undefined)
                {
                    callback(obj.entry);
                }
                else
                {
                    for(var i = 0; i < obj.entry.length; i++)
                    {
                        if(obj.entry[i].id == id)
                        {
                            callback(obj.entry[i]);
                        }
                    }
                }
            });
        }

        function createBlankListData()
        {
            var date = new Date();
            return {
                series_mangadb_id: 0,
                series_title: "",
                series_type: 1,
                series_chapters: 0,
                series_status: 0,
                series_start: '0000-00-00',
                series_end: '0000-00-00',
                my_id: 0,
                my_read_chapters: 0,
                my_start_date: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(),
                my_finish_date: '000-00-00',
                my_score: 0,
                my_status: 6,
                my_rereading: 0,
                my_rereadingg_ep: 0,
                my_last_updated: 0
            };
        }
        function createListDataFromSearchData(data)
        {
            var baseData = createBlankListData();
            baseData.series_mangadb_id = data.id;
            baseData.series_title = data.title;
            baseData.series_image = data.image;
            baseData.series_status=data.status=='Publishing'?1:0;
            baseData.series_start = data.start_date;
            baseData.series_end = data.end_date;
            baseData.series_chapters = data.chapters;
            baseData.series_synonyms = data.synonyms + '; ' + data.english;
            baseData.localConstruction = true;
            return baseData;
        }

        function showSelectedPassThrough(data)
        {
            searchShowWithID(data.series_title, data.series_mangadb_id, function (obj)
            {
                var series = {listData: data, searchData: obj};
                seriesDisplay.setSeries(series);
                seriesDisplay.show();
            });
            //view._eventOutput.emit('showSelected',data);
        }

        var readingIconView = IconView();
        readingIconView.on('iconClick', showSelectedPassThrough);
        var completedIconView = IconView();
        completedIconView.on('iconClick', showSelectedPassThrough);
        var onHoldIconView = IconView();
        onHoldIconView.on('iconClick', showSelectedPassThrough);
        var droppedIconView = IconView();
        droppedIconView.on('iconClick', showSelectedPassThrough);
        var planToReadIconView = IconView();
        planToReadIconView.on('iconClick', showSelectedPassThrough);
        var searchView = SearchView('manga');
        searchView.on('searchSeriesSelected', function (data)
        {
            var listData;
            var bail = false;
            for(var i = 0; i < malList.manga.length && !bail; i++)
            {
                if(data.id == malList.manga[i].series_mangadb_id)
                {
                    listData = malList.manga[i];
                    bail = true;
                }
            }
            if(listData == undefined)
            {
                listData = createListDataFromSearchData(data);
            }
            var series = {listData: listData, searchData: data};
            seriesDisplay.setSeries(series);
            seriesDisplay.show();
        });

        layout.content.add(lightboxTransform).add(lightbox);

        function sortMALList()
        {
            reading = [];
            completed = [];
            onHold = [];
            dropped = [];
            planToRead = [];
            malList.manga.forEach(function (manga) {
                switch(manga.my_status)
                {
                    case '1':
                        reading.push(manga);
                        break;
                    case '2':
                        completed.push(manga);
                        break;
                    case '3':
                        onHold.push(manga);
                        break;
                    case '4':
                        dropped.push(manga);
                        break;
                    case '6':
                        planToRead.push(manga);
                        break;
                }
            });
        }

        view.refreshList = function ()
        {
            malList=getMALList(true);
            sortMALList();
            readingIconView.populate(reading);
            completedIconView.populate(completed);
            onHoldIconView.populate(onHold);
            droppedIconView.populate(dropped);
            planToReadIconView.populate(planToRead);

            //lightbox.show(readingIconView);
        }

        view.selectShowById = function (id)
        {
            for(var i = 0; i < malList.manga.length; i++)
            {
                if(malList.manga[i].series_mangadb_id == id)
                {
                    return malList.manga[i];
                }
            }
            var blank = createBlankListData();
            blank.series_mangadb_id = id;
            blank.my_status = 1;
            blank.localConstruction = true;
            return blank;
        }
        view.showSection = function (section)
        {
            switch(section)
            {
                case '1':
                    lightbox.show(readingIconView);
                    sectionDisplaying=1;
                    break;
                case '2':
                    lightbox.show(completedIconView);
                    sectionDisplaying=2;
                    break;
                case '3':
                    lightbox.show(onHoldIconView);
                    sectionDisplaying=3;
                    break;
                case '4':
                    lightbox.show(droppedIconView);
                    sectionDisplaying=4;
                    break;
                case '6':
                    lightbox.show(planToReadIconView);
                    sectionDisplaying=6;
                    break;
                case '7':
                    lightbox.show(searchView);
                    sectionDisplaying=7;
                    break;
            }
        }
        view.getShowingSection = function ()
        {
            return sectionDisplaying;
        }

        return view;
    }
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var GridLayout = require("famous/views/GridLayout");

var mainContext = Engine.createContext();

var grid = new GridLayout({
	dimensions: [4, 2]
});

var surfaces = [];
grid.sequenceFrom(surfaces);

for(var i = 0; i < 50; i++) {
 surfaces.push(new Surface({
 content: "panel " + (i + 1),
 size: [undefined, undefined],
 properties: {
	 backgroundColor: "hsl(" + (i * 360 / 8) + ", 100%, 50%)",
	 color: "#404040",
	 lineHeight: '200px',
	 textAlign: 'center'
 }
 }));
}

mainContext.add(grid);

		initialize: function() {
			this.callSuper();

			var self = this;
			var surfaces;

			this.set("routes", [
				["addtoqueue", "addtoqueue", function() {
					self.set("active", true);
					informant.set("backButtonRoute", "tracking");
					informant.set("backButtonCallback", function() {});
					if (surfaces.newCustomerButton.toggled) surfaces.newCustomerButton.toggle();
					if (surfaces.existingCustomerButton.toggled) surfaces.existingCustomerButton.toggle();
					surfaces.inputSurface.focus();
				}]
			]);

			var mainView = new View();
			var alignModifier = new Modifier();

			// Back button
			var backButtonContainer = new View();
			var backButtonModifier = new Modifier({
				align: [0.5, 1],
				origin: [0.5, 1],
				size: [250, 110]
			});
			var backButton = new Button({
				content: "Cancel",
				size: [undefined, undefined],
				classes: ["back-btn"],
				properties: {
					borderRadius: "none"
				}
			}, {
				"click": function() {
					informant.navigateTo("tracking");
				}
			});

			backButtonContainer.add(backButtonModifier).add(backButton.view);

			// All people
			var peopleContainer = new View();
			surfaces = {
				inputSurface: new InputSurface({
					size: [undefined, 70],
					properties: {
						border: "2px solid #cccccc",
						backgroundColor: "white",
						fontSize: "30px",
						boxShadow: "inset 3px 3px 3px #cccccc",
						borderRadius: "5px",
						paddingLeft: "15px",
						outlineColor: "#428600"
					}
				}),
				newCustomerButton: new Button({
					content: "New",
					sizeList: BUTTON_SIZES.TOGGLES,
					centerView: true,
					classes: ["back-btn"],
					properties: {
						borderRadius: "none"
					}
				}, {
					"click": function(parent) {
						parent.toggle();
						if (surfaces.existingCustomerButton.toggled) surfaces.existingCustomerButton.toggle();
					}
				}),
				existingCustomerButton: new Button({
					content: "Existing",
					sizeList: BUTTON_SIZES.TOGGLES,
					centerView: true,
					classes: ["back-btn"],
					properties: {
						borderRadius: "none"
					}
				}, {
					"click": function(parent) {
						parent.toggle();
						if (surfaces.newCustomerButton.toggled) surfaces.newCustomerButton.toggle();
					}
				}),
				addButton: new Button({
					content: "Add",
					sizeList: BUTTON_SIZES.CONTROLS,
					classes: ["back-btn"],
					centerView: true,
					properties: {
						borderRadius: "3px",
						boxShadow: "1px 1px 3px #888888"
					}
				}, {
				//TODO add workentry for queueing here NLK
					"click": function(parent) {
					
						if(surfaces.inputSurface.getValue() == undefined || surfaces.inputSurface.getValue() == "") {
							alert("Try entering a name next time.");
							return;
						}
						if (!surfaces.newCustomerButton.toggled && !surfaces.existingCustomerButton.toggled) {
							alert("Please select a customer type: New or Existing.");
							return;
						}
						informant.get("hostingManager").get("connector").add(surfaces.inputSurface.getValue(), timeSync.get("currentTime"));
						informant.get("currentInteraction").end();
						informant.completeQueueInteraction(0);
						informant.navigateTo("tracking");
						surfaces.inputSurface.setValue("");
					}
				}),
				cancelButton: new Button({
					content: "Cancel",
					sizeList: BUTTON_SIZES.CONTROLS,
					classes: ["back-btn"],
					centerView: true,
					properties: {
						borderRadius: "3px",
						boxShadow: "1px 1px 3px #888888"
					}
				}, {
					"click": function(parent) {
						surfaces.inputSurface.setValue("");
						//informant.get("hostingManager").get("connector").add(surfaces.inputSurface.getValue(), (surfaces.existingCustomerButton.toggled ? "existing" : "new"));
						informant.get("currentInteraction").end();
						informant.completeQueueInteraction(1);
						informant.resumeInteraction(informant.get("oldInteraction"));
						informant.navigateTo("tracking");
					}
				})
			};

			this.set("buttonSurfaces", surfaces);

			// Bottom Grid
			var bottomGrid = new GridLayout({
				dimensions: [1, 2]
			});
			bottomGrid.sequenceFrom([
				surfaces.addButton.view,
				surfaces.cancelButton.view
			]);
			var bottomGridModifier = new Modifier({
				align: [0.5, 0.5],
				origin: [0.5, 0.5],
				size: [250, undefined]
			});
			var bottomGridView = new View();
			bottomGridView.add(bottomGridModifier).add(bottomGrid);

			// Top grid
			var newExistingGrid = new GridLayout({
				dimensions: [2, 1]
			});
			newExistingGrid.sequenceFrom([
				surfaces.newCustomerButton.view,
				surfaces.existingCustomerButton.view
			]);

			var topGrid = new GridLayout({
				dimensions: [1, 2]
			});
			topGrid.sequenceFrom([
				surfaces.inputSurface,
				newExistingGrid
			]);
			var topGridModifier = new Modifier({
				align: [0.5, 0.5],
				origin: [0.5, 0.5],
				size: [undefined, 250]
			});
			var topGridView = new View();
			topGridView.add(topGridModifier).add(topGrid);

			var flexLayout = new FlexibleLayout({
				ratios: [5, 2],
				direction: 1
			});

			flexLayout.sequenceFrom([
				topGridView,
				bottomGridView
			]);


			peopleContainer.add(flexLayout);

			mainView.add(peopleContainer);

			var nameSurface = new Surface({
				content: informant.get("userName"),
				size: [undefined,40],
				properties: {
					paddingRight:"20px",
					fontSize: "24px",
					lineHeight: "40px",
					color:"#000",
					textAlign:"right"
				}
			});
			mainView.add(nameSurface);

			this.addNode(mainView);

			this.renderView();
			this.hide();
		}
Example #16
0
    function _createViews(){
        this.recent = null;
        var surfaceMod = new StateModifier({
           align: [0.5, 0.117],
           origin: [.5,.5]
        });

        var firstSurface = new Surface({
            content: 'Select the day you want to attend dinner',
            size:[window.innerWidth, 40],
            properties: {
                size: [undefined, undefined],
                color: 'black',
                textAlign: 'center',
                backgroundColor: 'transparent'
            }
        });
        this.add(surfaceMod).add(firstSurface);
        var grid = new GridLayout({
            dimensions: [7, 5]
        });

        this.surfaces = [];
        grid.sequenceFrom(this.surfaces);

        for(var i = 0; i < 31; i++) {
            if(i == 0) {
                this.surfaces.push(new Surface({
                    content: "",
                    size: [window.innerWidth / 7, window.innerHeight/ 10],
                    properties: {
                        textAlign: 'center'
                    }
                }));
            }
            else {
                this.surfaces.push(new Surface({
                    content: "" + i,
                    size: [window.innerWidth / 7, window.innerHeight/ 10],
                    properties: {
                        textAlign: 'center'
                    }
                }));
            }

        }


        var stateModifier = new StateModifier({
            align: [.5 , .5],
            origin: [.5,.5],
            size:[window.innerWidth * 0.95, window.innerHeight * 0.5]
        });

        this.add(stateModifier).add(grid);

        this.nextMod = new StateModifier({
            align: [0.75, 0.9]
        });
        this.nextButton = new Surface({
            content: "<i class='fa fa fa-chevron-right fa-2x'></i>",
            size:[100, 70],
            properties:{
                zIndex: 10,

                color: 'black',
                textAlign: 'center',
                backgroundColor: 'transparent'
            }
        });


//        this.add(this.nextMod).add(this.nextButton);
    }
Example #17
0
  function _createStrips() {

    var grid = new GridLayout({
      size: [320, 400],
      dimensions: [3, 3]
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    var iconContents = this.options.filterData;
    this.rowModifiers = [];
    var contentCounter = 0;

    var surface, view, availability;
    var width = this.options.width;
    var height = this.options.height;

//    var scaledWidth = 50 * height / 320;
//    var scaledHeight = 60 * height / 320;

    var scaledWidth = 88;
    var scaledHeight = 128;

    for (var row = 0; row < 3; row++) {
      for (var col = 0; col < 3; col++) {
        this.rowModifiers[(row * 3) + col] = new StateModifier({
          size: [scaledWidth, scaledHeight],
          origin: [0.5, 0.5]
        });
        //create surface from iconContents
        availability = iconContents[contentCounter].available ? 'available' : 'unavailable';

        surface = new Surface({
          size: [undefined, undefined],
          classes: ['filterIcon'],
          content: '<img class="filterIconImg" width="' + scaledWidth + '" src="' + iconContents[contentCounter].imageUrl + '"/>' +
            '<div class="filterIconText ' + availability + '">' + iconContents[contentCounter].text + '</div>'
        });

        if ((row == 0) && (col == 0)) {
          var that = this;
          surface.on('click', function () {
            console.log(that);
            that.options.leave();
            Timer.after(function () {
              that.options.c.emit('邀请详情', {
                action: 'ENTER',
                isBack: true
              });
            }, 6);
          });
        }

        //push view (modifier + surface) onto surfaces
        view = new View();
        view._add(this.rowModifiers[(row * 3) + col]).add(surface);
        surfaces.push(view);

        contentCounter++;
      }
    }

    var gridModifier = new StateModifier({
      size: [320, 400],
      origin: [0.5, 0],
      transform: Transform.translate(0, 30, 0)
    });

    this._add(gridModifier).add(grid);
//    this._add(grid);

  }
Example #18
0
    function _createStrips() {
        var _super = this;
        //create a grid for icons
        var grid = new GridLayout({
            //size:[undefined, undefined],
            dimensions: [3, 3],
            properties: {
                backgroundColor: 'orange'
            }
        });

        var surfaces = [];


        grid.sequenceFrom(surfaces);

        var iconContents = [
            {text: 'ART', imageUrl: 'img/icon-menu/art.png', available: true},
            {text: 'BARCHART', imageUrl: 'img/icon-menu/barchart.png', available: true},
            {text: 'BIKE', imageUrl: 'img/icon-menu/bike.png', available: true},

            {text: 'BLIMP', imageUrl: 'img/icon-menu/blimp.png', available: true},
            {text: 'BOLT', imageUrl: 'img/icon-menu/bolt.png', available: true},
            {text: 'BOMB', imageUrl: 'img/icon-menu/bomb.png', available: true},

            {text: 'BOOKLET', imageUrl: 'img/icon-menu/booklet.png', available: true},
            {text: 'BOOKSHELF', imageUrl: 'img/icon-menu/bookshelf.png', available: true},
            {text: 'BRIEFCASE', imageUrl: 'img/icon-menu/briefcase.png', available: true},
        ];

        this.rowModifiers = [];
        var contentCounter = 0;

        var surf, view, availability;
        var width = IconMenuView.DEFAULT_OPTIONS.width; // window.innerWidth;
        var height = IconMenuView.DEFAULT_OPTIONS.height; // window.innerHeight;

        var scaledWidth = 50*height/320;
        var scaledHeight = 60*height/320;
        for(var row = 0; row < 3; row++) {
            for(var col = 0; col < 3; col++) {
                this.rowModifiers[(row * 3) + col] = new Modifier({
                    size: [scaledWidth, scaledHeight],
                    origin: [0.5, 0.5]
                });
                //create surface from iconContents
                availability = iconContents[contentCounter].available ? 'available' : 'unavailable';

                surf = new Surface({
                    size: [undefined,undefined],
                    classes: ['filterIcon'],
                    content: '<img class="filterIconImg" width="' + scaledWidth + '" src="'+ iconContents[contentCounter].imageUrl +'"/>'+
                        '<div class="filterIconText '+ availability +'">' + iconContents[contentCounter].text +'</div>'
                });

                //var id = contentCounter;

                //Example of closure, notice id must be in the params so it will not hook to some variable
                //http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example
                (function setEvent(id) {
                    surf.on('click', function () {
                        console.log("Icon  Id:" + id);

                        //Need to fire custome even here with id as a parmeter
                        //IconClick id

                        // Document closure in the right page

                        _super._eventOutput.emit('app', {id: id});
                    });
                })(contentCounter);

                //push view (modifier + surface) onto surfaces
                view = new View();
                view._add(this.rowModifiers[(row * 3) + col]).add(surf);
                surfaces.push(view);

                contentCounter++;
            }
        }

        this._add(grid);
    }
Example #19
0
define(function (require, exports, module) {
    'use strict';
    
    // import dependencies
    var Engine = require('famous/core/Engine');
    var Modifier = require('famous/core/Modifier');
    var RenderNode = require('famous/core/RenderNode');
    var Surface = require('famous/core/Surface');
    var Transform = require('famous/core/Transform');
    var GridLayout = require('famous/views/GridLayout');
    var BoxLayout = require('famous-boxLayout');
    
    // Create the main context
    var mainContext = Engine.createContext();

    // Helper functions
    function addSurface(boxLayout, name) {
        if (boxLayout[name] !== undefined) {
            var surface = new Surface({
                classes: [name]
            });
            
            boxLayout[name].add(surface);
            if (name === 'middle') {
                surface.setContent('Margins: [' + boxLayout.options.margins + ']<div class="center">.middle</div>');
            } else {
                surface.setContent('<div class="center">.' + name + '</div>');
            }
        }
    }
    function setSurfaces(boxLayout) {
        addSurface(boxLayout, 'topLeft');
        addSurface(boxLayout, 'top');
        addSurface(boxLayout, 'topRight');
        addSurface(boxLayout, 'left');
        addSurface(boxLayout, 'middle');
        addSurface(boxLayout, 'right');
        addSurface(boxLayout, 'bottomLeft');
        addSurface(boxLayout, 'bottom');
        addSurface(boxLayout, 'bottomRight');
    }
    var boxLayouts = [];
    function createBoxLayout(margins) {
        var boxLayout = new BoxLayout({
            margins: margins
        });
        setSurfaces(boxLayout);
        var modifier = new Modifier({
            transform: Transform.scale(0.9, 0.9, 1.0),
            align: [0.5, 0.5],
            origin: [0.5, 0.5]
        });
        var renderable = new RenderNode(modifier);
        renderable.add(boxLayout);
        boxLayouts.push(renderable);
    }
    
    // Create example box-layouts
    var SZ = 60;
    createBoxLayout([]);
    createBoxLayout([SZ]);
    createBoxLayout([SZ, 0]);
    createBoxLayout([0, SZ]);
    createBoxLayout([SZ, 0, 0, 0]);
    createBoxLayout([0, SZ, 0, 0]);
    createBoxLayout([0, 0, SZ, 0]);
    createBoxLayout([0, 0, 0, SZ]);
    createBoxLayout([SZ - 10, SZ, SZ - 20, SZ + 10]);
    
    
    // Show box-layouts in grid
    var grid = new GridLayout({
        dimensions: [3, 3]
    });
    grid.sequenceFrom(boxLayouts);
    mainContext.add(grid);
});
Example #20
0
define(function(require, exports, module) {
    var Engine = require('famous/core/Engine');
    var Modifier = require('famous/core/Modifier');
    var Transform = require('famous/core/Transform');
    var StateModifier = require('famous/modifiers/StateModifier');
    
    var Surface = require('famous/core/Surface');
    var ImageSurface = require('famous/surfaces/ImageSurface');
    
    var GridLayout = require('famous/views/GridLayout');
    
    var Transitionable = require('famous/transitions/Transitionable');
    var SpringTransition = require('famous/transitions/SpringTransition');
    Transitionable.registerMethod('spring', SpringTransition);

    var mainContext = Engine.createContext();

    var gridSize = [5, 5];
    //var buttonSize = Math.floor(100 / (gridSize[0] + gridSize[1])) + Math.floor((gridSize[0] * gridSize[1]) / (gridSize[0]));
    var buttonSize = 128;
    var grid = new GridLayout({
        dimensions: [gridSize[0], gridSize[1]],
        transition: {
            curve: 'easeInOut',
            duration: 0
        }
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    for(var i = 0; i < (gridSize[0] * gridSize[1]); i++) {

        // Generate a random color
        // Famo.us doesn't like colors under images, though >_<
        var bgColor = "#" + Math.random().toString(16).slice(2, 8);

        surfaces.push(new ImageSurface({
            size: [buttonSize, buttonSize],
            properties: {
                backgroundColor: bgColor,
                borderRadius: (buttonSize) + "px",
                boxShadow: '4px 4px 5px #888888'
            }
        }));


        // Generate seed for buttons to vary images from placeholder service
        var seed = Math.floor(Math.random() * ((gridSize[0] + gridSize[1]) / 2)) + 1;

        // Scatter photo types
        if ((i + 1) % 3 == 0)
            surfaces[i].setContent("http://fillmurray.com/" + (buttonSize + seed) + "/" + (buttonSize + seed));
        else if ((i + 1) % 2 == 0)
            surfaces[i].setContent("http://placebear.com/" + (buttonSize + seed) + "/" + (buttonSize + seed));
        else
            surfaces[i].setContent("http://placecorgi.com/" + (buttonSize + seed) + "/" + (buttonSize + seed));

        
    }

    // Springy Entrance
    var spring = {
        method: 'spring',
        period: 400,
        dampingRatio: 0.3
    };
    
    var stateModifier = new StateModifier({
        origin: [0.5, 0]
    });

    // Parent this modifier to the grid on the render tree
    mainContext.add(stateModifier).add(grid);

    // Set intitial position
    stateModifier.setTransform(
        Transform.translate(0, -300, 0)
    );

    // Set end position with spring bounce
    stateModifier.setTransform(
        Transform.translate(0, 0, 0), spring
    );

    /* When clicked, transpose the layout
    var toggle = false;
    Engine.on('click', function() {
        if (toggle) {
            grid.setOptions({dimensions: [gridSize[0], gridSize[1]]});
        }
        else {
            grid.setOptions({dimensions: [gridSize[1], gridSize[0]]});
        }

        toggle = !toggle;

    });

    */
});
Example #21
0
    function addContent() {
      var grid = new GridLayout({
        dimensions: [4, 7]
      });

      var views = [];
      grid.sequenceFrom(views);

      for (var i = 0; i < 26; i++) {
        var view = new View();

        var centerModifier = new Modifier({
          origin: [.5, .5]
        });

        var surface = new Surface({
          content: String.fromCharCode(i+97),
          size: [50, 50],
          //classes: ['red-bg'],
          properties: {
            backgroundColor:'yellow',
            color: 'black',
            textAlign: 'center',
            //lineHeight: '100px',
            fontSize:'30px'
          }
        });

        view.add(centerModifier).add(surface);

        views.push(view);
      }

      var v2 = new View();
      var v2Center = new Modifier({
          origin: [.5,.5]
         });

      var v2String = '0';
      var v2Surf = new Surface({
          content: v2String, //String.fromCharCode(i+65),
          size: [50, 50],
          //classes: ['red-bg'],
          properties: {
            backgroundColor:'red',
            color: 'black',
            textAlign: 'center',
            //lineHeight: '100px',
            fontSize:'30px'
          }
        });

      var v2Drag = new Draggable({ });
      v2Surf.pipe(v2Drag);

      v2.add(v2Drag).add(v2Center).add(v2Surf);
      //var v2Delay = 250;

      views.push(v2);

      layout.content.add(grid);
      v2Surf.content = 'DragMe';

      for (var iloop = 0; iloop<200; iloop++) {
        var zInc = Transform.rotateZ(Math.PI*.1*iloop);
        v2Center.setTransform(zInc,{duration: 0});
     }
    }
Example #22
0
define(function(require, exports, module) {
    var Engine = require('famous/core/Engine');
    var Surface = require('famous/core/Surface');
    var RenderNode = require('famous/core/RenderNode');
    var Modifier = require('famous/core/Modifier');
    var Scrollview = require('famous/views/Scrollview');
    var GridLayout = require('famous/views/GridLayout');    

    var context = Engine.createContext();

    var scrollViews = [];

    var scrollview = new Scrollview();
    scrollview.sequenceFrom(scrollViews);

    var gridCells = [];

    var grid = new GridLayout();
    grid.sequenceFrom(gridCells);

    grid.mod = new Modifier();

    var cellCount = 24;
    var cellMinWidth = 200.0;

    grid.mod.sizeFrom(function() {

        var size = context.getSize();
        
        var cellsX = Math.floor(size[0] / cellMinWidth);
        var cellsY = Math.ceil(cellCount * 1.0 / cellsX);
        var cellHeight = 300;// size[0] * 1.0 / cellsX;

        grid.setOptions({dimensions: [cellsX, cellsY]});
        
        
        var extra = size[0] - (cellsX * cellMinWidth);
        var extraWidth = 0;
        if(extra > 0){
            extraWidth = Math.floor(extra / cellsX);
        }
        for(var i=0; i< 24; i++){
           var s = gridCells[i];
           s.setSize([cellMinWidth+extraWidth-20,280]);
        }

        return [undefined, cellsY * cellHeight];
    });

    grid.node = new RenderNode();
    grid.node.add(grid.mod).add(grid);


    for (var i = 0; i < cellCount; i++) {
        var surface = new Surface({
            size: [cellMinWidth, 280],
            properties: {
                //backgroundColor: 'hsl(' + (i * 360 / 12) + ',75%,50%)',                
                borderRadius: '5px',
                borderStyle: 'solid',
                borderWidth: '1px'
            }
        });

        gridCells.push(surface);
        surface.pipe(scrollview);

    }
    ;

    scrollViews.push(grid.node);

    context.add(scrollview);
});
    LayoutBuilder.prototype.createGridLayout = function(options){
        var that = this;

        var tmp = new GridLayout({
            dimensions: options.dimensions || [] // 3 col, 4 row
        });
        tmp.Views = [];

        if(options.size){
            // Expecting a True in either one
            // - otherwise, returning undefined for h/w

            // Used for true Height or Width(v2) 
            // - only calculating the Height at the moment
            var h,w;

            // Height
            if(options.size[1] === true){

                tmp.getSize = function(){
                    
                    var columnCount = options.dimensions[0];

                    // Uses the number of rows to determine the max-height of an individual column

                    var maxHeights = _.map(_.range(columnCount), function(){return 0;}); // number of columns we're counting

                    tmp.Views.forEach(function(v,i){
                        var h = v.getSize(true)[1];
                        maxHeights[columnCount%(i+1)] += h;
                        // if(h > maxHeight){
                        //     maxHeight = h;
                        // }
                    });
                    
                    return [undefined, Math.max(maxHeights)];
                }
                
            }

            // Width
            // - todo

        }

        // sequenceFrom
        options.sequenceFrom.forEach(function(obj){

            var tmpNode;
            if(obj instanceof ElementOutput ||
               obj instanceof RenderNode ||
               obj instanceof View ||
               obj instanceof Surface){
                tmpNode = obj;
            } else if((typeof obj).toLowerCase() == 'object'){
                var typofLayout = _.without(Object.keys(obj),'size','mods','deploy','plane')[0]; // "surface"
                var name = obj[typofLayout].key ? obj[typofLayout].key : Object.keys(obj[typofLayout])[0];
                tmpNode = new LayoutBuilder(obj);
                if(tmpNode.hasName){
                    tmp[tmpNode.hasName] = tmpNode[tmpNode.hasName];
                    tmp[tmpNode.hasName].NodeWithMods = tmpNode;
                } else {
                    console.log(name);
                    debugger;
                    tmp[name] = tmpNode;
                }
            } else {
                console.error('unknown type');
                debugger;
            }

            console.info('tmpNode', tmpNode);
            tmp.Views.push(tmpNode);
        });

        tmp.sequenceFrom(tmp.Views);

        // // size?
        // if(options.size){
        //     tmp.getSize = function(){
        //         var combinedWidth = 0;

        //         var maxHeight = 0;
        //         if(options.size[0] == undefined)
        //         contestView.Layout.sequential.Top.Views.forEach(function(v){
        //             var h = v.getSize(true)[1];
        //             if(h > maxHeight){
        //                 maxHeight = h;
        //             }
        //         });
        //     }
        // }


        var newNode = this.buildModsForNode( tmp, options );
        newNode = this.buildMargins( newNode, options);

        return [tmp, newNode];

    };
Example #24
0
define(function(require, exports, module) {
    // import dependencies
    var Transitionable = require('famous/transitions/Transitionable');
    var Surface = require("famous/core/Surface");
    var Engine = require('famous/core/Engine');
    var Modifier = require('famous/core/Modifier');
    var Transform = require('famous/core/Transform');
    var ImageSurface = require('famous/surfaces/ImageSurface');
    var StateModifier = require('famous/modifiers/StateModifier');
    var PhysicsEngine   = require('famous/physics/PhysicsEngine');
    var Body            = require('famous/physics/bodies/Body');
    var Circle          = require('famous/physics/bodies/Circle');
    var Wall            = require('famous/physics/constraints/Wall');
    var Collision            = require('famous/physics/constraints/Collision');
    var GridLayout = require("famous/views/GridLayout");
    var RenderNode = require('famous/core/RenderNode');
    var Easing = require('famous/transitions/Easing');
    var transitionable = new Transitionable(0);
    var mainContext = Engine.createContext();
    var PhysicsEngine = new PhysicsEngine();
    var node = new RenderNode();
    var physicsOrigin = [0.5, 0.5];
    var radius = 50;

    var ballCollision = new Collision();
    var dimX = window.innerWidth;
    var dimY = window.innerHeight;

    var leftWall = new Wall({
      normal: [1, 0, 0],
      distance: Math.round(dimX / 2.0),
      restitution: 0.5
    });
    var rightWall = new Wall({
      normal: [-1, 0, 0],
      distance: Math.round(dimX / 2.0),
      restitution: 0.5
    });
    var topWall = new Wall({
      normal: [0, 1, 0],
      distance: Math.round(dimY / 2.0),
      restitution: 0.5
    });
    var bottomWall = new Wall({
      normal: [0, -1, 0],
      distance: Math.round(dimY / 2.0),
      restitution: 0.5
    });

    var balls = [];

    var grid = new GridLayout({
     dimensions: [2, 1]
   });

    PhysicsEngine.attach([leftWall, rightWall, topWall, bottomWall], balls);
    var surfaces = [];
    var backgrounds = ['grey', '#FA5C4F'];
    var textColors = ['#FA5C4F', 'grey'];
    var content = ['Click the particles...', '...and become Famo.us!'];
    grid.sequenceFrom(surfaces);
    for(var i = 0; i < 2; i++) {
     surfaces.push(new Surface({
      content: '<h1>' + content[i] + '</h1>',
       properties: {
        textAlign: 'center',
         backgroundColor: backgrounds[i],
         color: textColors[i]
       }
     }));
   }

   function createBall(x, y) {
    var ball = new ImageSurface({
      content: 'http://code.famo.us/assets/famous_logo.svg',classes: ['double-sided'],
      size: [radius * 2, radius * 2],
      properties: {
        backgroundColor: 'grey'
      }
    })
    // ball.setTransform(rotate);
    ball.particle = new Circle({
      radius: radius,

      position: [2*Math.random()*window.innerWidth-window.innerWidth, 2*Math.random()*window.innerHeight-window.innerHeight, 0]
    });
    PhysicsEngine.addBody(ball.particle);
    PhysicsEngine.attach(ballCollision, balls);
    node.add(ball.particle).add(ball);
    balls.push(ball.particle);
    ball.on("click", function () {
      var currentColor = ball.properties.backgroundColor;
      if (currentColor == '#FA5c4F'){
        var nextColor = 'grey';
      } else if (currentColor == 'grey'){
        var nextColor = '#FA5c4F';
      }
      ball.setOptions({properties: {backgroundColor: nextColor, borderRadius: '50px'}});
      ball.particle.setVelocity([Math.random()*5, Math.random()*5, 0]);
    });
  }

  for(var numBalls = 0; numBalls < 10; numBalls++){
    createBall(dimX, dimY);
  }

  var modifier = new Modifier({
    transform: function() {
      var scale = transitionable.get();
      return Transform.scale(scale, scale, 1);
    },
    opacity: function() {
      return transitionable.get();
    },
    origin: physicsOrigin
  })

  mainContext.add(grid);
  mainContext.add(modifier).add(node);
  node.add(PhysicsEngine);
  transitionable.set(1, {
    duration: 2000, curve: Easing.outBack
  });
});
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var GridLayout = require("famous/views/GridLayout");

var mainContext = Engine.createContext();

var grid = new GridLayout();

var surface = new Surface({
	content: "I am a new Surface",
	size: [undefined, undefined],
	properties: {
		backgroundColor: "red",
		color: "#404040",
		textAlign: 'center'
	}
});

grid.sequenceFrom([surface]);

mainContext.add(grid);
Example #26
0
define(function(require, exports, module) {
    //core
    var Engine     = require("famous/core/Engine");
    var Surface    = require("famous/core/Surface");
    var Modifier   = require("famous/core/Modifier");
    var Transform = require("famous/core/Transform");
    var EventHandler = require("famous/core/EventHandler");

    var GridLayout = require("famous/views/GridLayout");
    var Transitionable = require("famous/transitions/Transitionable");

    //modifiers
    var Draggable = require('famous/modifiers/Draggable');
    var StateModifier = require('famous/modifiers/StateModifier');

    //inputs
    var ScrollSync = require("famous/inputs/ScrollSync");
    var MouseSync = require("famous/inputs/MouseSync");

    //transitions
    var WallTransition = require('famous/transitions/WallTransition');
    Transitionable.registerMethod('wall', WallTransition);

    /**
    *
    * Toggle edit mode
    *
    **/

    var images = ['http://m1.behance.net/rendition/modules/117187517/hd/0db08a292bd13b7899317a2d74ce63d0.png',
    'http://m1.behance.net/rendition/modules/117187519/hd/fda8e9dfccdb318db8929df4dbeeb6db.jpg',
    'http://m1.behance.net/rendition/modules/117187523/hd/27374b88bb711f63adfa74c96a31931f.jpg',
    'http://m1.behance.net/rendition/modules/117187529/hd/7d0346d2d0df32462d256c2468938481.jpg',
    'http://m1.behance.net/rendition/modules/117187511/hd/30399755dc75494b79eca5b67c40992d.jpg',
    'http://m1.behance.net/rendition/modules/117187507/hd/a6188394c1c8e3760e9ca11591cd8601.jpg'];

    var editing = false;

    var editButtonModifier = new Modifier({
        origin: [1, 0],
        opacity: function() {
            if (editing) {
                return 0.5;
            }
            return 1;
        },
        size: [50, 40]
    });

    var editButton = new Surface({
        content: 'Edit',
        size: [undefined, undefined],
        properties: {
            background: 'black',
            color: 'white',
            textAlign: 'center',
            lineHeight: '40px'
        }
    });

    var editClickSync = new MouseSync();

    editButton.pipe(editClickSync);

    editClickSync.on('start', function(){
        editing = !editing;
        if (editing){
            Engine.unpipe(panMouseSync);
            Engine.pipe(selectMouseSync);
        } else {
            Engine.pipe(panMouseSync);
            Engine.unpipe(selectMouseSync);
        }
    });

    /**
    *
    * Grid and Select
    *
    **/

    var size = new Transitionable([0, 0]);
    var anchor = new Transitionable([0, 0]);

    var selectBox = new Surface({
        classes: ["grey-bg", "selectBox"]
    });

    var selectBoxSize = new Modifier({
        size: function(){
            var currentSize = size.get();
            if((currentSize[0] < 0 && currentSize[1] > 0) || (currentSize[0] > 0 && currentSize[1] < 0)){
                return [Math.abs(currentSize[1]), Math.abs(currentSize[0])];
            }
            return [Math.abs(currentSize[0]), Math.abs(currentSize[1])];
        }
    });

    var selectBoxAnchor = new Modifier({
        transform: function(){
            var currentPosition = anchor.get();
            return Transform.translate(currentPosition[0], currentPosition[1], 0);
        }
    });

    var selectBoxRotation = new Modifier({
        transform: function(){
            var currentSize = size.get();
            if(currentSize[0] < 0 && currentSize[1] < 0){
                return Transform.rotateZ(Math.PI);
            } 
            if(currentSize[0] < 0 && currentSize[1] > 0){
                return Transform.rotateZ(Math.PI / 2);
            }
            if(currentSize[0] > 0 && currentSize[1] < 0){
                return Transform.rotateZ(Math.PI * 3 / 2);
            }
            return 0;
        }
    });

    var selectBoxOpacity = new Modifier({
        opacity: 0.2
    });

    var selectMouseSync = new MouseSync();

    var patches = 0;
    var currentPatch;

    selectMouseSync.on("start", function (data){
        anchor.set([data.clientX, data.clientY]);
        currentPatch = new Patch(patches, images[patches]);
    });

    selectMouseSync.on("update", function (data){
        size.set(data.position);
        //find overlap between cells and select box
        var cells = document.getElementsByClassName('cell');
        var selectBox = document.getElementsByClassName('selectBox')[0];
        var selectBoxRect = selectBox.getBoundingClientRect();
        for(var i = 0; i < cells.length; i++){
            var cell = cells[i];
            var cellRect = cell.getBoundingClientRect();
            var overlap = !(cellRect.right < selectBoxRect.left || 
                cellRect.left > selectBoxRect.right || 
                cellRect.bottom < selectBoxRect.top || 
                cellRect.top > selectBoxRect.bottom);
            if(overlap) {
                cell.style.opacity = 1;
            } else {
                cell.style.opacity = 0.5;
            }
        }
        //find min and max row and column highlighted in grid
        currentPatch.setDimensions(findMinMaxRow(), findMinMaxColumn());
        //check if patch is to be inserted
        if(currentPatch.valid()){
            //set size and position of patch
            currentPatch.addModifier();
            currentPatch.addToGrid();
            currentPatch.addImage();
        }
    });

    selectMouseSync.on("end", function (){
        //reset select box size and position
        anchor.set([0,0]);
        size.set([0,0]);
        //reset opacity of cells
        var cells = document.getElementsByClassName('cell');
        for(var i = 0; i < cells.length; i++){
            var cell = cells[i];
            cell.style.opacity = 0.5;
        }
        patches++;
    });

    var mainContext = Engine.createContext();

    var rows = 20;
    var columns = 20;

    var grid = new GridLayout({
        dimensions: [rows, columns]
    });

    var surfaces = [];
    grid.sequenceFrom(surfaces);

    for(var j = 0; j < rows; j++){
        for(var i = 0; i < columns; i++) {
            surfaces.push(new Surface({
                size: [undefined, undefined],
                classes: ["cell", j + 1, i + 1],
                properties: {
                    backgroundColor: "hsl(" + ((i * j) * 360 / (rows * columns)) + ", 100%, 50%)",
                    color: "black",
                    lineHeight: '100px',
                    textAlign: 'center'
                }
            }));
        }
    }

    var gridSize = new Transitionable([400, 400]);

    var gridModifier = new Modifier({
        size: function(){
            return gridSize.get();
        }, 
        origin: [.5, .5], 
        opacity: 0.5
    });

    /**
    *
    * Pan and Scale
    *
    **/

    var maxScale = 200;
    var minScale = 0;
    var displaceThreshold = 50;
    var maxDisplace = maxScale + displaceThreshold;
    var minDisplace = minScale - displaceThreshold;
    var perspective = maxDisplace + 120;

    var scale = new Transitionable(0);
    var position = new Transitionable([0, 0]);

    var scrollSync = new ScrollSync();
    var panMouseSync = new MouseSync();

    mainContext.setPerspective(perspective);

    //Dynamic positioning modifiers

    var scaleModifier = new Modifier({
        transform : function(){
            var currentScale = scale.get();
            return Transform.translate(0, 0, currentScale);
        }
    });

    var panModifier = new Modifier({
        transform: function(){
            var currentPosition = position.get();
            return Transform.translate(currentPosition[0], currentPosition[1]);
        }
    });


    //Static positioning modifiers

    var initScaleModifier = new Modifier({
        transform: Transform.translate(0, 0, displaceThreshold  + 50)
    });

    //Scaling listeners

    Engine.pipe(scrollSync);

    scrollSync.on("update", function(data) {
        var currentScale = scale.get();
        var delta = data.delta[1] /100;

        if (currentScale > maxDisplace){
            scale.set( currentScale );
        } else if (currentScale < minDisplace){
            scale.set( currentScale );
        } else {
            scale.set( currentScale + delta );
        }
    });

    scrollSync.on("end", function() {
        if(scale.get() < minScale){
            scale.set(minScale, {method : 'wall',   dampingRatio : 0.5, period : 500});
        }
        if(scale.get() > maxScale){
            scale.set(maxScale, {method : 'wall',   dampingRatio : 0.5, period : 500});
        }
    });

    //Panning listeners

    Engine.pipe(panMouseSync);

    panMouseSync.on("update", function(data){
        var currentPosition = position.get();
        position.set([
            currentPosition[0] + data.delta[0],
            currentPosition[1] + data.delta[1]
        ]);
    });

    /**
    *
    * Patches
    *
    **/

    function Patch(id, imageSrc) {
        this.surface = new Surface({
            size: [undefined, undefined],
            classes: ['patch', id],
            properties: {
                background: 'blue'
            }
        });
        this.id = id;
        this.valid = function(){
            return this.minRow && this.maxRow && this.minColumn && this.maxColumn;
        }
        this.image = imageSrc;
        this.surface.pipe(patchAdditionEvent);
    }

    var patchAdditionEvent = new EventHandler();

    patchAdditionEvent.on('deploy', function(){
        currentPatch.addImage();
    });

    Patch.prototype.addToGrid = function() {
        canvas.add(this.modifier).add(this.surface);
    };

    Patch.prototype.addImage = function() {
        $('.patch.' + this.id).backstretch(this.image);
    };

    Patch.prototype.setDimensions = function(minMaxRow, minMaxColumn){
        this.minRow = minMaxRow[0];
        this.maxRow = minMaxRow[1];
        this.minColumn = minMaxColumn[0];
        this.maxColumn = minMaxColumn[1];
    }

    Patch.prototype.addModifier = function(){
        var minRow = this.minRow;
        var maxRow = this.maxRow;
        var minColumn = this.minColumn;
        var maxColumn = this.maxColumn;
        this.modifier = new Modifier({
            size: function(){
                var currentGridSize = gridSize.get();
                var cellWidth = currentGridSize[0] / columns;
                var cellHeight = currentGridSize[1] / rows;
    
                var width = (maxColumn + 1 - minColumn) * cellWidth;
                var height = (maxRow + 1 - minRow) * cellHeight;
                return [width, height];
            },
            align: function(){
                var rowAlign = (minRow - 1) / rows;
                var columnAlign = (minColumn - 1) /columns;
    
                return [columnAlign, rowAlign];
            },
            opacity: 2
        });
    };

    function findMinMaxRow(){
        var cells = document.getElementsByClassName('cell');
        var minRow = null;
        var maxRow = null;
        for(var i = 0; i < cells.length; i++){
            var cell = cells[i];
            if (cell.style.opacity == 1){
                var cellClassName = cell.className;
                var id = parseInt(cellClassName.split(" ")[2]);
                if(maxRow == null || id > maxRow){
                    maxRow = id;
                }
                if (minRow == null || id < minRow){
                    minRow = id;
                }
            }
        }
        return [minRow, maxRow];
    }

    function findMinMaxColumn(){
        var cells = document.getElementsByClassName('cell');
        var minColumn = null;
        var maxColumn = null;
        for(var i = 0; i < cells.length; i++){
            var cell = cells[i];
            if (cell.style.opacity == 1){
                var cellClassName = cell.className;
                var stringId = (cellClassName.split(" ")[3] != undefined) ? cellClassName.split(" ")[3] : cellClassName.split(" ")[2];
                var id = parseInt(stringId);
                if(maxColumn == null || id > maxColumn){
                    maxColumn = id;
                } 
                if (minColumn == null || id < minColumn){
                    minColumn = id;
                }
            }
        }
        return [minColumn, maxColumn];
    }

    /**
    *
    * DOM addition
    *
    **/

    mainContext.add(editButtonModifier).add(editButton);
    mainContext.add(selectBoxOpacity).add(selectBoxAnchor).add(selectBoxSize).add(selectBoxRotation).add(selectBox);
    var canvas = mainContext.add(gridModifier).add(initScaleModifier).add(scaleModifier).add(panModifier);
    canvas.add(grid);
});
Example #27
0
define(function(require, exports, module) {
    // import dependencies
    var Engine = require('famous/core/Engine');
    var Modifier = require('famous/core/Modifier');
    var Transform = require('famous/core/Transform');
    var ImageSurface = require('famous/surfaces/ImageSurface');
    var Surface  = require('famous/core/Surface');
    var StateModifier = require('famous/modifiers/StateModifier');
    var View = require('famous/core/View');
    var InputSurface = require('famous/surfaces/InputSurface');
    var GridLayout = require('famous/views/GridLayout');
    var Easing = require('famous/transitions/Easing');
    var Timer = require('famous/utilities/Timer');

    // create the main context
    var mainContext = Engine.createContext();  
    // your app here
    //Update function

    //Variables
    var green = '#58c762';
    var blue = '#42c0c0';
    var peach = '#ce946b';
    var squares = []
    var squareNum = 0;
    var targetSquare;
    var targetMod;
    var corkPop = new Audio('assets/sfx/corkPop.mp3');
    var questions = [];
    var questionNum = 0;
    var quizData = 'https://docs.google.com/spreadsheet/ccc?key=0AqIHdSiFJOTzdEtyajk2R3o2NTIyVk5ZN0czRWR2RWc&usp=drive_web#gid=0'
    var dataInitialized = false;
    
    function tabletopInit() {
        Tabletop.init({
            key: quizData,
            callback: transferData,
            simpleSheet: true
        })
    }

    function transferData(data) {
        //TRANSFERS DATA FROM GOOGLE SPREADSHEET TO AN ARRAY
        for (i=0; i<data.length; i++) { 
            pair = [data[i].q, data[i].a]
            questions.push(pair);
            console.log(questions[i][0]);
        }
    }

    function setQuestionDisplayContent() {
        console.log("working");
        if (dataInitialized == true) {
        }
        console.log("still working");

    }

    tabletopInit();
   

    //Layouts
    var grid = new GridLayout({
        dimensions: [4,2],
    });

    var gridMod = new StateModifier({
        size: [250,100],
        origin: [0.5,0.5],
        align: [0.5,0.5]
    });

    grid.sequenceFrom(squares);

    //Views
    var squaresView = new View();
    
    //Modifiers
    var centerMod = new StateModifier({
        origin: [0.5,0.5],
        align: [0.5,0.5]
    });
    var inputPos = new StateModifier({
        transform: Transform.translate(0,200,0)
    });

    var qDisplayPos = new StateModifier({
        transform: Transform.translate(0,120,0)
    });
    
    //Surfaces

    var questionDisplay = new Surface({
        size: [200,100],
        content: "Loading...",
        properties: {
            backgroundColor: peach,
            textAlign: 'center',
            lineHeight: '100px',
            color: '#FFF'
        }
    });

     Timer.every(function() {
        questionDisplay.setContent(questions[questionNum][0]);
    },100);
   



    for(var i = 0; i<50; i++) {

        var gridSquareView = new View();

         gridSquareView.square = new Surface({
            size: [25, 25],
            //content: "hello" + i,
            properties: {
                color: 'black',
                fontSize: 8,
                textAlign:'center',
                lineHeight: '60px',
                borderStyle: 'solid',
                borderColor: green  
            }
        })

         gridSquareView.square.targeted = false;

         gridSquareView.mod = new Modifier({
            origin: [0.5,0.5],
            align: [0.5,0.5]
        })
        
        gridSquareView.add(gridSquareView.mod).add(gridSquareView.square);

        squares.push(gridSquareView);

    }
        targetSquare = squares[squareNum].square;
        targetMod = squares[squareNum].mod;
        targetSquare.targeted = true;



        function checkTargetedStatus() {
            if (targetSquare.targeted == true) {
             targetSquare.setProperties({
                    borderColor: blue,
                    borderStyle: 'dotted'
                })                
            }
        }

        checkTargetedStatus(targetSquare);


    var input = new InputSurface({
        size: [200, 20],
        name: 'inputSurface',
        placeholder: 'Type text here',
        value: '',
        type: 'text'
    });
    
    //Events
    
    
     input.on('keyup', function(event) {
            var keyPressed = String.fromCharCode(event.charCode);
            var inputValue = input.getValue();
            var color;
            //targetSquare.setContent(inputValue);
            if (inputValue == questions[questionNum][1]) {
                corkPop.play();
                targetSquare.setProperties({
                    borderStyle: 'none',
                    backgroundColor: blue

                })
                targetMod.setTransform(
                    Transform.translate(0, -400, 0),
                    { duration : 1000, curve: Easing.inOutQuint }
                );
                targetSquare.targeted = false;

                squareNum+=1;
                questionNum++;
                targetSquare = squares[squareNum].square;
                targetMod = squares[squareNum].mod;
                targetSquare.targeted = true;
                checkTargetedStatus(targetSquare);
                questionDisplay.setContent(questions[questionNum][0]);
                input.setValue('');
            }          
        });


    //Render Tree   
    var centeredNode = mainContext.add(centerMod);
    centeredNode.add(inputPos).add(input);  
    centeredNode.add(squaresView);
    centeredNode.add(qDisplayPos).add(questionDisplay);

    centeredNode.add(gridMod).add(grid);

    var initialTime = Date.now();

    //mainContext.add(practiceModifier).add(practiceSurface);


});
Example #28
0
  function _createStories() {

    this.container = new ContainerSurface({
      size: [undefined, (this.options.height + this.options.margin) * (this.options.total / 2) + this.options.sloganHeight],
      classes: ['stories-container']
    });

    var grid = [], surf, mod, container, view, data, masker;

    var storiesContent = new SequentialLayout({
      direction: Utility.Direction.Y
    });
    storiesContent.sequenceFrom(grid);

    container = new ContainerSurface({
      size: [this.options.width * 2 + this.options.margin, this.options.sloganHeight]
    });
    surf = new Surface({
      size: [undefined, this.options.sloganHeight / 10],
      classes: ['stories-slogan', 'text-uppercase'],
      content: 'Featured stories'
    });
    mod = new Modifier({
      origin: [0.5, 0.5]
    });
    container.add(mod).add(surf);

    mod = new Modifier({
      origin: [0.5, 0]
    });
    this.container.add(mod).add(container);

    grid.push(container);

    var gridLayout = new GridLayout({
      dimensions: [2, 5],
      cellSize: [this.options.width, this.options.height + this.options.margin]
    });
    gridLayout.sequenceFrom(this.stories);

    for (var j = 0; j < this.options.total; j++) {
      container = new ContainerSurface({
        size: [this.options.width, this.options.height + this.options.margin]
      });
      surf = new Surface({
        size: [this.options.width, this.options.height],
        classes: ['story'],
        properties: {
          backgroundImage: 'url(http://placekitten.com/'+this.options.width+'/'+this.options.height+'?image='+j+')'
        }
      });
      container.add(surf);

      surf = new Surface({
        size: [this.options.width, this.options.height],
        classes: ['story-masker']
      });
      masker = new Modifier({
        opacity: 0
      });
      this.maskers.push(masker);
      container.add(masker).add(surf);

      data = {
        author: 'Hina Chen',
        slogan: 'I\'m Hina.'
      };

      surf = new Surface({
        size: [this.options.width / 2, this.options.height / 2],
        classes: ['story-item-content'],
        content: '<h3 class="author">'+data.author+'</h3><hr class="short-line"><h2 class="slogan">'+data.slogan+'</h2>'
      });
      mod = new Modifier({
        origin: [0.5, 0.5]
      });
      container.add(mod).add(surf);

      surf = new Surface({
        size: [this.options.width, this.options.height],
        classes: ['story-masker-trigger']
      });
      surf.on('mouseenter', function(key, event) {
        if (this._maskerTimer !== undefined) clearTimeout(this._maskerTimer);
        this._maskerTimer = setTimeout(function(key) {
          this.maskers[key].setOpacity(1, this.options.transition);
        }.bind(this, key), 300);
      }.bind(this, j));
      surf.on('mouseleave', function(key, event) {
        if (this._maskerTimer !== undefined) clearTimeout(this._maskerTimer);
        this.maskers[key].setOpacity(0, this.options.transition);
      }.bind(this, j));
      container.add(surf);

      view = new View();
      view.add(container);

      this.stories.push(view);
    }

    container = new ContainerSurface({
      size: [this.options.width * 2 + this.options.margin, (this.options.height + this.options.margin) * (this.options.total / 2)]
    });
    mod = new Modifier({
      origin: [0.5, 0.9]
    });
    container.add(gridLayout);

    this.container.add(mod).add(container);
    this.container.pipe(this.options.scroller);

    this.add(this.container);
  }
Example #29
0
define(function(require, exports, module) {
    // import dependencies
    var Engine = require('famous/core/Engine');
    var Entity = require('famous/core/Entity');
    var Surface = require('famous/core/Surface');
    var Transform = require('famous/core/Transform');
    var RenderNode = require('famous/core/RenderNode');
    var FlexibleLayout = require('famous/views/FlexibleLayout');
    var GridLayout = require('famous/views/GridLayout');
    var Modifier = require('famous/core/Modifier');
    var ShortText = require('ksf-ui/widget/input/ShortText');
    var Button = require('ksf-ui/widget/themed/base/Button');
    var KSFVFlexLayout = require('ksf-ui/layout/VFlex');
    var KSFInFamousAdapter = require('../KSFInFamousAdapter');

    Engine.setOptions({
        appMode: false
    });


    var root = document.createElement('div');
    root.classList.add('famous-root');
    root.style.height = "400px";
    root.style.backgroundColor = "#EEE";
    document.body.appendChild(root);

    var mainContext = Engine.createContext(root);


    var layout = new FlexibleLayout({
        direction: FlexibleLayout.DIRECTION_Y,
        ratios: [true, 1]
    });

    mainContext.add(layout);

    
    var BackgroundLayout = function() {
        RenderNode.apply(this, arguments);
    };
    BackgroundLayout.prototype = Object.create(RenderNode.prototype);
    BackgroundLayout.prototype.getSize = function() {
        return this._child[1].getSize();
    };

    var PaddingLayout = function(padding) {
        this._padding = padding;
        this._node = new RenderNode();
        this._entityId = Entity.register(this);
    };
    PaddingLayout.prototype.add = function add() {
        return this._node.add.apply(this._node, arguments);
    };
    PaddingLayout.prototype.getSize = function getSize() {
        var size = this._node.getSize();
        return [size[0] + this._padding.left + this._padding.right, size[1] + this._padding.top + this._padding.bottom];
    };
    PaddingLayout.prototype.render = function() {
        return this._entityId;
    };
    PaddingLayout.prototype.commit = function(context) {
        var padding = this._padding;
        return {
            size: [context.size[0] - padding.left - padding.right, context.size[1] - padding.top - padding.bottom],
            transform: Transform.multiply(Transform.translate(padding.left, padding.top, 0), context.transform),
            target: this._node.render()
        };
    };

    // ========= top bar ===========

    var topBar = new BackgroundLayout();
    var topBarButtons = new FlexibleLayout({
        ratios: [true, 1, true],
        // transition: {
        //     curve: 'easeInOut',
        //     duration: 2000
        // }
    });
    topBar.add(new Surface({
        properties: {
            background: 'black',
        }
    }));
    topBar.add(new Modifier({
        size: [undefined, 60]
    })).add(topBarButtons);

    var logoContent = new Surface({
        size: [true, true],
        content: "KADATA",
        properties: {
            color: 'white',
            fontWeight: 'bold',
            textAlign: 'center',
            zIndex: 1
        }
    });

    var logo = new PaddingLayout({
        left: 20, right: 20,
        top: 0, bottom: 0
    });
    logo.add(new Modifier({
        origin: [0, 0.5],
        align: [0, 0.5],
        transform: Transform.translate(0, 0, 1)
    })).add(logoContent);


    var input = new PaddingLayout({
        left: 0, right: 20,
        top: 0, bottom: 0
    });
    input.add(new Modifier({
        origin: [0, 0.5],
        align: [0, 0.5],
        size: [undefined, 25],
        transform: Transform.translate(0, 0, 1),
    })).add(new KSFInFamousAdapter(new ShortText({
        placeholder: "Nom du projet",
    }), {
        properties: {
            background: 'transparent',
            color: 'white',
            border: 'none',
            borderBottom: '1px solid gray',
            zIndex: 1
        }
    }));
    // })).add(new InputSurface({
    //     placeholder: "Nom du projet",
    //     properties: {
    //         background: 'transparent',
    //         color: 'white',
    //         border: 'none',
    //         borderBottom: '1px solid gray',
    //         padding: '0.5em'
    //     }
    // }));

    var connexionBtn = new PaddingLayout({
        left: 0, right: 20,
        top: 0, bottom: 0
    });
    connexionBtn.add(new Modifier({
        origin: [0, 0.5],
        align: [0, 0.5],
        transform: Transform.translate(0, 0, 1),
    })).add(new KSFInFamousAdapter(new Button("Connexion"), {
        size: [true, true],
        properties: {
            zIndex: 1
        }
    }));


    topBarButtons.sequenceFrom([
        logo,
        input,
        connexionBtn
    ]);
    


          var grid = new GridLayout({
            dimensions: [2, 1]
          });
      
        var content1 = new RenderNode();
        var centerModifier1 = new Modifier({
            origin: [0.5, 0.5],
            align: [0.5, 0.5],
        });
        content1.add(centerModifier1).add(new Surface({
            size: [true, true],
            content: 'content 1',
            properties: {
                padding: '1em',
                background: 'yellow'
            }
        }));

        var content2 = new RenderNode();
        content2.add(new KSFInFamousAdapter(new KSFVFlexLayout().content([
            new Button("Titre"),
            [new Button("Contenu"), { flex: true }]
        ])));
        
        grid.sequenceFrom([content1, content2]);
      
      layout.sequenceFrom([topBar, grid]);
});
    function _createStrips() {
        //create a grid for icons
        var grid = new GridLayout({
            size:[undefined, undefined],
            dimensions: [3, 3]
        });
        var surfaces = [];


        grid.sequenceFrom(surfaces);

        var iconContents = [
            {text: 'BAR', imageUrl: 'img/faded-drink-icon.png', available: false},
            {text: 'BOOK', imageUrl: 'img/book-icon.png', available: true},
            {text: 'FOOD', imageUrl: 'img/food-icon.png', available: true},

            {text: 'IDEA', imageUrl: 'img/idea-icon.png', available: true},
            {text: 'MOVIE', imageUrl: 'img/movie-icon.png', available: true},
            {text: 'MUSIC', imageUrl: 'img/faded-music-icon.png', available: false},
            
            {text: 'PERSON', imageUrl: 'img/person-icon.png', available: true},
            {text: 'PLACE', imageUrl: 'img/pointer-icon.png', available: true},
            {text: 'PRODUCT', imageUrl: 'img/product-icon.png', available: true},
        ];

        this.rowModifiers = [];
        var contentCounter = 0;

        var surf, view, availability;
        var width = window.innerWidth;
        var height = window.innerHeight;

        var scaledWidth = 50*height/320;
        var scaledHeight = 60*height/320;
        for(var row = 0; row < 3; row++) {
            for(var col = 0; col < 3; col++) {
                this.rowModifiers[(row * 3) + col] = new Modifier({
                    size: [scaledWidth, scaledHeight],
                    origin: [0.5, 0.5]
                });
                //create surface from iconContents
                availability = iconContents[contentCounter].available ? 'available' : 'unavailable';

                surf = new Surface({
                    size: [undefined,undefined],
                    classes: ['filterIcon'],
                    content: '<img class="filterIconImg" width="' + scaledWidth + '" src="'+ iconContents[contentCounter].imageUrl +'"/>'+
                                '<div class="filterIconText '+ availability +'">' + iconContents[contentCounter].text +'</div>'
                });

                //push view (modifier + surface) onto surfaces
                view = new View();
                view._add(this.rowModifiers[(row * 3) + col]).add(surf);
                surfaces.push(view);

                contentCounter++;
            }
        }

        var gridMod = new Modifier({
            size: [width, 360*height/568],
            origin: [0.5, 0.5],
            transform: Transform.translate(0, 30, 0)
        });

        this._add(gridMod).add(grid);
    }