Going AJAX route to grab an editable row from the controller and update the table. FFS

This commit is contained in:
Karl Cordes 2011-04-06 10:22:45 +10:00
parent e99174501a
commit be49771830
6 changed files with 298 additions and 44 deletions

View file

@ -29,6 +29,38 @@ class JobsController extends AppController {
} }
/** Called via AJAX to get an editable row */
function getEditableRow($id) {
$this->layout = 'ajax';
$this->set('job', $this->Job->find('first', array('conditions'=>array('Job.id'=>$id))));
$this->set('sale_category_options', $this->sale_category_options());
$this->set('sale_category_array', $this->sale_category_array());
$this->set('job_type_options', $this->job_type_options());
$this->set('shipment_options', $this->shipment_options());
$this->set('freight_paid_by_options',$this->freight_paid_options());
$this->set('gst_options', $this->gst_options());
}
/** Called via AJAX to get an viewable row */
function getViewableRow($id) {
$this->layout = 'ajax';
$this->set('job', $this->Job->find('first', array('conditions'=>array('Job.id'=>$id))));
$this->set('sale_category_options', $this->sale_category_options());
$this->set('sale_category_array', $this->sale_category_array());
$this->set('job_type_options', $this->job_type_options());
$this->set('shipment_options', $this->shipment_options());
$this->set('freight_paid_by_options',$this->freight_paid_options());
$this->set('gst_options', $this->gst_options());
}
/** /**
* For the 'sale_category' column. * For the 'sale_category' column.

View file

@ -0,0 +1,89 @@
<tr id="<?=$job['Job']['id']?>">
<? echo $form->create('Job', array('action'=>'ajax_edit', 'id'=>'form_'.$job['Job']['id'], 'class'=>'job_table_form')); ?>
<?=$form->input('id', array('type'=>'hidden', 'value'=>$job['Job']['id'])); ?>
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
<td><?=$job['Job']['date_order_received'];?></td>
<td><?=$job['Job']['job_status'];?></td>
<td>
<?=$form->input('sale_category', array('options'=>$sale_category_options, 'label'=>false, 'selected'=>$job['Job']['sale_category'], 'class'=>'sale_category'));?>
</td>
<td>
<?=$form->input('job_type', array('options'=>$job_type_options, 'label' => false, 'selected'=>$job['Job']['job_type']));?></td>
<td><?=$form->input('shipment_category', array('options'=>$shipment_options, 'label'=>false,'selected'=>$job['Job']['shipment_category']));?></td>
<td><?=$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?></td>
<td><?=$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
<td><?
$poString = '';
foreach($job['PurchaseOrder'] as $po) {
$poString .= ' '.$html->link($po['title'], array('controller'=>'purchase_orders', 'action'=>'view', $po['id']));
}
echo $poString;
?>
</td>
<td><?=$html->link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?></td>
<td>
<?=$form->input('customer_order_number', array('value'=>$job['Job']['customer_order_number'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('supplier_reference', array('value'=>$job['Job']['supplier_reference'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('date_scheduled_ex_works', array('value'=>$job['Job']['date_scheduled_ex_works'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('date_order_sent_to_customer', array('value'=>$job['Job']['date_order_sent_to_customer'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('domestic_freight_paid_by', array('value'=>$job['Job']['domestic_freight_paid_by'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('currency_id', array('value'=>$job['Currency']['name'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('company_gross_sales_aud', array('value'=>$job['Job']['company_gross_sales_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('net_sales_aud', array('value'=>$job['Job']['net_sales_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_aud', array('value'=>$job['Job']['gross_profit_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
Net Export Sales Conv to AUD?
</td>
<td>
<?=$form->input('gross_profit_exports_aud', array('value'=>$job['Job']['gross_profit_exports_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gp_percent', array('value'=>$job['Job']['gp_percent'], 'label'=>false ,'div'=>false));?>
</td>
<td>? Double column?</td>
<td>
<?=$form->input('ato_exchange_rate', array('value'=>$job['Job']['ato_exchange_rate'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_australian_sales_foreign_currency', array('value'=>$job['Job']['gross_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('net_australian_sales_foreign_currency', array('value'=>$job['Job']['net_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_value_australian_sales_foreign_currency', array('value'=>$job['Job']['gross_profit_value_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gross_export_sales_foreign_currency', array('value'=>$job['Job']['gross_export_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('net_export_sales_foreign_currency', array('value'=>$job['Job']['net_export_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_value_after_discount_exports_foreign_currency', array('value'=>$job['Job']['gross_profit_value_after_discount_exports_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gross_commissions', array('value'=>$job['Job']['gross_commissions'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('net_commissions', array('value'=>$job['Job']['net_commissions'], 'label'=>false ,'div'=>false));?>
</td>
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
</tr>
<?=$form->end();?>
<?php debug($job); ?>

View file

@ -0,0 +1,85 @@
<tr id="<?=$job['Job']['id']?>">
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
<td><?=$job['Job']['date_order_received'];?></td>
<td><?=$job['Job']['job_status'];?></td>
<td>
<?=$form->input('sale_category', array('options'=>$sale_category_options, 'label'=>false, 'selected'=>$job['Job']['sale_category'], 'class'=>'sale_category'));?>
</td>
<td>
<?=$form->input('job_type', array('options'=>$job_type_options, 'label' => false, 'selected'=>$job['Job']['job_type']));?></td>
<td><?=$form->input('shipment_category', array('options'=>$shipment_options, 'label'=>false,'selected'=>$job['Job']['shipment_category']));?></td>
<td><?=$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?></td>
<td><?=$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
<td><?
$poString = '';
foreach($job['PurchaseOrder'] as $po) {
$poString .= ' '.$html->link($po['title'], array('controller'=>'purchase_orders', 'action'=>'view', $po['id']));
}
echo $poString;
?>
</td>
<td><?=$html->link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?></td>
<td>
<?=$form->input('customer_order_number', array('value'=>$job['Job']['customer_order_number'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('supplier_reference', array('value'=>$job['Job']['supplier_reference'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('date_scheduled_ex_works', array('value'=>$job['Job']['date_scheduled_ex_works'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('date_order_sent_to_customer', array('value'=>$job['Job']['date_order_sent_to_customer'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('domestic_freight_paid_by', array('value'=>$job['Job']['domestic_freight_paid_by'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('currency_id', array('value'=>$job['Currency']['name'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('company_gross_sales_aud', array('value'=>$job['Job']['company_gross_sales_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('net_sales_aud', array('value'=>$job['Job']['net_sales_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_aud', array('value'=>$job['Job']['gross_profit_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
Net Export Sales Conv to AUD?
</td>
<td>
<?=$form->input('gross_profit_exports_aud', array('value'=>$job['Job']['gross_profit_exports_aud'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gp_percent', array('value'=>$job['Job']['gp_percent'], 'label'=>false ,'div'=>false));?>
</td>
<td>? Double column?</td>
<td>
<?=$form->input('ato_exchange_rate', array('value'=>$job['Job']['ato_exchange_rate'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_australian_sales_foreign_currency', array('value'=>$job['Job']['gross_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('net_australian_sales_foreign_currency', array('value'=>$job['Job']['net_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_value_australian_sales_foreign_currency', array('value'=>$job['Job']['gross_profit_value_australian_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gross_export_sales_foreign_currency', array('value'=>$job['Job']['gross_export_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('net_export_sales_foreign_currency', array('value'=>$job['Job']['net_export_sales_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('gross_profit_value_after_discount_exports_foreign_currency', array('value'=>$job['Job']['gross_profit_value_after_discount_exports_foreign_currency'], 'label'=>false ,'div'=>false));?>
</td>
<td>
<?=$form->input('gross_commissions', array('value'=>$job['Job']['gross_commissions'], 'label'=>false ,'div'=>false));?>
</td>
<td> <?=$form->input('net_commissions', array('value'=>$job['Job']['net_commissions'], 'label'=>false ,'div'=>false));?>
</td>
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
</tr>
<?=$form->end();?>

View file

@ -69,22 +69,19 @@ echo $paginator->counter(array(
<tbody> <tbody>
<? foreach($jobs as $job):?> <? foreach($jobs as $job):?>
<? echo $form->create('Job', array('action'=>'ajax_edit', 'id'=>'form_'.$job['Job']['id'], 'class'=>'job_table_form')); ?>
<tr id="<?=$job['Job']['id']?>"> <tr id="<?=$job['Job']['id']?>">
<? echo $form->create('Job', array('action'=>'ajax_edit', 'id'=>'form_'.$job['Job']['id'], 'class'=>'job_table_form')); ?>
<?=$form->input('id', array('type'=>'hidden', 'value'=>$job['Job']['id'])); ?> <?=$form->input('id', array('type'=>'hidden', 'value'=>$job['Job']['id'])); ?>
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td> <td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
<td><?=$job['Job']['date_order_received'];?></td> <td><?=$job['Job']['date_order_received'];?></td>
<td><?=$job['Job']['job_status'];?></td> <td><?=$job['Job']['job_status'];?></td>
<td> <td>
<span class="viewText"><?=$sale_category_array[$job['Job']['sale_category']]?></span> <?=$job['Job']['sale_category'];?>
<?=$form->input('sale_category', array('options'=>$sale_category_options, 'label'=>false, 'selected'=>$job['Job']['sale_category']));?>
</td> </td>
<td> <td>
<?=$job['Job']['job_type'];?></td>
<span class="viewText"><?=$job['Job']['job_type']?></span> <td><?=$job['Job']['shipment_category'];?></td>
<?=$form->input('job_type', array('options'=>$job_type_options, 'label' => false, 'selected'=>$job['Job']['job_type']));?></td>
<td><?=$form->input('shipment_category', array('options'=>$shipment_options, 'label'=>false,'selected'=>$job['Job']['shipment_category']));?></td>
<td><?=$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?></td> <td><?=$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?></td>
<td><?=$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?> <td><?=$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
<td><? <td><?
@ -96,34 +93,67 @@ echo $paginator->counter(array(
?> ?>
</td> </td>
<td><?=$html->link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?></td> <td><?=$html->link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?></td>
<td><span class="viewText"><?=$job['Job']['customer_order_number'];?></span> <td>
<?=$form->input('customer_order_number', array('value'=>$job['Job']['customer_order_number'], 'label'=>false ,'div'=>false));?> <?=$job['Job']['customer_order_number'];?>
</td> </td>
<td><span class="viewText"><?=$job['Job']['supplier_reference'];?></span> <td>
<?=$form->input('supplier_reference', array('value'=>$job['Job']['supplier_reference'], 'label'=>false ,'div'=>false));?> <?=$job['Job']['supplier_reference'];?>
</td> </td>
<td><?=$job['Job']['date_scheduled_ex_works'];?></td> <td>
<td><?=$job['Job']['date_order_sent_to_customer'];?></td> <?=$job['Job']['date_scheduled_ex_works'];?>
<td><?=$job['Job']['domestic_freight_paid_by'];?></td> </td>
<td><?=$job['Currency']['name'];?></td> <td>
<td><?=$job['Job']['company_gross_sales_aud'];?></td> <?=$job['Job']['date_order_sent_to_customer'];?>
<td><?=$job['Job']['net_sales_aud'];?></td>
<td><?=$job['Job']['gross_profit_aud'];?></td> </td>
<td>Net Export Sales Conv to AUD?</td> <td> <?=$job['Job']['domestic_freight_paid_by'];?>
<td><?=$job['Job']['gross_profit_exports_aud'];?></td> </td>
<td><?=$job['Job']['gp_percent'];?>%</td> <td>
<?=$job['Currency']['name'];?>
</td>
<td>
<?=$job['Job']['company_gross_sales_aud'];?>
</td>
<td>
<?=$job['Job']['net_sales_aud'];?>
</td>
<td> <?=$job['Job']['gross_profit_aud'];?>
</td>
<td>
Net Export Sales Conv to AUD?
</td>
<td>
<?=$job['Job']['gross_profit_exports_aud'];?>
</td>
<td>
<?=$job['Job']['gp_percent'];?>
</td>
<td>? Double column?</td> <td>? Double column?</td>
<td><?=$job['Job']['ato_exchange_rate'];?></td> <td>
<td><?=$job['Job']['gross_australian_sales_foreign_currency'];?></td> <?=$job['Job']['ato_exchange_rate'];?>
<td><?=$job['Job']['net_australian_sales_foreign_currency'];?></td> </td>
<td><?=$job['Job']['gross_profit_value_australian_sales_foreign_currency'];?></td> <td> <?=$job['Job']['gross_australian_sales_foreign_currency'];?>
<td><?=$job['Job']['gross_export_sales_foreign_currency'];?></td> </td>
<td><?=$job['Job']['net_export_sales_foreign_currency'];?></td> <td>
<td><?=$job['Job']['gross_profit_value_after_discount_exports_foreign_currency'];?></td> <?=$job['Job']['net_australian_sales_foreign_currency'];?>
<td><?=$job['Job']['gross_commissions'];?></td> </td>
<td><?=$job['Job']['net_commissions'];?></td> <td> <?=$job['Job']['gross_profit_value_australian_sales_foreign_currency'];?>
</td>
<td>
<?=$job['Job']['gross_export_sales_foreign_currency'];?>
</td>
<td> <?=$job['Job']['net_export_sales_foreign_currency'];?>
</td>
<td> <?=$job['Job']['gross_profit_value_after_discount_exports_foreign_currency'];?>
</td>
<td>
<?=$job['Job']['gross_commissions'];?>
</td>
<td> <?=$job['Job']['net_commissions'];?>
</td>
<td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td> <td><button class="editButton">Edit</button> <button class="saveButton">Save</button> <button class="cancelButton">Cancel</button></td>
</tr> </tr>
<?=$form->end();?> <?=$form->end();?>

View file

@ -1304,12 +1304,30 @@ table.jobsTable tr td form {
.jobsTable input { .jobsTable input {
width: auto; width: auto;
font-size: 85%;
} }
.jobsTable select { .jobsTable select {
font-size: 85%; font-size: 85%;
width: 80px;
margin: 0;
padding: 0;
} }
.jobsTable [disabled] {
color:#000;
background-color:#fff
}
select.sale_category {
width: 300px;
}
.outer { .outer {
height: 650px; height: 650px;
} }

View file

@ -1,15 +1,13 @@
$(function() { $(function() {
// console.profile(); // console.profile();
$(":input").hide(); //$(":input").hide();
$(".editButton").show(); $(".editButton").show();
$(".cancelButton").hide();
$(".saveButton").hide();
/*$("tr").dblclick(function() { $("input").attr("readonly","readonly");
$("select").attr("disabled", "disabled");
makeEditable($(this).attr('id'));
});*/
$(".editButton").click(function() { $(".editButton").click(function() {
@ -19,9 +17,8 @@ $(function() {
//alert(id); //alert(id);
makeEditable(id); makeEditable(id);
$(this).hide(); $('.editButton').hide();
$("#"+id).find('.viewText').hide();
$("#"+id).find('.saveButton').show(); $("#"+id).find('.saveButton').show();
$("#"+id).find('.cancelButton').show(); $("#"+id).find('.cancelButton').show();
return false; return false;
@ -44,7 +41,8 @@ $(function() {
var serializedForm = $("#"+'form_'+id).serialize(); var serializedForm = $("#"+'form_'+id).serialize();
$.post('/jobs/ajax_edit', serializedForm, function(data) { $.post('/jobs/ajax_edit', serializedForm, function(data) {
alert("Posted the Form!!"+data); //Need to do something here to update the Row. alert("Success! Job Edited"+data); //Need to do something here to update the Row.
window.location.reload();
}); });
//console.log($("#"+id).find('form').serialize()); //console.log($("#"+id).find('form').serialize());
@ -57,18 +55,20 @@ $(function() {
return false; return false;
}); });
//console.profileEnd(); //console.profileEnd();
}); });
function makeEditable(id) { function makeEditable(id) {
$("#"+id).find(':input').show(); $("#"+id).find('input').attr("readonly","");
$("#"+id).find('select').attr("disabled","");
} }
function cancelEditable(id) { function cancelEditable(id) {
$("#"+id).find(':input').hide(); $("#"+id).find('input').attr("readonly","readonly");
$("#"+id).find('select').attr("disabled","disabled");
$(".editButton").show(); $(".editButton").show();
} }