|
31 | 31 | input: localDevelopers,
|
32 | 32 | paging: {
|
33 | 33 | limit: 8
|
| 34 | + }, |
| 35 | + propertychange: function(event, ui) { |
| 36 | + console.log("field", ui.path, "changed from", ui.oldValue, "to", ui.newValue); |
| 37 | + }, |
| 38 | + objectchange: function(event, ui) { |
| 39 | + console.log("developer at index", ui.index, "changed", ui.object); |
| 40 | + this.save(); |
| 41 | + }, |
| 42 | + change: function(event, ui) { |
| 43 | + console.log("developer(s) at index", ui.index, ui.change + "ed", ui.items); |
| 44 | + this.save().refresh(); |
34 | 45 | }
|
35 | 46 | });
|
36 | 47 | developers.save = function() {
|
|
48 | 59 | type: th.data( "type" ),
|
49 | 60 | submit: function( event, ui ) {
|
50 | 61 | var object = $( this ).tmplItem().data;
|
| 62 | + var oldValue = get(object, field); |
51 | 63 | set(object, field, ui.value);
|
52 |
| - developers.save(); |
| 64 | + developers._trigger("propertychange", event, { |
| 65 | + path: field, |
| 66 | + oldValue: oldValue, |
| 67 | + newValue: ui.value |
| 68 | + }); |
| 69 | + developers._trigger("objectchange", event, { |
| 70 | + object: object |
| 71 | + }); |
53 | 72 | }
|
54 | 73 | });
|
55 | 74 | });
|
|
61 | 80 | + "<button class='edit'>Edit</button></td>"
|
62 | 81 | + "<td><button class='remove'>Remove</button></td></tr>";
|
63 | 82 |
|
64 |
| - var developer; |
| 83 | + var developer, tmplItem; |
65 | 84 | var editForm = $( "#editForm" ).hide().submit( function( event ) {
|
66 | 85 | event.preventDefault();
|
67 | 86 | serializeForm( this, developer );
|
68 |
| - developers.save().refresh(); |
| 87 | + // TODO the ui-widget class is added after rendering the template by the grid |
| 88 | + // therefore just rerendering the row looks bad, need to update the template to include the classes |
| 89 | + // or extend the grid to refresh a single row - need that anyway, as currently the inline editor breaks |
| 90 | + tmplItem.update(); |
| 91 | + developers._trigger("objectchange", event, { |
| 92 | + index: localDevelopers.indexOf(developer), |
| 93 | + object: developer |
| 94 | + }); |
69 | 95 | editForm.hide();
|
70 | 96 | });
|
71 | 97 | grid.element.delegate( "button.edit", "click", function() {
|
72 |
| - developer = $( this ).tmplItem().data; |
| 98 | + tmplItem = $( this ).tmplItem(); |
| 99 | + developer = tmplItem.data; |
73 | 100 | deserializeForm( editForm, developer );
|
74 | 101 | editForm.show();
|
75 | 102 | });
|
|
78 | 105 | for ( var i = localDevelopers.length - 1; i >= 0; i-- ) {
|
79 | 106 | if ( localDevelopers[i] === developer ) {
|
80 | 107 | localDevelopers.splice( i, 1 );
|
| 108 | + developers._trigger("change", event, { |
| 109 | + change: "remove", |
| 110 | + index: i, |
| 111 | + items: [developer] |
| 112 | + }); |
81 | 113 | }
|
82 | 114 | }
|
83 |
| - developers.save().refresh(); |
84 | 115 | });
|
85 | 116 |
|
86 | 117 | $( "#pageDevelopers" ).pager({
|
|
98 | 129 | value: 0
|
99 | 130 | }
|
100 | 131 | });
|
101 |
| - developers.save().refresh(); |
| 132 | + developers._trigger("change", event, { |
| 133 | + change: "insert", |
| 134 | + index: 0, |
| 135 | + items: [localDevelopers[0]] |
| 136 | + }); |
102 | 137 | });
|
103 | 138 |
|
104 | 139 | developers.refresh();
|
|
0 commit comments