Skip to content

Commit

Permalink
Introduce frontend build system using grunt.
Browse files Browse the repository at this point in the history
Signed-off-by: Anurag Priyam <anurag08priyam@gmail.com>
  • Loading branch information
yeban committed Feb 5, 2015
1 parent ec9efca commit 808276a
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 28 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Expand Up @@ -53,3 +53,5 @@ pkg
*.~*~
Gemfile.lock
.gems/*
node_modules
public/dist
86 changes: 86 additions & 0 deletions Gruntfile.js
@@ -0,0 +1,86 @@
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
prefix: 'public/dist/',
name: '<%= pkg.name.toLowerCase() %>',
cssmin: {
options: {
keepSpecialComments: 0
},
main: {
files: {
'<%= prefix %>/css/<%= name %>.min.css':
[
'public/css/bootstrap.min.css',
'public/css/font-awesome.min.css',
'public/css/custom.css'
]
}
}
},
uglify: {
options: {
},
main: {
files: {
'<%= prefix %>/js/<%= name %>.min.js':
[
// Base.
'public/js/underscore.min.js',
'public/js/jquery.min.js',
'public/js/jquery-ui.min.js',
'public/js/bootstrap.min.js',
'public/js/webshims/polyfiller.js',

// d3 - for visualisation.
'public/js/d3.v3.min.js',

// Our stuff.
'public/js/sequence.js',
'public/js/sequenceserver.js',
'public/js/jquery.t.js',
'public/js/sequenceserver.blast.js',
]
}
}
},
copy: {
shims: {
expand: true,
cwd: 'public/js/webshims/shims/',
src: '**',
dest: '<%= prefix %>/js/shims/'
},
fonts: {
expand: true,
cwd: 'public/fonts/',
src: '**',
dest: '<%= prefix %>/fonts'
}
},
compress: {
options: {
mode: 'gzip'
},
js: {
files: {
'<%= prefix %>/js/<%= name %>.min.js.gz':
'<%= prefix %>/js/<%= name %>.min.js'
}
},
css: {
files: {
'<%= prefix %>/css/<%= name %>.min.css.gz':
'<%= prefix %>/css/<%= name %>.min.css'
}
}
}
});

grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-compress');

grunt.registerTask('build', ['cssmin', 'uglify', 'copy', 'compress']);
};
5 changes: 5 additions & 0 deletions lib/sequenceserver.rb
Expand Up @@ -272,6 +272,11 @@ class App < Sinatra::Base
mime_type :fasta, 'text/fasta'
end

configure :production do
set :public_folder,
lambda { File.join SequenceServer.root, 'public', 'dist' }
end

helpers do
# Render an anchor element from the given Hash.
#
Expand Down
24 changes: 24 additions & 0 deletions package.json
@@ -0,0 +1,24 @@
{
"name": "SequenceServer",
"description": "BLAST searching made easy!",
"version": "1.0.0-2",
"homepage": "http://www.sequenceserver.com",
"repository": "https://github.com/yannickwurm/sequenceserver",
"author": {
"name": "Anurag Priyam",
"email": "anurag08priyam@gmail.com"
},
"dependencies": {
},
"devDependencies": {
"grunt": "0.4.5",
"grunt-cli": "0.1.13",
"grunt-contrib-cssmin": "0.11.0",
"grunt-contrib-uglify": "0.4.0",
"grunt-contrib-copy": "0.7.0",
"grunt-contrib-compress": "0.13.0"
},
"scripts": {
"build": "grunt build"
}
}
29 changes: 17 additions & 12 deletions public/js/sequenceserver.js
@@ -1,31 +1,36 @@
//helpers methods to disable, enable, and uncheck radio buttons and checkboxes
(function( $ ){
/**
* Load necessary polyfills.
*/
$.webshims.polyfill('forms');

/**
* Helpers methods to disable, enable, and uncheck radio buttons and
* checkboxes.
*/
(function ($) {
//disable an element
$.fn.disable = function() {
return this.prop('disabled', true).addClass('disabled');
};
})( jQuery );

(function( $ ){
})(jQuery);
(function ($) {
//enable an element
$.fn.enable = function() {
return this.prop('disabled', false).removeClass('disabled');
};
})( jQuery );

(function( $ ){
})(jQuery);
(function ($) {
//uncheck an element
$.fn.uncheck = function() {
return this.prop('checked', false);
};
})( jQuery );

(function( $ ){
})(jQuery);
(function ($) {
//check an element
$.fn.check = function() {
return this.prop('checked', true);
};
})( jQuery );
})(jQuery);

/**
* Wiggle an element.
Expand Down
37 changes: 21 additions & 16 deletions views/search.erb
Expand Up @@ -16,9 +16,13 @@

<link href='http://fonts.googleapis.com/css?family=Roboto:400' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/bootstrap.min.css"/>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/font-awesome.min.css"/>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/custom.css"/>
<% if settings.production? %>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/sequenceserver.min.css"/>
<% else %>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/bootstrap.min.css"/>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/font-awesome.min.css"/>
<link rel="stylesheet" media="screen,print" type="text/css" href="css/custom.css"/>
<% end %>
</head>

<body>
Expand Down Expand Up @@ -402,19 +406,20 @@
</div> <!-- sequence viewing -->

<!-- JS -->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/underscore.min.js"></script>
<script type="text/javascript" src="js/webshims/polyfiller.js"></script>
<script type="text/javascript">
$.webshims.polyfill('forms');
</script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/d3.v3.min.js"></script>
<script type="text/javascript" src="js/sequenceserver.js"></script>
<script type="text/javascript" src="js/sequenceserver.blast.js"></script>
<script type="text/javascript" src="js/jquery.t.js"></script>
<script type="text/javascript" src="js/sequence.js"></script>
<% if settings.production? %>
<script src="js/sequenceserver.min.js"></script>
<% else %>
<script type="text/javascript" src="js/underscore.min.js"></script>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/webshims/polyfiller.js"></script>
<script type="text/javascript" src="js/d3.v3.min.js"></script>
<script type="text/javascript" src="js/sequenceserver.js"></script>
<script type="text/javascript" src="js/sequenceserver.blast.js"></script>
<script type="text/javascript" src="js/jquery.t.js"></script>
<script type="text/javascript" src="js/sequence.js"></script>
<% end %>

<!-- twitter -->
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
Expand Down

0 comments on commit 808276a

Please sign in to comment.