Image Hover Zoom works for 1st page but doesnt work on second page of datatable????

Image Hover Zoom works for 1st page but doesnt work on second page of datatable????

salil93salil93 Posts: 12Questions: 2Answers: 0
edited October 2016 in Free community support

tried to implement javasciprts with to resolve the problem but in case of errors datatables disappears its css ie seach box pagination etc...I m here fetching the data from my database and displaying it all on my page on which the magnifeir for those fetched image works...

As i m working with laravel

Controller -

public function nameimages(Request $request){
$post= $request->all();
if(Auth::check()) {
$user = Auth::user();
$fname = $user->fname;
$lname = $user->lname;
$id=$user->id;
}
$result= DB::table('users')->where('fname',$post['fname'])->first();
$pid=$result->id;
$row=DB::table('patientupload')->join('users','users.id','=','patientupload.Pid')->where('users.fname',$post['fname'])->select('patientupload.upload1','patientupload.description','users.fname','users.lname','patientupload.appid')->get();
return View::make('doctorviewimg')->with('data',$row);
}

Route -

Route::post('doctorviewimg','DoctorController@nameimages');

Here my Blade file -

@extends('layouts.doctor_outheader')

@section('content')

    @include('common.errors')

<head>
<title>View</title>

$(document).ready(function(){ $('#example').dataTable(); });

<style>
.glass {
width: 175px;
height: 175px;
position: absolute;
border-radius: 50%;
cursor: crosshair;

/* Multiple box shadows to achieve the glass effect */
box-shadow:
0 0 0 7px rgba(255, 255, 255, 0.85),
0 0 7px 7px rgba(0, 0, 0, 0.25),
inset 0 0 40px 2px rgba(0, 0, 0, 0.25);

/* hide the glass by default */
display: none;
}

/************ Styles just for DEMO purpose*********/

wrap {

max-width: 700px;
margin: 20px auto;

}
.product {
margin: 20px auto;
/text-align: center;
padding: 20px;
/
}
</style>

$(function() { var native_width = 0; var native_height = 0; var mouse = {x: 0, y: 0}; var magnify; var cur_img; var ui = { magniflier: $('.magniflier') }; // Add the magnifying glass if (ui.magniflier.length) { var div = document.createElement('div'); div.setAttribute('class', 'glass'); ui.glass = $(div); $('body').append(div); } // All the magnifying will happen on "mousemove" var mouseMove = function(e) { var $el = $(this); // Container offset relative to document var magnify_offset = cur_img.offset(); // Mouse position relative to container // pageX/pageY - container's offsetLeft/offetTop mouse.x = e.pageX - magnify_offset.left; mouse.y = e.pageY - magnify_offset.top; // The Magnifying glass should only show up when the mouse is inside // It is important to note that attaching mouseout and then hiding // the glass wont work cuz mouse will never be out due to the glass // being inside the parent and having a higher z-index (positioned above) if ( mouse.x < cur_img.width() && mouse.y < cur_img.height() && mouse.x > 0 && mouse.y > 0 ) { magnify(e); } else { ui.glass.fadeOut(100); } return; }; var magnify = function(e) { // The background position of div.glass will be // changed according to the position // of the mouse over the img.magniflier // // So we will get the ratio of the pixel // under the mouse with respect // to the image and use that to position the // large image inside the magnifying glass var rx = Math.round(mouse.x/cur_img.width()*native_width - ui.glass.width()/2)*-1; var ry = Math.round(mouse.y/cur_img.height()*native_height - ui.glass.height()/2)*-1; var bg_pos = rx + "px " + ry + "px"; // Calculate pos for magnifying glass // // Easy Logic: Deduct half of width/height // from mouse pos. // var glass_left = mouse.x - ui.glass.width() / 2; // var glass_top = mouse.y - ui.glass.height() / 2; var glass_left = e.pageX - ui.glass.width() / 2; var glass_top = e.pageY - ui.glass.height() / 2; //console.log(glass_left, glass_top, bg_pos) // Now, if you hover on the image, you should // see the magnifying glass in action ui.glass.css({ left: glass_left, top: glass_top, backgroundPosition: bg_pos }); return; }; $('.magniflier').on('mousemove', function() { ui.glass.fadeIn(100); cur_img = $(this); var large_img_loaded = cur_img.data('large-img-loaded'); var src = cur_img.data('large') || cur_img.attr('src'); // Set large-img-loaded to true // cur_img.data('large-img-loaded', true) if (src) { ui.glass.css({ 'background-image': 'url(' + src + ')', 'background-repeat': 'no-repeat' }); } // When the user hovers on the image, the script will first calculate // the native dimensions if they don't exist. Only after the native dimensions // are available, the script will show the zoomed version. //if(!native_width && !native_height) { if (!cur_img.data('native_width')) { // This will create a new image object with the same image as that in .small // We cannot directly get the dimensions from .small because of the // width specified to 200px in the html. To get the actual dimensions we have // created this image object. var image_object = new Image(); image_object.onload = function() { // This code is wrapped in the .load function which is important. // width and height of the object would return 0 if accessed before // the image gets loaded. native_width = image_object.width; native_height = image_object.height; cur_img.data('native_width', native_width); cur_img.data('native_height', native_height); //console.log(native_width, native_height); mouseMove.apply(this, arguments); ui.glass.on('mousemove', mouseMove); }; image_object.src = src; return; } else { native_width = cur_img.data('native_width'); native_height = cur_img.data('native_height'); } //} //console.log(native_width, native_height); mouseMove.apply(this, arguments); ui.glass.on('mousemove', mouseMove); }); ui.glass.on('mouseout', function() { ui.glass.off('mousemove', mouseMove); }); });

</head>

Details Of Uploaded Report

Back

<?php echo Session::get('message'); ?>

{{$errors->first('status')}}

<?php if($data) { ?>
Images Image Description <?php foreach($data as $row) { <?php > ?> <?php } } else {?> Sorry! It Seems Patient Have Not Uploaded any Images or Reports.
@if (pathinfo($row->upload1, PATHINFO_EXTENSION) == 'pdf') upload1) }} >Report @else
imageupload1)}}" style="max-width:250px; max-height:250px;" class="magniflier img-responsive" alt="">
@endif
<?php echo $row->description ?>
<?php } ?>

@endsection

Answers

  • allanallan Posts: 63,534Questions: 1Answers: 10,475 Site admin

    I can't really read the above, but it sounds a lot like this FAQ.

    Allan

  • salil93salil93 Posts: 12Questions: 2Answers: 0

    sorry for that i have a lot of script and css for that page which makes it that way...my problem is that i have used image-hover-zoom for a series of images which are stored in my database and fetched them in datatables as rows on the first page image-hover-zoom works fine i can zoom every pic but when i go to second page it stops working...datatables are working fine but image-hover-zoom stops working for second page

  • allanallan Posts: 63,534Questions: 1Answers: 10,475 Site admin

    Yup - it sounds exactly like the FAQ I linked to. Did you read that and use the information from it? If so, what did you try?

    Allan

This discussion has been closed.