1 2var orders = { 3 data: [], 4 order: { 5 data: null, 6 shipping: null, 7 items: null, 8 billing: null, 9 member: null 10 }, 11 total: 0, 12 filter: { 13 search: "", 14 size: 25, 15 page: 1, 16 option: "", 17 status: "", 18 member: -1, 19 sort: "dateOrdered", 20 sortType: "desc" 21 }, 22 get: function(searchFor, searchType) { 23 service.call("orders", orders.filter, orders.getReturned); 24 }, 25 export: function(callback) { 26 fetch('/api/orders/export') 27 .then(response => { 28 if (!response.ok) throw new Error('Export failed'); 29 return response.blob(); 30 }) 31 .then(blob => { 32 var a = document.createElement('a'); 33 a.href = window.URL.createObjectURL(blob); 34 a.download = "Orders.csv"; 35 document.body.appendChild(a); 36 a.click(); 37 document.body.removeChild(a); 38 window.URL.revokeObjectURL(a.href); 39 if (callback) callback(true); 40 }) 41 .catch(error => { 42 console.error('Export error:', error); 43 if (callback) callback(false, error); 44 }); 45 }, 46 exportItems: function(callback) { 47 fetch('/api/orders/exportItems') 48 .then(response => { 49 if (!response.ok) throw new Error('Export failed'); 50 return response.blob(); 51 }) 52 .then(blob => { 53 var a = document.createElement('a'); 54 a.href = window.URL.createObjectURL(blob); 55 a.download = "OrderItems.csv"; 56 document.body.appendChild(a); 57 a.click(); 58 document.body.removeChild(a); 59 window.URL.revokeObjectURL(a.href); 60 if (callback) callback(true); 61 }) 62 .catch(error => { 63 console.error('Export items error:', error); 64 if (callback) callback(false, error); 65 }); 66 }, 67 exportRelay: function(callback) { 68 fetch('/api/orders/exportRelay') 69 .then(response => { 70 if (!response.ok) throw new Error('Export failed'); 71 return response.blob(); 72 }) 73 .then(blob => { 74 var a = document.createElement('a'); 75 a.href = window.URL.createObjectURL(blob); 76 a.download = "RelayOrders.csv"; 77 document.body.appendChild(a); 78 a.click(); 79 document.body.removeChild(a); 80 window.URL.revokeObjectURL(a.href); 81 if (callback) callback(true); 82 }) 83 .catch(error => { 84 console.error('Export relay error:', error); 85 if (callback) callback(false, error); 86 }); 87 }, 88 getMine: function() { 89 orders.filter.member = user.data.memberId; 90 orders.filter.size = 1000; 91 orders.filter.sortType = "desc"; 92 service.call("orders", orders.filter, orders.getReturned); 93 }, 94 pending: function() { 95 orders.filter.status = "unfulfilled"; 96 service.call("orders", orders.filter, orders.getReturned); 97 }, 98 getReturned: function(e) { 99 if (e.error) growler.error(e.error); 100 else { 101 orders.data = e.data; 102 orders.total = e.total; 103 context.set("orders", orders.data); 104 } 105 }, 106 save: function() { 107 108 }, 109 saveReturned: function(e) { 110 if (e.error) growler.error(e.error); 111 else { 112 orders.data = e; 113 context.set("orders", orders.data); 114 } 115 }, 116 sendReceipt: function(id) { 117 var params = {}; 118 params.id = id; 119 service.call("sendReceipt", params, orders.receiptSent); 120 }, 121 sendGiftcard: function(orderItemId) { 122 var params = {}; 123 params.item = orderItemId; 124 $('.loading-modal').show(); 125 service.call("order/card", params, orders.giftcardSent); 126 }, 127 giftcardSent: function(e) { 128 $('.loading-modal').hide(); 129 growler.success("Giftcard has been sent."); 130 }, 131 receiptSent: function(e) { 132 growler.success("Receipt has been sent."); 133 }, 134 ship: function(company, tracking, notes, id) { 135 var params = orders.filter; 136 params.company = company; 137 params.tracking = tracking; 138 params.notes = notes; 139 params.id = id; 140 if (page.shipped) { 141 service.call("ship", params, page.shipped); 142 } else { 143 service.call("ship", params, orders.getReturned); 144 } 145 }, 146 shipBulk: function(company, tracking, notes, ids) { 147 $(".loader").addClass("open"); 148 var params = orders.filter; 149 params.company = company; 150 params.tracking = tracking; 151 params.notes = notes; 152 params.ids = ids; 153 service.call("shipBulk", params, (result) => { 154 $(".loader").removeClass("open"); 155 orders.getReturned(result); 156 growler.success("Orders marked as fulfilled."); 157 }); 158 }, 159 archive: function(ids) { 160 var params = orders.filter; 161 params.ids = ids; 162 service.call("order/archive", params, orders.getReturned, "DELET
162E"); 163 }, 164 delete: function(ids) { 165 var params = orders.filter; 166 params.ids = ids; 167 service.call("order/delete", params, orders.getReturned, "DELETE"); 168 }, 169 details: function(id) { 170 for (var i=0; i<orders.data.length; i++) { 171 if (id==orders.data[i].orderId) { 172 orders.order.data = orders.data[i]; 173 return orders.data[i]; 174 } 175 } 176 return null; 177 }, 178 getShipping: function(id) { 179 service.call("getAddress", { id: id }, orders.shippingReturned); 180 }, 181 shippingReturned: function(e) { 182 if (e.error) growler.error(e.error); 183 else { 184 orders.order.shipping = e; 185 context.set("shipping", e); 186 } 187 }, 188 getBilling: function(id) { 189 service.call("getAddress", { id: id }, orders.billingReturned); 190 }, 191 billingReturned: function(e) { 192 if (e.error) growler.error(e.error); 193 else { 194 orders.order.billing = e; 195 context.set("billing", e); 196 } 197 }, 198 setStatus: function(id, status, notes) { 199 var params = { 200 id: id, 201 status: status, 202 notes: notes 203 }; 204 if (page.statusReturned) { 205 service.call("order/status", params, page.statusReturned); 206 } else { 207 service.call("order/status", params, orders.statusSaved); 208 } 209 }, 210 statusSaved: function(e) { 211 if (e.error) growler.error(e.error); 212 else growler.success("Order Information Saved"); 213 }, 214 getMember: function(id) { 215 var params = orders.filter; 216 params.member = id; 217 service.call("member", params, orders.memberReturned); 218 }, 219 memberReturned: function(e) { 220 if (e.error) growler.error(e.error); 221 else { 222 orders.order.member = e; 223 context.set("orderMember", e); 224 } 225 }, 226 getItems: function(id) { 227 service.call("orderItems", { order: id }, orders.itemsReturned); 228 }, 229 itemsReturned: function(e) { 230 if (e.error) growler.error(e.error); 231 else { 232 orders.order.items = e.data; 233 context.set("orderItems", e.data); 234 $(".loader").removeClass("open"); 235 } 236 }, 237 next: function() { 238 if (!isLast()) orders.filter.page++; 239 else orders.filter.page = 1; 240 orders.get(); 241 }, 242 prev: function() { 243 if (orders.filter.page>1) orders.filter.page--; 244 else orders.filter.page = Math.ceil(orders.total/orders.filter.size); 245 orders.get(); 246 }, 247 isLast: function() { 248 return (orders.total<=(orders.filter.page*orders.filter.size)); 249 }, 250 isFirst: function() { 251 return orders.filter.page==1; 252 }, 253 pageTotal: function() { 254 return Math.ceil(orders.total/orders.filter.size); 255 }, 256 goto: function(page) { 257 if (page<=orders.pageTotal()&&page>=1) { 258 orders.filter.page = page; 259 orders.get(); 260 } 261 }, 262 createShippoBatch: function(orderItems, callback) { 263 service.call("orders/shippo/create", {orderItems}, callback); 264 }, 265 createShippingEasyBatch: function(orderItems, callback) { 266 service.call("orders/shipping-easy/create", {orderItems}, callback); 267 }, 268 createShipWorksBatch: function(orderItems, callback) { 269 service.call("orders/ship-works/create", {orderItems}, callback); 270 }, 271 createShipStationBatch: function(orderItems, callback) { 272 service.call("orders/ship-station/create", {orderItems}, callback); 273 } 274}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.