|
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