From 62bdd5f029e9abebd238d76ae71f716f9361be64 Mon Sep 17 00:00:00 2001 From: Leonardo Merlin Date: Wed, 10 Jun 2015 11:30:26 -0300 Subject: [PATCH] Fix #295 - box size constrain 'solved' with JS re-calculations --- js/handlebars-helpers.js | 6 ++++-- js/jquery.equalHeights.js | 31 +++++++++++++++++++++++++++++++ js/main.js | 923 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- js/requirejs-config.js | 6 +++++- sass/style.sass | 37 ++++++++++++++++++++++++++++--------- 5 files changed, 578 insertions(+), 425 deletions(-) create mode 100644 js/jquery.equalHeights.js diff --git a/js/handlebars-helpers.js b/js/handlebars-helpers.js index 94d1021..bfae39a 100644 --- a/js/handlebars-helpers.js +++ b/js/handlebars-helpers.js @@ -37,10 +37,12 @@ define(['handlebars'], function(Handlebars){ } category = category + '' + '
' + - 'Imagem de apresentação do programa.' + + // '
' + 'Imagem de apresentação do programa.' + '
' + + '
' + '
' + proposal.title + '
' + (proposal.abstract ? '
' + proposal.abstract + '
' : '') + - 'OPINE NESTE PROGRAMA
'; + '' + + ''; // element = element + options.fn(proposal); element = element + category; diff --git a/js/jquery.equalHeights.js b/js/jquery.equalHeights.js new file mode 100644 index 0000000..7a19515 --- /dev/null +++ b/js/jquery.equalHeights.js @@ -0,0 +1,31 @@ +$.fn.equalHeights = function(px) { + 'use strict'; + + var currentTallest = 0; + $(this).each(function(index, item){ + var $item = $(item); + $item.height('auto'); // force a 'recalc' height + + if ($item.height() > currentTallest) { currentTallest = $item.height(); } + if (!px && Number.prototype.pxToEm) { currentTallest = currentTallest.pxToEm(); } //use ems unless px is specified + // for ie6, set height since min-height isn't supported + if (typeof(document.body.style.minHeight) === 'undefined') { $item.css({'height': currentTallest}); } + $item.css({'height': currentTallest}); + }); + return this; +}; + +// just in case you need it... +// $.fn.equalWidths = function(px) { +// $(this).each(function(){ +// var currentWidest = 0; +// $(this).children().each(function(i){ +// if($(this).width() > currentWidest) { currentWidest = $(this).width(); } +// }); +// if(!px && Number.prototype.pxToEm) currentWidest = currentWidest.pxToEm(); //use ems unless px is specified +// // for ie6, set width since min-width isn't supported +// if (typeof(document.body.style.minHeight) === "undefined") { $(this).children().css({'width': currentWidest}); } +// $(this).children().css({'min-width': currentWidest}); +// }); +// return this; +// }; \ No newline at end of file diff --git a/js/main.js b/js/main.js index 0117666..9caa2aa 100644 --- a/js/main.js +++ b/js/main.js @@ -150,453 +150,457 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F $loading.hide(); $('.support-proposal .alert').show(); }); - }, - - loadRanking: function($resultsContainer, topic_id, page) { - $resultsContainer.find('.loading').show(); - $resultsContainer.find('.results-content').hide(); - - var per_page = 10; - var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; - $.getJSON(url).done(function( data, stats, xhr ) { - data.pagination = { - total: parseInt(xhr.getResponseHeader('Total')), - per_page: parseInt(xhr.getResponseHeader('Per-Page')), - page: page, - }; - - $resultsContainer.html(resultsTemplate(data)); - $resultsContainer.find('.loading').hide(); - $resultsContainer.find('.results-content').show(); - $(".timeago").timeago(); - $resultsContainer.show(); - - $('.footable').footable(); - - if(data.pagination.total > data.pagination.per_page) { - $resultsContainer.find('.paging').pagination({ - items: data.pagination.total, - itemsOnPage: data.pagination.per_page, - currentPage: data.pagination.page, - prevText: '«', - nextText: '»', - cssStyle: 'compact-theme', - onPageClick: function(page, e) { - Main.loadRanking($resultsContainer, topic_id, page); - e.preventDefault(); - } - }); - } - $resultsContainer.find('.abstract-text .truncated').click(function() { - $(this).toggleClass('truncated'); + }, + loadRanking: function($resultsContainer, topic_id, page) { + $resultsContainer.find('.loading').show(); + $resultsContainer.find('.results-content').hide(); + + var per_page = 10; + var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; + $.getJSON(url).done(function( data, stats, xhr ) { + data.pagination = { + total: parseInt(xhr.getResponseHeader('Total')), + per_page: parseInt(xhr.getResponseHeader('Per-Page')), + page: page, + }; + + $resultsContainer.html(resultsTemplate(data)); + $resultsContainer.find('.loading').hide(); + $resultsContainer.find('.results-content').show(); + $(".timeago").timeago(); + $resultsContainer.show(); + + $('.footable').footable(); + + if(data.pagination.total > data.pagination.per_page) { + $resultsContainer.find('.paging').pagination({ + items: data.pagination.total, + itemsOnPage: data.pagination.per_page, + currentPage: data.pagination.page, + prevText: '«', + nextText: '»', + cssStyle: 'compact-theme', + onPageClick: function(page, e) { + Main.loadRanking($resultsContainer, topic_id, page); + e.preventDefault(); + } }); - - // scroll to the end - $('html, body').animate({ - scrollTop: $(document).height() - }, 'fast'); + } + $resultsContainer.find('.abstract-text .truncated').click(function() { + $(this).toggleClass('truncated'); }); - $('.experience-proposal-container').hide(); - $('.talk-proposal-container').hide(); - }, - loginCallback: function(loggedIn, token, user) { - logged_in = loggedIn; - $('.login .message').text(''); - var requireLoginContainer = loginButton.closest('.require-login-container'); + // scroll to the end + $('html, body').animate({ + scrollTop: $(document).height() + }, 'fast'); + }); + $('.experience-proposal-container').hide(); + $('.talk-proposal-container').hide(); + }, + loginCallback: function(loggedIn, token, user) { + logged_in = loggedIn; + $('.login .message').text(''); + var requireLoginContainer = loginButton.closest('.require-login-container'); - if(logged_in) { - Main.showLogout(); - if(token){ - Main.private_token = token; - } - requireLoginContainer = $('.require-login-container'); - requireLoginContainer.find('.require-login').show(); - requireLoginContainer.find('.require-login .message').show(); - requireLoginContainer.find('.login-container').hide(); - $.cookie('_dialoga_session', Main.private_token); - } else if (user) { - var loginContainer = requireLoginContainer.find('.login-container'); - loginContainer.show(); - loginContainer.find('.new-user').click(); - var signupForm = loginContainer.find('#signup-form'); - signupForm.find("#user_email").val(user.email); - signupForm.find("#user_name").val(user.login); - signupForm.find("#user_oauth_providers").val(user.oauth_providers); - //signupForm.find(".password").hide(); - //signupForm.find(".password-confirmation").hide(); - } else { - requireLoginContainer.find('.require-login').hide(); - requireLoginContainer.find('.login-container').show(); - Main.showLogin(); - } - }, - guid: function() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); + if(logged_in) { + Main.showLogout(); + if(token){ + Main.private_token = token; } - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); - }, - display_article: function(article_id, backTo) { - var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; - $.getJSON(url).done(function( data ) { - $('#article-container .article-content').html(articleTemplate(data.article)); - $('#article-container').show(); - $('#proposal-categories').hide(); - $('#proposal-group').hide(); - $('nav').hide(); - $('#content').hide(); - $('#article-container .go-back').attr('href', backTo); - }); - }, - // inicio Eduardo - randomProposalByTheme: function(themeClasses) { - $('#proposal-group .proposal-list .proposal-item').hide(); - $.each(themeClasses, function(i, themeClass) { - var proposalsByTheme = $('#proposal-group .proposal-list .proposal-item').find('.' + themeClass); - var randomizedIndex = Math.floor(Math.random() * proposalsByTheme.length); - var proposalToShow = $(proposalsByTheme[randomizedIndex]).parents().filter('.proposal-item'); - $(proposalToShow).show(); - }); - }, - display_category_tab: function(){ - // $('#proposal-group').hide(); - this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); - $('#proposal-group').show(); /* Show random proposals*/ - $('.content').addClass('background'); /* Add class background */ - $('#proposal-categories').show(); - $('#nav-proposal-categories a').addClass('active'); - $('#nav-proposal-group a').removeClass('active'); - $('.proposal-category-items').hide(); - $('.proposal-category .arrow-box').hide(); - $('.proposal-detail').hide(); - $('#article-container').hide(); - - $('#content').show(); - $('nav').show(); - }, - display_proposals_tab: function(){ - // $('#proposal-categories').hide(); - // this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); - $('.proposal-item').show(); /* Show all programs */ - $('#proposal-group').show(); - $('#proposal-categories').show(); - $('.proposal-category-items').hide(); - $('#nav-proposal-group a').addClass('active'); - $('#nav-proposal-categories a').removeClass('active'); - $('#content').show(); - $('#article-container').hide(); - $('nav').show(); - $('html, body').animate({ scrollTop: $('#proposal-group').offset().top }, 'fast'); - }, - // fim Eduardo - display_proposal: function(proposal_id){ - $('#proposal-categories').hide(); - $('#proposal-group').hide(); - $('.proposal-category-items').hide(); /* Hide Category Items */ - $('.content').removeClass('background'); /* Remove class background*/ - $('nav').hide(); - $('#content').hide(); - $('#article-container').hide(); - // $('.make-proposal-form').hide(); - // $('.login-container').hide(); - $('.proposal-detail').hide(); // hide all proposals - // $('.proposal-detail-base').hide(); - $proposal = $('#' + proposal_id); - $proposal.find('.proposal-detail-base').hide(); - $proposal.show(); - $proposal.find('.proposal-header').show(); - $proposal.find('.make-proposal-container').show(); - $proposal.find('.support-proposal-container').show(); - $proposal.find('.results-container').hide(); - $proposal.find('.results-container .loading').hide(); - $proposal.find('.results-container .results-content').hide(); - $proposal.find('.experience-proposal-container').show(); - $proposal.find('.talk-proposal-container').show(); - $proposal.find('.calendar').hide(); - var active_category = ''; - switch($proposal.find('.categories').attr('class')) { - case 'categories saude': - active_category = 'saude'; - break; - case 'categories educacao': - active_category = 'educacao'; - break; - case 'categories seguranca-publica': - active_category = 'seguranca-publica'; - break; - case 'categories reducao-da-pobreza': - active_category = 'reducao-da-pobreza'; - break; - } - - $proposal.find('.calendar.' + active_category).show(); - $proposal.find('.calendar').slick(); - - var topic_id = proposal_id.split('-').pop(); - this.loadRandomProposal(topic_id); - }, - display_proposal_detail: function(proposal_id){ - $('.content').removeClass('background'); /* Remove class background */ + requireLoginContainer = $('.require-login-container'); + requireLoginContainer.find('.require-login').show(); + requireLoginContainer.find('.require-login .message').show(); + requireLoginContainer.find('.login-container').hide(); + $.cookie('_dialoga_session', Main.private_token); + } else if (user) { + var loginContainer = requireLoginContainer.find('.login-container'); + loginContainer.show(); + loginContainer.find('.new-user').click(); + var signupForm = loginContainer.find('#signup-form'); + signupForm.find("#user_email").val(user.email); + signupForm.find("#user_name").val(user.login); + signupForm.find("#user_oauth_providers").val(user.oauth_providers); + //signupForm.find(".password").hide(); + //signupForm.find(".password-confirmation").hide(); + } else { + requireLoginContainer.find('.require-login').hide(); + requireLoginContainer.find('.login-container').show(); + Main.showLogin(); + } + }, + guid: function() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); + }, + display_article: function(article_id, backTo) { + var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; + $.getJSON(url).done(function( data ) { + $('#article-container .article-content').html(articleTemplate(data.article)); + $('#article-container').show(); $('#proposal-categories').hide(); $('#proposal-group').hide(); $('nav').hide(); $('#content').hide(); - $('#article-container').hide(); - $proposal = $('#proposal-item-' + proposal_id); - $proposal.find('.proposal-header').hide(); - $proposal.find('.make-proposal-container').hide(); - $proposal.find('.support-proposal-container').hide(); - $proposal.find('.results-container').hide(); - $proposal.find('.experience-proposal-container').hide(); - $proposal.find('.talk-proposal-container').hide(); - $proposal.find('.body').show(); - $proposal.show(); - - var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + Main.private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; - $.getJSON(url).done(function( data ) { - $('#proposal-item-' + proposal_id + ' .body-content').replaceWith(data.article.body); - }) - .fail(function( jqxhr, textStatus, error ) { - var err = textStatus + ', ' + error; - console.log( 'Request Failed: ' + err ); - }); - }, - display_proposal_by_category: function(item){ - var $item = $('#' + item); - - if($item.hasClass('proposal-category-items')){ - //Display Topics or Discussion by category - $('nav').show(); - $('#content').show(); - $('#proposal-categories').show(); - $('#nav-proposal-categories a').addClass('active'); - $('#nav-proposal-group a').removeClass('active'); - $('#proposal-group').hide(); /* Hide section "Programas" */ - $('.content').addClass('background'); /* Add class background */ - $('.proposal-category-items').hide(); - $('.proposal-detail').hide(); - $item.toggle( 'blind', 200, function () { - var itemOffset = $item.offset(); - if(itemOffset){ - $('html, body').animate({ scrollTop: itemOffset.top }, 'fast'); - } - } ); - $('.proposal-category .arrow-box').hide(); - var categorySlug = $item.data('category'); - $('#proposal-category-' + categorySlug).find('.arrow-box').show(); - - } - }, - addBarraDoGoverno: function(){ - - if( BARRA_ADDED ) { return; } - - var HTML_BODY_PREPEND = '' + - '
' + - '' + - '
'; - - var HTML_BODY_APPEND = ''+ - '' + - ''; - - var STYLE_TEMA_AZUL = '' + - '