Skip to content

Commit

Permalink
Merge branch 'require-js'
Browse files Browse the repository at this point in the history
  • Loading branch information
biasmv committed Feb 8, 2015
2 parents 02998cb + 08cc9ee commit 26393b1
Show file tree
Hide file tree
Showing 69 changed files with 4,352 additions and 3,149 deletions.
147 changes: 87 additions & 60 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,39 @@
SOURCE_FILES = [
'src/core.js',
'src/buffer-allocators.js',
'src/color.js',
'src/geom.js',
'src/trace.js',
'src/symmetry.js',
'src/mol.js',
'src/gfx/animation.js',
'src/gfx/base-geom.js',
'src/gfx/cam.js',
'src/gfx/chain-data.js',
'src/gfx/custom-mesh.js',
'src/gfx/framebuffer.js',
'src/gfx/geom-builders.js',
'src/gfx/indexed-vertex-array.js',
'src/gfx/label.js',
'src/gfx/line-geom.js',
'src/gfx/mesh-geom.js',
'src/gfx/render.js',
'src/gfx/scene-node.js',
'src/gfx/shaders.js',
'src/gfx/vert-assoc.js',
'src/gfx/vertex-array-base.js',
'src/gfx/vertex-array.js',
'src/io.js',
'src/vert-assoc.js',
'src/buffer-allocators.js',
'src/vertex-array-base.js',
'src/indexed-vertex-array.js',
'src/vertex-array.js',
'src/chain-data.js',
'src/geom-builders.js',
'src/scene.js',
'src/render.js',
'src/shade.js',
'src/cam.js',
'src/shaders.js',
'src/framebuffer.js',
'src/mol/all.js',
'src/mol/atom.js',
'src/mol/bond.js',
'src/mol/chain.js',
'src/mol/mol.js',
'src/mol/residue.js',
'src/mol/select.js',
'src/mol/trace.js',
'src/mol/symmetry.js',
'src/pv.js',
'src/slab.js',
'src/animation.js',
'src/touch.js',
'src/custom-mesh.js',
'src/unique-object-id-pool.js',
'src/utils.js',
'src/viewer.js',
'src/viewpoint.js'
];
Expand All @@ -33,6 +45,30 @@ var browserify = require("browserify");
var fs = require("fs");
var mkdirp = require("mkdirp");

var START_SNIPPET="\n\
(function (root, factory) {\n\
if (typeof define === 'function' && define.amd) {\n\
define([], factory);\n\
} else {\n\
var pv = factory();\n\
root.pv = pv;\n\
root.io = pv.io;\n\
root.mol = pv.mol;\n\
root.color = pv.color;\n\
root.rgb = pv.rgb;\n\
root.viewpoint = pv.viewpoint;\n\
root.vec3 = pv.vec3;\n\
root.vec4 = pv.vec4;\n\
root.mat3 = pv.mat3;\n\
root.mat4 = pv.mat4;\n\
root.quat = pv.quat;\n\
}\n\
}(this, function () {\n\
// modules will be inlined here\n\
";

var END_SNIPPET='return pv; }));';

module.exports = function(grunt) {

// Project configuration.
Expand Down Expand Up @@ -61,23 +97,46 @@ module.exports = function(grunt) {
latedef : true,
// would love to use, but current project structure does not allow
// for it.
/* undef : true, */
undef : true,
browser : true,
devel : true,
predef : [ 'define' ],
unused : true
},
all : SOURCE_FILES
},

concat: {
dist: {
src: ALL_FILES,
dest: 'js/pv.dbg.js'
}
},
removelogging : {
dist : {
src : 'js/pv.dbg.js',
dest : 'js/pv.rel.js',
}
},
requirejs: {
js : { options : {
findNestedDependencies : true,
baseUrl : 'src',
optimize: 'none',
skipModuleInsertion : true,
include: ['pv'],
out : 'js/pv.dbg.js',
onModuleBundleComplete : function(data) {
var fs = require('fs'),
amdclean = require('amdclean'),
outputFile = data.path;
fs.writeFileSync(outputFile, amdclean.clean({
filePath: outputFile,
transformAMDChecks : false,
aggressiveOptimizations : true,
createAnonymousAMDModule : true,
wrap : {
start : START_SNIPPET,
end : END_SNIPPET
}

}));
},
}}
}
});

Expand All @@ -86,43 +145,11 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-remove-logging');
grunt.loadNpmTasks('grunt-contrib-requirejs');

// Default task(s).
grunt.registerTask('default', [
'concat', 'jshint', 'removelogging', 'uglify',
'jshint', 'requirejs:js', 'removelogging', 'uglify'
]);


