function overlay_in() { $('.shadow').css({'display' : 'block'}); $('.overlay').css({'display' : 'block'}); $('.shadow').animate({'opacity' : 0.7}); $('.overlay').animate({'opacity' : 1.0, 'top' : '5%'}); } function overlay_out() { $('.shadow').animate({'opacity' : 0.0}, function () { $('.overlay').css({'display' : 'none'}); }); $('.overlay').animate({'opacity' : 0.0, 'top' : '0'}, function () { $('.shadow').css({'display' : 'none'}); }); end_edit(); } function init_edit(partID) { // var block_input = $('') // block_input.val($('#block-info').text()); // $('#block-info').replaceWith(block_input); // var type_input = $('') // type_input.val($('#type-info').text()); // $('#type-info').replaceWith(type_input); $('table#details tr#location td p').hide(); $('table#details tr#location td select').show(); $('table#details tr#partno td p').hide() $('table#details tr#partno td input').show() $('table#details tr#description td p').hide() $('table#details tr#description td input').show() // var partno_input = $('') // partno_input.val($('#partno-info').text()); // $('table#details tr#partno td').replaceWith(partno_input); // var description_input = $('') // description_input.val($('#description-info').text()); // $('#description-info').replaceWith(description_input); // var quantity_input = $('') // quantity_input.val($('#quantity-info').text()); // $('#quantity-info').replaceWith(quantity_input); // var notes_input = $('') // notes_input.val($('#notes-info').text()); // $('#notes-info').replaceWith(notes_input); var datasheet_input = $('') $('#datasheet-info').replaceWith(datasheet_input); var newButton = '
'; $('.round-button-left').replaceWith(newButton); } function new_entry() { $('table#details tr#location td').text(''); $('table#details tr#partno td').text(''); $('table#details tr#description td').text(''); // $('#block-info').text(''); // $('#type-info').text(''); // $('#partno-info').text(''); // $('#description-info').text(''); // $('#quantity-info').text(''); // $('#notes-info').text(''); init_edit(-1); overlay_in(); } function end_edit() { $('table#details tr#location td p').show(); $('table#details tr#location td select').hide(); $('table#details tr#partno td p').show() $('table#details tr#partno td input').hide() $('table#details tr#description td p').show() $('table#details tr#description td input').hide() // var block_par = '

' + $('#block-input').val() + '

'; // $('#block-input').replaceWith(block_par); // var type_par = '

' + $('#type-input').val() + '

'; // $('#type-input').replaceWith(type_par); // var partno_par = '

' + $('#partno-input').val() + '

'; // $('#partno-input').replaceWith(partno_par); // var description_par = '

' + $('#description-input').val() + '

'; // $('#description-input').replaceWith(description_par); // var quantity_par = '

' + $('#quantity-input').val() + '

'; // $('#quantity-input').replaceWith(quantity_par); // var notes_par = '

' + $('#notes-input').val() + '

'; // $('#notes-input').replaceWith(notes_par); // var datasheet_par = '

'; // $('#datasheet-input').replaceWith(datasheet_par); var newButton = '
'; $('.round-button-left').replaceWith(newButton); } function save(partID) { var block_v = $('#block-input').val(); var type_v = $('#type-input').val(); var partno_v = $('#partno-input').val(); var description_v = $('#description-input').val(); var quantity_v = $('#quantity-input').val(); var notes_v = $('#notes-input').val(); var datasheet = $('#datasheet-input')[0].files; if(! partno_v.match(/^([a-zA-Z0-9]{1,20}\s*){1,3}$/g)) { alert('Invalid part number format. Accepted: '); return; } if(! block_v.match(/^[0-9]+$/g)) { alert('Invalid location field. Only numbers accepted.'); return; } if(type_v.length > 25) { alert('Manufacturer name too long (max 25 characters).') return; } if(description_v.length > 200) { alert('Description too long (max 200 characters).') return; } if(quantity_v.length > 10) { alert('Quantity info too long (max 10 characters).') return; } if(notes_v.length > 200) { alert('Notes too long (max 200 characters).') return; } var partnos = partno_v.split(' '); var data = new FormData(); if (datasheet.length == 1) if(! datasheet[0]['name'].match(/^[\w\-]+\.pdf$/g)) { alert('Invalid filename. Please match /^[\w\-]+\.pdf$/g'); return; } data.append('datasheet-file', datasheet[0]); data.append('block', block_v); data.append('type', type_v); data.append('partno', partnos[0]); if (partnos.length > 1) data.append('partnoalt', partnos[1]); else data.append('partnoalt', ''); if(partnos.length > 2) data.append('partnoalt2', partnos[2]); else data.append('partnoalt2', ''); data.append('description', description_v); data.append('quantity', quantity_v); data.append('notes', notes_v); $.ajax({ // Your server script to process the upload url: 'http://127.0.0.1:5000/parts/alter/' + partID, type: 'POST', data: data, // Tell jQuery not to process data or worry about content-type // You *must* include these options! cache: false, contentType: false, processData: false, success: function(data) { var datasheet_par = '

'; $('#datasheet-info').replaceWith(datasheet_par); }, error: function() { alert("Couldn't update the part information. Please retry."); } }); end_edit(); $('#edit-button').click(function() { init_edit(partID); }); } function text_filter(string) { if (string != null) return string; else return ''; } function delete_entry(partID) { if (partID < 0) return; if (!confirm('Delete the selected entry?')) return; $.ajax({ url: 'http://127.0.0.1:5000/parts/delete/' + partID, type: 'GET', cache: false, contentType: false, processData: false, success: function() { overlay_out(); perform_query(); }, fail: function() { console.log('An error occurred while deleting the entry'); }, }); } function show_part_info(partID) { $.getJSON('http://127.0.0.1:5000/parts/getpartinfo/' + partID, function(data) { $('table#details tr#location td p').text(text_filter(data.name)); // name is the location friendly name $('table#details tr#partno td p').text(text_filter(data.partno)); $('table#details tr#partno td input').val(text_filter(data.partno)); $('table#details tr#description td p').text(text_filter(data.description)); $('table#details tr#description td input').val(text_filter(data.description)); $('img#map').attr('src', 'parts/map/' + data.map); if (data.datasheet != null) $('tr#datasheet-head').html($('DATASHEET: ')); else $('tr#datasheet-head td').text('DATASHEET: '); $('#edit-button').click(function() { init_edit(partID); }); $('#delete-button').click(function() { delete_entry(partID); }); overlay_in(); }).fail(function() { console.log( "Fetching part info failed" ); }); } function perform_query() { $('#no-results').css("opacity", 0); var query = $('.search-bar').val(); var data = { l:$('#type').is(':checked'), p:$('#partno').is(':checked'), d:$('#description').is(':checked'), n:$('#notes').is(':checked') }; filter = '0'; $.getJSON('http://127.0.0.1:5000/parts/query/' + filter + '/' + query, data, function(data) { $("#results").find("tr:not(:first)").remove(); // Delete all table rows for(var i = 0; i < data.length; i++) { var newRow = $(''); newRow.append($('').text(text_filter(data[i].location_descriptor))); newRow.append($('').text(text_filter(data[i].partno))); newRow.append($('').text(text_filter(data[i].description))); $('#results').append(newRow); } if(data.length == 0) { $('#no-results').animate({opacity:1},2000); } }).fail(function() { var newResults = '
'; newResults += '

No results.

'; newResults += '
'; $('.results').replaceWith(newResults); console.log( "Query failed" ); }); } $(document).ready(function() { $.getJSON('http://127.0.0.1:5000/parts/getlocations', function(data){ $.each(data, function(i, val) { $('table#details tr#location td select').append(''); }); }); $.ajaxSetup({ cache: false }); $('.search-bar').on('keyup', function() { perform_query(); }); $('.checkbox').change( function() { if ( !$('#location').is(':checked') && !$('#partno').is(':checked') && !$('#description').is(':checked') && !$('#notes').is(':checked')) $(this).prop('checked', true); else perform_query(); }); }); $(document).ready(function() { $("#clickablemap").on("click", function(event) { var $img = $(this); var currentClickPosX = event.pageX - $img.offset().left; var currentClickPosY = event.pageY - $img.offset().top; var currentWidth = $img.width(); var currentHeight = $img.height(); var naturalWidth = this.naturalWidth; var naturalHeight = this.naturalHeight; var correctX = ((naturalWidth / currentWidth) * currentClickPosX).toFixed(0); var correctY = ((naturalHeight / currentHeight) * currentClickPosY).toFixed(0); $("#mapURL").html("elab.png?x=" + correctX + "&y=" + correctY); $("#clickablemap").attr("src", "http://127.0.0.1:5000/parts/map/elab.png?x=" + correctX + "&y=" + correctY); }); });