Skip to content

Commit

Permalink
Merge pull request #5 from dobozysaurus/master
Browse files Browse the repository at this point in the history
Added grunt builds and support for data-preview-url, which allows the preview resource to differ from the link's href.
  • Loading branch information
alanphoon committed Dec 4, 2014
2 parents 9f45109 + c4c8d8c commit ccb45db
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 35 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -0,0 +1 @@
node_modules
24 changes: 24 additions & 0 deletions Gruntfile.js
@@ -0,0 +1,24 @@
module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'js/<%= pkg.name %>.js',
dest: 'js/<%= pkg.name %>.min.js'
}
}
});

// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');

// Default task(s).
grunt.registerTask('default', ['uglify']);


};
73 changes: 39 additions & 34 deletions js/jquery-live-preview.js
Expand Up @@ -7,7 +7,8 @@ Licensed under GNU GENERAL PUBLIC LICENSE
***********************************************/
(function($) {
$.fn.extend({
livePreview: function(options){
livePreview: function(options) {

var defaults = {
trigger: 'hover',
targetWidth : 1000,
Expand All @@ -16,7 +17,7 @@ Licensed under GNU GENERAL PUBLIC LICENSE
viewHeight: 200,
position: 'right',
positionOffset: 50,
}
};

var options = $.extend(defaults, options);
//calculate appropriate scaling based on width.
Expand All @@ -34,12 +35,44 @@ Licensed under GNU GENERAL PUBLIC LICENSE
else
scale_f = scale_h;
}

var showPreview = function(event) {
var triggerType = event.data.triggerType;
var obj = event.data.target;
var href = event.data.href;
var s = event.data.scale;

if( (triggerType == 'click') && ($('#' + preview_id).length == 0) ) {
event.preventDefault();
}

var currentPos = options.position;
if(obj.attr("data-position"))
currentPos = obj.attr("data-position");

var currentOffset = options.positionOffset;
if(obj.attr("data-positionOffset"))
currentOffset = obj.attr("data-positionOffset");

if(obj.attr("data-scale"))
s = obj.attr("data-scale");

var pos = $(this).offset();
var width = $(this).width();
var leftpos = pos.left + width + currentOffset;
if(currentPos == 'left')
leftpos = pos.left - options.viewWidth - currentOffset;
var toppos = pos.top - (options.viewHeight/2);
//hover on
$('body').append('<div id="livepreview_dialog" class="' + currentPos + '" style="display:none; padding:0px; left: ' + leftpos + 'px; top:' + toppos + 'px; width: ' + options.viewWidth + 'px; height: ' + options.viewHeight + 'px"><div class="livepreview-container" style="overflow:hidden; width: ' + options.viewWidth + 'px; height: ' + options.viewHeight + 'px"><iframe id="livepreview_iframe" src="' + href + '" style="height:' + options.targetHeight + 'px; width:' + options.targetWidth + 'px;-moz-transform: scale('+ s + ');-moz-transform-origin: 0 0;-o-transform: scale('+ s + ');-o-transform-origin: 0 0;-webkit-transform: scale('+ s + ');-webkit-transform-origin: 0 0;"></iframe></div></div>');
$('#' + preview_id).fadeIn(100);
};

return this.each(function() {
var o = options;
var s = scale_f;
var obj = $(this);
var href = $(this).attr("href");
var href = obj.attr("data-preview-url") || obj.attr("href");
var triggerType = options.trigger;

if(obj.attr("data-trigger")) {
Expand All @@ -52,42 +85,14 @@ Licensed under GNU GENERAL PUBLIC LICENSE
$('#' + preview_id).remove();
});
}

obj.on(triggerType, function() {

if( (triggerType == 'click') && ($('#' + preview_id).length == 0) ) {
event.preventDefault();
}

var currentPos = o.position;
if(obj.attr("data-position"))
currentPos = obj.attr("data-position");

var currentOffset = o.positionOffset;
if(obj.attr("data-positionOffset"))
currentOffset = obj.attr("data-positionOffset");

if(obj.attr("data-scale"))
s = obj.attr("data-scale");

var pos = $(this).offset();
var width = $(this).width();
var leftpos = pos.left + width + currentOffset;
if(currentPos == 'left')
leftpos = pos.left - o.viewWidth - currentOffset;
var toppos = pos.top - (o.viewHeight/2);
//hover on
$('body').append('<div id="livepreview_dialog" class="' + currentPos + '" style="display:none; padding:0px; left: ' + leftpos + 'px; top:' + toppos + 'px; width: ' + o.viewWidth + 'px; height: ' + o.viewHeight + 'px"><div class="livepreview-container" style="overflow:hidden; width: ' + o.viewWidth + 'px; height: ' + o.viewHeight + 'px"><iframe id="livepreview_iframe" src="' + href + '" style="height:' + o.targetHeight + 'px; width:' + o.targetWidth + 'px;-moz-transform: scale('+ s + ');-moz-transform-origin: 0 0;-o-transform: scale('+ s + ');-o-transform-origin: 0 0;-webkit-transform: scale('+ s + ');-webkit-transform-origin: 0 0;"></iframe></div></div>');
$('#' + preview_id).fadeIn(100);

});


obj.on(triggerType, null, { triggerType: triggerType, target: obj, href: href, scale: s }, showPreview);
obj.on('mouseleave', function() {
$('#' + preview_id).remove();
});


});
}
});
})(jQuery);

3 changes: 2 additions & 1 deletion js/jquery-live-preview.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions package.json
@@ -0,0 +1,10 @@
{
"name": "jquery-live-preview",
"version": "0.1.0",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-nodeunit": "~0.4.1",
"grunt-contrib-uglify": "~0.5.0"
}
}

0 comments on commit ccb45db

Please sign in to comment.