grunt.registerTask('browserify', 'Browserifies the source', function(){
// task is async
var done = this.async();

// create tmp dir
mkdirp("build");

var ws = fs.createWriteStream('build/pv.js');
ws.on('finish', function () {
done();
});

// expose the pv viewer
var b = browserify({debug: true,hasExports: true});
exposeBundles(b);
b.bundle().pipe(ws);
});

// exposes the main package
// + checks the config whether it should expose other packages
function exposeBundles(b){
var packageConfig = require("./package.json");

b.add('./index.js', {expose: packageConfig.name });

// check for addition exposed packages (not needed here)
if(packageConfig.sniper !== undefined && packageConfig.sniper.exposed !== undefined){
for(var i=0; i<packageConfig.sniper.exposed.length; i++){
b.require(packageConfig.sniper.exposed[i]);
}
}
}
};
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ Changelog
- ability to add geometric shapes to the 3D scene through customMesh
- ability to specify custom color palettes (@andreasprlic)
- viewerReady event (@andreasprlic)
- PV can optionally be used as an AMD module without polluting the global namespace
- added more unit and functional tests. The tests reach a coverage of 80% of the total number of exectuable lines of code.

### New in Version 1.3.1

Expand Down
42 changes: 42 additions & 0 deletions all-tests.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>All PV Functional and Unit Tests</title>
<link rel="stylesheet" href="css/qunit.css">
<style>
#viewer {
width: 300px;
height: 300px;
display:none;
}
#root {
width:100%;
padding:0px;
margin:0px;
}
</style>
</head>
<body>
<table id=root><tr>
<td>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</td><td>
<div id="viewer"></div>
</td>
</tr></table>
</body>
<script src='js/require.js'></script>
<script src='js/qunit.js'></script>
<script>
QUnit.config.autostart = false;
QUnit.config.autoload = false;
</script>
<script data-cover-only='//src\/.*/'
data-cover-never='//(tests\/.*|src\/gl-matrix\.js)/'
src='js/blanket.min.js'></script>

<script src='src/tests/all.js'></script>
</html
71 changes: 69 additions & 2 deletions demo.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
var structure;

requirejs.config({
'baseUrl' : 'src' ,
// uncomment the following commented-out block to test the contatenated,
// minified PV version. Grunt needs to be run before for this to work.
/*
paths : {
pv : '/js/pv.min'
}
*/
});


// on purpose outside of the require block, so we can inspect the viewer object
// from the JavaScript console.
var viewer;

require(['pv'], function(pv) {

var io = pv.io;
var viewpoint = pv.viewpoint;
var color = pv.color;

var structure;

function lines() {
viewer.clear();
Expand All @@ -13,7 +35,7 @@ function cartoon() {
var go = viewer.cartoon('structure', structure, {
color : color.ssSuccession(), showRelated : '1',
});
var rotation = principalAxes(go);
var rotation = viewpoint.principalAxes(go);
viewer.setRotation(rotation)
}

Expand Down Expand Up @@ -138,3 +160,48 @@ function byChain() {
function polymerase() {
load('4UBB');
};

$(document).foundation();
$('#1r6a').click(transferase);
$('#1crn').click(crambin);
$('#1ake').click(kinase);
$('#4ubb').click(polymerase);
$('#4c46').click(longHelices);
$('#2f8v').click(telethonin);
$('#style-cartoon').click(cartoon);
$('#style-tube').click(tube);
$('#style-line-trace').click(lineTrace);
$('#style-sline').click(sline);
$('#style-trace').click(trace);
$('#style-lines').click(lines);
$('#style-balls-and-sticks').click(ballsAndSticks);
$('#style-spheres').click(spheres);
$('#color-uniform').click(uniform);
$('#color-element').click(byElement);
$('#color-chain').click(byChain);
$('#color-ss-succ').click(ssSuccession);
$('#color-ss').click(ss);
$('#color-rainbow').click(rainbow);
$('#load-from-pdb').change(function() {
var pdbId = this.value;
this.value = '';
this.blur();
$.ajax('http://pdb.org/pdb/files/'+pdbId+'.pdb')
.done(function(data) {
structure = io.pdb(data);
cartoon();
viewer.autoZoom();
})
});
viewer = pv.Viewer(document.getElementById('viewer'), {
width : 'auto', height: 'auto', antialias : true,
outline : true, quality : 'medium',
background : '#333', animateTime: 500,
});
viewer.addListener('viewerReady', longHelices);

window.addEventListener('resize', function() {
viewer.fitParent();
});

});

0 comments on commit 26393b1

Please sign in to comment.