// This function will remove the matching amendment for this entry (id) // can only have 1 ammendment per image, its grayed out for other changes function removeAmendment( id ) { document.amendments=document.amendments.filter(obj => obj.eid !== id) } // POST to a check URL, that will tell us if the transformation has completed, // if not, try again in 1 second... If it has finished then reset the thumbnail // to full colour, put it back to being an entry and reset the thumbnail to the // newly created one that was sent back in the response to the POST function handleTransformFiles(data,id,job_id) { if( data.finished ) { id=parseInt(id) idx = entryList.indexOf(id) // replace data for this entry now its been transformed document.entries[idx]=data.entry // update cache too // document.page[getPageNumberForId(id)][howFarIntoPageCache(id)]=data.entry // FIXME: for now just invalidate whole cache document.page.length=0 removeAmendment( id ) // redraw into figure html in dom last={ 'printed': 'not required' } html = createFigureHtml( data.entry, last, 9999 ) $('#'+id).replaceWith( html ) return false; } else { setTimeout( function() { CheckTransformJob(id,job_id,handleTransformFiles) }, 1000,id, job_id ); } } // POST to a check URL, that will tell us if the transformation has completed, // if not, try again in 1 second... If it has finished then reset the image // to full colour function handleTransformViewing(data,id,job_id) { if( data.finished ) { // stop throbber, remove grayscale & then force reload with timestamped version of im.src im.src=im.src + '?t=' + new Date().getTime(); removeAmendment( id ) return false; } else { setTimeout( function() { CheckTransformJob(id,job_id,handleTransformViewing) }, 1000,id, job_id ); } } // POST to a check URL, that will tell us if the transformation has completed, // if not, try again in 1 second... If it has finished then reset the thumbnail // to full colour, put it back to being an entry and reset the thumbnail to the // newly created one that was sent back in the response to the POST function CheckTransformJob(id,job_id,successCallback) { CheckForJobs() $.ajax( { type: 'POST', data: '&job_id='+job_id, url: '/check_transform_job', success: function(res) { successCallback(res,id,job_id); } } ) } // function to add data for document.amendment based on id and amt // used when we transform several images in files_*, or single image in viewer function addTransformAmendment(id,amt) { am={} am.eid=parseInt(id) am.type = document.amendTypes.filter(obj => obj.job_name === 'transform_image:'+amt )[0] document.amendments.push(am) } // for each highlighted image, POST the transform with amt (90, 180, 270, // fliph, flipv) which will let the job manager know what to do to this file. // we also grayscale the thumbnail out, remove the entry class for now, show // the spinning wheel, and finally kick of the checking for the transform job // to finish function Transform(amt) { // we are in the viewer with 1 image only... if( document.viewing ) { post_data = '&amt='+amt+'&id='+document.viewing.id // POST /transform for image, grayscale the image, add throbber, & start checking for end of job $.ajax({ type: 'POST', data: post_data, url: '/transform', success: function(data) { addTransformAmendment(document.viewing.id, amt) DrawImg(); CheckTransformJob(document.viewing.id,data.job_id,handleTransformViewing); return false; } }) } else { $('.highlight').each(function( cnt, e ) { post_data = '&amt='+amt+'&id='+e.id // POST /transform for image, grayscale the thumbnail, add throbber, & start checking for end of job $.ajax({ type: 'POST', data: post_data, url: '/transform', success: function(data){ addTransformAmendment(e.id, amt) last={ 'printed': 'not required' } idx = pageList.indexOf(parseInt(e.id)) html = createFigureHtml( document.entries[idx], last, 9999 ) $('#'+e.id).replaceWith( html ) CheckTransformJob(e.id,data.job_id,handleTransformFiles); return false; } }) } ) } }