4 'Ext.layout.container.Card',
5 'Ext.tip.QuickTipManager'
8 Ext.define('Customer', {
9 extend: 'Ext.data.Model',
26 extend: 'Ext.data.Model',
38 belongsTo: 'Customer',
50 Ext.define('OrderItem', {
51 extend: 'Ext.data.Model',
72 Ext.define('CustomerGrid', {
73 extend: 'Ext.grid.Panel',
74 alias: 'widget.customergrid',
78 initComponent: function(){
85 Logger.log('Customer store loaded', false);
106 handler: this.loadOrders,
112 this.getSelectionModel().on('selectionchange', this.onSelectChange, this);
115 onSelectChange: function(selModel, selections) {
116 this.active = selections[0];
117 this.down('#load').setDisabled(!this.active);
120 loadOrders: function(){
121 var rec = this.active,
122 name = rec.get('name'),
123 owner = this.ownerCt,
127 orders = rec.orders();
128 if (orders.isLoading()) {
129 Logger.log('Begin loading orders: ' + rec.getId(), true);
131 orders.on('load', function(){
132 Logger.log('Order store loaded - ' + rec.getId(), false);
135 title: 'Orders - ' + rec.getId(),
140 owner.getLayout().next();
144 Ext.define('OrderGrid', {
145 extend: 'Ext.grid.Panel',
146 alias: 'widget.ordergrid',
148 initComponent: function(){
157 renderer: Ext.util.Format.dateRenderer('Y-m-d')
164 handler: this.onBackClick
167 text: 'Load Order Items',
169 handler: this.loadItems,
175 this.getSelectionModel().on('selectionchange', this.onSelectChange, this);
178 onBackClick: function(){
179 this.ownerCt.getLayout().prev();
183 onSelectChange: function(selModel, selections) {
184 this.active = selections[0];
185 this.down('#load').setDisabled(!this.active);
188 loadItems: function(){
189 var customerName = this.customer.get('name'),
191 date = Ext.Date.format(rec.get('date'), 'Y-m-d'),
192 owner = this.ownerCt,
195 orderitems = rec.orderitems();
196 if (orderitems.isLoading()) {
197 Logger.log('Begin loading order items - ' + rec.getId(), true);
199 orderitems.on('load', function(){
200 Logger.log('Order items loaded - ' + rec.getId(), false);
203 title: 'Order Items - ' + rec.getId(),
204 xtype: 'orderitemgrid',
207 owner.getLayout().next();
211 Ext.define('OrderItemGrid', {
212 extend: 'Ext.grid.Panel',
213 alias: 'widget.orderitemgrid',
215 initComponent: function(){
226 dataIndex: 'quantity'
230 renderer: Ext.util.Format.usMoney
237 handler: this.onBackClick
240 text: 'Parent association loader',
241 tooltip: 'Demonstrate loading parent relationships - A new record will be created so we ignore any previous associations setup',
243 handler: this.onLoadClick,
249 this.getSelectionModel().on('selectionchange', this.onSelectChange, this);
252 onSelectChange: function(selModel, selections) {
253 this.active = selections[0];
254 this.down('#load').setDisabled(!this.active);
257 onBackClick: function(){
258 this.ownerCt.getLayout().prev();
262 onLoadClick: function(){
263 var rec = this.active,
270 title: this.title.replace('Order Items', 'Order Item ' + id),
271 orderItemData: rec.data,
277 Ext.define('ItemLoader', {
278 extend: 'Ext.window.Window',
280 initComponent: function(){
286 text: 'Print order detail',
288 handler: this.onOrderClick
291 text: 'Print company detail',
294 handler: this.onCompanyClick
298 tpl: '<div>{type} {id} - {value}</div>',
299 tplWriteMode: 'append'
302 this.orderItem = new OrderItem(this.orderItemData, this.orderItemId);
305 onOrderClick: function(){
306 var id = this.orderItem.get('order_id'),
307 hasOrder = !!this.order;
310 Logger.log('Begin loading order - ' + id, true);
312 this.orderItem.getOrder({
314 success: function(order){
316 this.down('#company').enable();
318 Logger.log('Order loaded - ' + id, false);
323 value: Ext.Date.format(order.get('date'), 'Y-m-d')
329 onCompanyClick: function(){
330 var id = this.order.get('customer_id'),
331 hasCustomer = !!this.customer;
334 Logger.log('Begin loading customer - ' + id, true);
336 this.order.getCustomer({
338 success: function(customer){
339 this.customer = customer;
341 Logger.log('Customer loaded - ' + id, false);
345 id: customer.getId(),
346 value: customer.get('name')
353 Logger = (function(){
361 log: function(msg, isStart){
364 cls: isStart ? 'beforeload' : 'afterload',
367 panel.body.scroll('b', 100000, true);
372 Ext.onReady(function(){
374 var main = Ext.create('Ext.panel.Panel', {
375 renderTo: document.body,
391 tplWriteMode: 'append',
392 tpl: '<div class="{cls}">[{now:date("H:i:s")}] - {msg}</div>',
400 Logger.log('Begin loading customer store', true);
401 main.items.first().add({
402 xtype: 'customergrid'