+
+data); ?>
\ No newline at end of file
diff --git a/views/shipments/index.ctp b/views/shipments/index.ctp
index f7fd97ef..fa3aa635 100644
--- a/views/shipments/index.ctp
+++ b/views/shipments/index.ctp
@@ -134,7 +134,7 @@
-
+
@@ -152,8 +152,12 @@
-
- =$this->element('add_shipment');?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/webroot/js/add_edit_shipment.js b/webroot/js/add_edit_shipment.js
new file mode 100644
index 00000000..53259169
--- /dev/null
+++ b/webroot/js/add_edit_shipment.js
@@ -0,0 +1,289 @@
+$(function() {
+
+ var addedBoxes = $(".boxForm").length;
+
+ $('button').button();
+ displayReleventFields();
+
+ $('#date_arrived_display').datepicker({
+ showButtonPanel: true,
+ dateFormat: 'd M yy',
+ altFormat: 'yy-mm-dd',
+ altField: '#date_arrived'
+ });
+
+
+ $('#date_dispatched_display').datepicker({
+ showButtonPanel: true,
+ dateFormat: 'd M yy',
+ altFormat: 'yy-mm-dd',
+ altField: '#date_dispatched'
+ });
+
+ /**
+ * Display the relevent elements depending on this Shipment Type */
+ $("#shipmentType").change(function() {
+ displayReleventFields();
+
+ });
+
+ //Remove X button clicked.
+ $('.removeFromList').live('click', function() {
+ $(this).parent().remove();
+ });
+
+
+
+ $('#addPrinciple').button().click(function() {
+
+ var principleID = getSelectedID('#PrinciplePrinciple');
+
+ if($('#PrincipleID_'+principleID).length > 0) { //This Principle is already in the List. Don't do anything.'
+ return false;
+ }
+
+ var principleName =getSelectedText('#PrinciplePrinciple');
+
+ //addPrincipleToList(principleID);
+ addToList('Principle', principleID, principleName, $('#principlesList') );
+
+ return false;
+
+ });
+
+
+ $( "#purchase_order_autocomplete" ).autocomplete({
+ source: "/purchase_orders/autocomplete",
+ minLength: 2,
+ select: function( event, ui ) {
+ //alert(ui.item.value + ":" + ui.item.id);
+ //alert($('#PurchaseOrderID_'+ui.item.id).length);
+
+
+ if($('#PurchaseOrderID_'+ui.item.id).length == 0) { //This PO is already in the List. Don't do anything.'
+ addToList('PurchaseOrder', ui.item.id, ui.item.value, $('#purchaseOrdersList'));
+ }
+
+
+ }
+ });
+
+ $( "#job_autocomplete" ).autocomplete({
+ source: "/jobs/autocomplete",
+ minLength: 2,
+ select: function( event, ui ) {
+ //alert(ui.item.value + ":" + ui.item.id);
+
+ if($('#JobID_'+ui.item.id).length == 0) { //This Job is already in the List. Don't do anything.'
+ addToList('Job', ui.item.id, ui.item.value, $('#jobsList'));
+ }
+ }
+ });
+
+
+ $("#customer_autocomplete").autocomplete({
+ source: "/customers/completeCustomer",
+ minLength: 2,
+ select: function( event, ui ) {
+ $("#customer_id").val(ui.item.id);
+
+ $.get('/addresses/customerAddresses/'+ui.item.id, function(data) {
+ $("#address").html(data);
+ $(".selectAddress", data).button();
+ });
+
+ }
+ })
+
+
+ $("#addBox").button().click(function() {
+ addBox(addedBoxes);
+ addedBoxes++;
+ });
+
+ $(".removeBox").live('click',function() {
+ $(this).parent().remove();
+ });
+
+
+ $(".selectAddress").live('click', function() {
+ var ID = $(this).attr('id');
+ $("#address_id").val(ID);
+
+
+
+
+ $(this).removeClass('selectAddress');
+ $(this).addClass('changeAddress');
+
+ $(".selectAddress").button('disable');
+ $(".selectAddress").parent('div').fadeOut();
+
+ $(this).button({
+ label: 'Select a different address'
+ });
+ $(this).button('enable');
+
+ });
+
+ $(".changeAddress").live('click', function() {
+ $("#address_id").val('');
+ $(this).removeClass('changeAddress');
+ $(this).button({
+ label: 'Ship to this Address'
+ });
+ $(this).addClass('selectAddress');
+
+ $(".selectAddress").parent('div').fadeIn();
+
+ $('.selectAddress').button('enable');
+ });
+
+
+ function displayReleventFields() {
+ var shipmentTypeID = getSelectedID('#shipmentType');
+ shipmentTypeID = parseInt(shipmentTypeID);
+ $(".hiddenDefault").hide();
+
+ switch(shipmentTypeID) {
+ case 1: //Import
+ $("#importFields, #principle, #purchaseOrder, #freight_forwarder, #airway_bill, #boxes").show();
+ break;
+
+ case 2: //Direct
+ $("#purchaseOrder, #job,#principle, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
+ break;
+ case 3: //Export
+ $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
+ break;
+ case 4: //Local
+ $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
+
+ break;
+
+ default:
+
+
+ break;
+ }
+ }
+
+ function addBox(addedBoxes) {
+
+ var model = 'Box';
+
+ var newBoxForm = $("#boxFactory").clone();
+
+ var boxNo = addedBoxes;
+
+ newBoxForm.attr('id','');
+ newBoxForm.addClass('boxForm');
+ newBoxForm.show();
+
+ //Set the appropriate naming for the fields so cake can work its magic.
+ //Should refactor into a function.
+ var div = newBoxForm.find('.length');
+ var ID = getCakeID(model,boxNo,'length');
+ var name = getCakeName(model, boxNo, 'length');
+ div.children('label').attr('for', ID);
+ div.children('input').attr('id', ID).attr('name', name);
+
+ div = newBoxForm.find('.width');
+ ID = getCakeID(model,boxNo,'width');
+ name = getCakeName(model, boxNo, 'width');
+ div.children('label').attr('for', ID);
+ div.children('input').attr('id', ID).attr('name', name);
+
+ div = newBoxForm.find('.height');
+ ID = getCakeID(model,boxNo,'height');
+ name = getCakeName(model, boxNo, 'height');
+ div.children('label').attr('for', ID);
+ div.children('input').attr('id', ID).attr('name', name);
+
+ div = newBoxForm.find('.weight');
+ ID = getCakeID(model,boxNo,'weight');
+ name = getCakeName(model, boxNo, 'weight');
+ div.children('label').attr('for', ID);
+ div.children('input').attr('id', ID).attr('name', name);
+
+
+
+
+
+ var closeButton = $('');
+ closeButton.addClass('removeBox');
+ closeButton.button();
+
+ newBoxForm.prepend(closeButton);
+
+ $("#boxes").append(newBoxForm);
+ }
+
+
+ function getCakeID(model, count, field) {
+ return model+count+capitalizeFirstLetter(field);
+ }
+
+ function getCakeName(model, count, field) {
+ return 'data['+model+']['+count+']['+field+']';
+ }
+
+ function capitalizeFirstLetter(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+ }
+
+
+ /**
+ * A more generic way of handling the HABTM
[REMOVE BUTTON] NAME [HIDDEN INPUT]
+ */
+ function addToList(modelName, id, value, ULelement) {
+ var thisLI = $('');
+ var thisButton = $('');
+ thisButton.addClass('removeFromList');
+ thisButton.button();
+
+ var thisHiddenInput = $('');
+
+ var modelString = '['+modelName+']';
+
+ thisHiddenInput.attr('name', 'data'+modelString+modelString+'[]');
+
+ thisHiddenInput.attr('value', id);
+
+ thisLI.attr('id', modelName+'ID_'+id);
+ thisLI.html(value);
+ thisLI.prepend(thisButton);
+ thisLI.append(thisHiddenInput);
+ ULelement.append(thisLI);
+
+ }
+
+
+ function getSelectedID(elementID) {
+ var id;
+ $(elementID+" :selected").each(function(i, selected) {
+ id = this.value;
+ });
+ return id;
+ }
+
+ function getSelectedText(elementID) {
+ var text;
+ $(elementID+" :selected").each(function(i, selected) {
+ text = $(selected).text();
+ });
+ return text;
+ }
+
+ /**
+ * Resets the Form to its default site
+ */
+
+ function resetForm() {
+
+ $(".hiddenDefault").hide();
+ //$("#ShipmentAddForm")[0].reset();
+ }
+
+
+});
diff --git a/webroot/js/shipment_index.js b/webroot/js/shipment_index.js
index be593874..c0dce791 100644
--- a/webroot/js/shipment_index.js
+++ b/webroot/js/shipment_index.js
@@ -1,10 +1,9 @@
$(function() {
- resetForm();
+
+
- var addedBoxes = 0;
-
- $( "#dialog-form" ).dialog({
+ $( "#add-form" ).dialog({
autoOpen: false,
height: 900,
width: 600,
@@ -14,14 +13,14 @@ $(function() {
var thisShipmentInputs = $('#ShipmentAddForm').find('input,select,textarea');
$.post('/shipments/ajax_add', thisShipmentInputs, function(data) {
- $( "#dialog-form" ).dialog('close');
- //window.location.reload(); //Change this to fetch a new copy of the table and update a
.
+ $( "#add-form" ).dialog('close');
+ window.location.reload(); //Change this to fetch a new copy of the table and update a
.
});
},
Cancel: function() {
$( this ).dialog( "close" );
- $("#ShipmentAddForm")[0].reset();
+ //$("#ShipmentAddForm")[0].reset();
$("#principlesList").empty();
}
},
@@ -34,289 +33,66 @@ $(function() {
}
});
- $( ".newShipment" ).button().click(function() {
- $( "#dialog-form" ).dialog( "open" );
+ $( "#edit-form" ).dialog({
+ autoOpen: false,
+ height: 900,
+ width: 600,
+ modal: true,
+ buttons: {
+ "Save Shipment": function() {
+ var thisShipmentInputs = $('#ShipmentEditForm').find('input,select,textarea');
- });
+ $.post('/shipments/ajax_edit', thisShipmentInputs, function(data) {
+ $( "#edit-form" ).dialog('close');
+ window.location.reload(); //Change this to fetch a new copy of the table and update a
.
+ });
+
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ //$("#ShipmentEditForm")[0].reset();
+ $("#principlesList").empty();
+ }
+ },
+ close: function() {
+
+ $("#importFields").hide();
+ $("#principle").hide();
-
- $('#date_arrived_display').datepicker({
- showButtonPanel: true,
- dateFormat: 'd M yy',
- altFormat: 'yy-mm-dd',
- altField: '#date_arrived'
- });
-
-
- $('#date_dispatched_display').datepicker({
- showButtonPanel: true,
- dateFormat: 'd M yy',
- altFormat: 'yy-mm-dd',
- altField: '#date_dispatched'
- });
-
- /**
- * Display the relevent elements depending on this Shipment Type */
- $("#shipmentType").change(function() {
- var shipmentTypeID = getSelectedID('#shipmentType');
- shipmentTypeID = parseInt(shipmentTypeID);
- $(".hiddenDefault").hide();
-
- switch(shipmentTypeID) {
- case 1: //Import
- $("#importFields, #principle, #purchaseOrder, #freight_forwarder, #airway_bill, #boxes").show();
- break;
-
- case 2: //Direct
- $("#purchaseOrder, #job,#principle, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
- break;
- case 3: //Export
- $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
- break;
- case 4: //Local
- $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show();
-
- break;
-
- default:
-
-
- break;
}
+ });
+
+
+ $( ".newShipment" ).button().click(function() {
+ $.get('/shipments/add/', false, function(data) {
+
+ $("#add-form").html(data);
+ } );
+
+ $( "#add-form" ).dialog( "open" );
});
- //Remove X button clicked.
- $('.removeFromList').live('click', function() {
- $(this).parent().remove();
+
+ $(".editButton").button().click(function() {
+
+ var id = $(this).attr('id');
+
+ $.get('/shipments/edit/'+id, false, function(data) {
+
+ $("#edit-form").html(data);
+ } );
+
+ $( "#edit-form" ).dialog( "open" );
});
+
+
+
+
-
- $('#addPrinciple').button().click(function() {
-
- var principleID = getSelectedID('#PrinciplePrinciple');
-
- if($('#PrincipleID_'+principleID).length > 0) { //This Principle is already in the List. Don't do anything.'
- return false;
- }
-
- var principleName =getSelectedText('#PrinciplePrinciple');
-
- //addPrincipleToList(principleID);
- addToList('Principle', principleID, principleName, $('#principlesList') );
-
- return false;
-
- });
-
-
- $( "#purchase_order_autocomplete" ).autocomplete({
- source: "/purchase_orders/autocomplete",
- minLength: 2,
- select: function( event, ui ) {
- //alert(ui.item.value + ":" + ui.item.id);
- //alert($('#PurchaseOrderID_'+ui.item.id).length);
-
-
- if($('#PurchaseOrderID_'+ui.item.id).length == 0) { //This PO is already in the List. Don't do anything.'
- addToList('PurchaseOrder', ui.item.id, ui.item.value, $('#purchaseOrdersList'));
- }
-
-
- }
- });
-
- $( "#job_autocomplete" ).autocomplete({
- source: "/jobs/autocomplete",
- minLength: 2,
- select: function( event, ui ) {
- //alert(ui.item.value + ":" + ui.item.id);
-
- if($('#JobID_'+ui.item.id).length == 0) { //This Job is already in the List. Don't do anything.'
- addToList('Job', ui.item.id, ui.item.value, $('#jobsList'));
- }
- }
- });
-
-
- $("#customer_autocomplete").autocomplete({
- source: "/customers/completeCustomer",
- minLength: 2,
- select: function( event, ui ) {
- $("#customer_id").val(ui.item.id);
-
- $.get('/addresses/customerAddresses/'+ui.item.id, function(data) {
- $("#address").html(data);
- $(".selectAddress", data).button();
- });
-
- }
- })
-
-
- $("#addBox").button().click(function() {
- addBox(addedBoxes);
- addedBoxes++;
- });
-
- $(".removeBox").live('click',function() {
- $(this).parent().remove();
- });
-
-
- $(".selectAddress").live('click', function() {
- var ID = $(this).attr('id');
- $("#address_id").val(ID);
-
-
-
-
- $(this).removeClass('selectAddress');
- $(this).addClass('changeAddress');
-
- $(".selectAddress").button('disable');
- $(".selectAddress").parent('div').fadeOut();
-
- $(this).button({
- label: 'Select a different address'
- });
- $(this).button('enable');
-
- });
-
- $(".changeAddress").live('click', function() {
- $("#address_id").val('');
- $(this).removeClass('changeAddress');
- $(this).button({
- label: 'Ship to this Address'
- });
- $(this).addClass('selectAddress');
-
- $(".selectAddress").parent('div').fadeIn();
-
- $('.selectAddress').button('enable');
- });
-
- /**
- * Resets the Form to its default site
- */
-
- function resetForm() {
-
- $(".hiddenDefault").hide();
- $("#ShipmentAddForm")[0].reset();
- }
-
-
- function addBox(addedBoxes) {
-
- var model = 'Box';
-
- var newBoxForm = $("#boxFactory").clone();
-
- var boxNo = addedBoxes;
-
- newBoxForm.attr('id','');
- newBoxForm.addClass('boxForm');
- newBoxForm.show();
-
- //Set the appropriate naming for the fields so cake can work its magic.
- //Should refactor into a function.
- var div = newBoxForm.find('.length');
- var ID = getCakeID(model,boxNo,'length');
- var name = getCakeName(model, boxNo, 'length');
- div.children('label').attr('for', ID);
- div.children('input').attr('id', ID).attr('name', name);
-
- div = newBoxForm.find('.width');
- ID = getCakeID(model,boxNo,'width');
- name = getCakeName(model, boxNo, 'width');
- div.children('label').attr('for', ID);
- div.children('input').attr('id', ID).attr('name', name);
-
- div = newBoxForm.find('.height');
- ID = getCakeID(model,boxNo,'height');
- name = getCakeName(model, boxNo, 'height');
- div.children('label').attr('for', ID);
- div.children('input').attr('id', ID).attr('name', name);
-
- div = newBoxForm.find('.weight');
- ID = getCakeID(model,boxNo,'weight');
- name = getCakeName(model, boxNo, 'weight');
- div.children('label').attr('for', ID);
- div.children('input').attr('id', ID).attr('name', name);
-
-
-
-
-
- var closeButton = $('');
- closeButton.addClass('removeBox');
- closeButton.button();
-
- newBoxForm.prepend(closeButton);
-
- $("#boxes").append(newBoxForm);
- }
-
-
- function getCakeID(model, count, field) {
- return model+count+capitalizeFirstLetter(field);
- }
-
- function getCakeName(model, count, field) {
- return 'data['+model+']['+count+']['+field+']';
- }
-
- function capitalizeFirstLetter(string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
- }
-
-
- /**
- * A more generic way of handling the HABTM
[REMOVE BUTTON] NAME [HIDDEN INPUT]
- */
- function addToList(modelName, id, value, ULelement) {
- var thisLI = $('');
- var thisButton = $('');
- thisButton.addClass('removeFromList');
- thisButton.button();
-
- var thisHiddenInput = $('');
-
- var modelString = '['+modelName+']';
-
- thisHiddenInput.attr('name', 'data'+modelString+modelString+'[]');
-
- thisHiddenInput.attr('value', id);
-
- thisLI.attr('id', modelName+'ID_'+id);
- thisLI.html(value);
- thisLI.prepend(thisButton);
- thisLI.append(thisHiddenInput);
- ULelement.append(thisLI);
-
- }
-
-
- function getSelectedID(elementID) {
- var id;
- $(elementID+" :selected").each(function(i, selected) {
- id = this.value;
- });
- return id;
- }
-
- function getSelectedText(elementID) {
- var text;
- $(elementID+" :selected").each(function(i, selected) {
- text = $(selected).text();
- });
- return text;
- }