@@ -8,7 +8,6 @@ import { isArray } from '@ember/array';
88import { isBlank } from '@ember/utils' ;
99import { timeout } from 'ember-concurrency' ;
1010import { task } from 'ember-concurrency-decorators' ;
11- import fromStore from '@fleetbase/ember-core/decorators/from-store' ;
1211
1312export default class OperationsOrdersIndexController extends BaseController {
1413 @service currentUser ;
@@ -52,6 +51,8 @@ export default class OperationsOrdersIndexController extends BaseController {
5251 'scheduled_at' ,
5352 'status' ,
5453 'type' ,
54+ 'without_driver' ,
55+ 'bulk_query' ,
5556 'layout' ,
5657 'drawerOpen' ,
5758 'drawerTab' ,
@@ -289,6 +290,27 @@ export default class OperationsOrdersIndexController extends BaseController {
289290 */
290291 @tracked statusOptions = [ ] ;
291292
293+ /**
294+ * Filterable sorder configs.
295+ *
296+ * @type {Array }
297+ */
298+ @tracked orderConfigs = [ ] ;
299+
300+ /**
301+ * Free text input for a bulk query.
302+ *
303+ * @type {String }
304+ */
305+ @tracked bulkSearchValue = '' ;
306+
307+ /**
308+ * Actual bulk query.
309+ *
310+ * @type {String }
311+ */
312+ @tracked bulk_query = '' ;
313+
292314 /**
293315 * Flag to determine if the layout is 'map'
294316 *
@@ -317,13 +339,6 @@ export default class OperationsOrdersIndexController extends BaseController {
317339 */
318340 @equal ( 'layout' , 'analytics' ) isAnalyticsLayout ;
319341
320- /**
321- * All available order configs.
322- *
323- * @memberof OperationsOrdersIndexController
324- */
325- @fromStore ( 'order-config' , { limit : - 1 } ) orderConfigs ;
326-
327342 /**
328343 * All columns applicable for orders
329344 *
@@ -437,6 +452,7 @@ export default class OperationsOrdersIndexController extends BaseController {
437452 filterComponent : 'filter/model' ,
438453 filterComponentPlaceholder : 'Select vehicle for order' ,
439454 filterParam : 'vehicle' ,
455+ modelNamePath : 'display_name' ,
440456 model : 'vehicle' ,
441457 } ,
442458 {
@@ -567,7 +583,9 @@ export default class OperationsOrdersIndexController extends BaseController {
567583 label : '' ,
568584 cellComponent : 'table/cell/base' ,
569585 filterParam : 'without_driver' ,
570- filterComponenr : 'checkbox' ,
586+ filterComponent : 'filter/checkbox' ,
587+ filterLabel : 'Without Driver Assigned' ,
588+ noFilterLabel : true ,
571589 filterable : true ,
572590 hidden : true ,
573591 } ,
@@ -626,6 +644,7 @@ export default class OperationsOrdersIndexController extends BaseController {
626644 super ( ...arguments ) ;
627645 this . listenForOrderEvents ( ) ;
628646 this . getOrderStatusOptions . perform ( ) ;
647+ this . getOrderConfigs . perform ( ) ;
629648 }
630649
631650 @task * getOrderStatusOptions ( ) {
@@ -636,6 +655,14 @@ export default class OperationsOrdersIndexController extends BaseController {
636655 }
637656 }
638657
658+ @task * getOrderConfigs ( ) {
659+ try {
660+ this . orderConfigs = yield this . store . query ( 'order-config' , { limit : - 1 } ) ;
661+ } catch ( error ) {
662+ this . notifications . serverError ( error ) ;
663+ }
664+ }
665+
639666 /**
640667 * Listen for incoming order events to refresh listing.
641668 *
@@ -683,9 +710,6 @@ export default class OperationsOrdersIndexController extends BaseController {
683710 // Listed on company channel
684711 const channel = socket . subscribe ( channelId ) ;
685712
686- // Events which should trigger refresh
687- const listening = [ 'order.ready' , 'order.driver_assigned' ] ;
688-
689713 // Listen for channel subscription
690714 ( async ( ) => {
691715 for await ( let output of channel ) {
@@ -702,11 +726,7 @@ export default class OperationsOrdersIndexController extends BaseController {
702726 }
703727
704728 if ( event === 'order.ready' ) {
705- const order = await findOrder ( data . id ) ;
706-
707- if ( order ) {
708- order . reload ( ) ;
709- }
729+ this . hostRouter . refresh ( ) ;
710730 }
711731 }
712732 } ) ( ) ;
@@ -1123,6 +1143,13 @@ export default class OperationsOrdersIndexController extends BaseController {
11231143 return ;
11241144 }
11251145
1146+ const updateFetchParams = ( key , value ) => {
1147+ const current = this . modalsManager . getOption ( 'fetchParams' ) ?? { } ;
1148+ const next = value === undefined ? Object . fromEntries ( Object . entries ( current ) . filter ( ( [ k ] ) => k !== key ) ) : { ...current , [ key ] : value } ;
1149+
1150+ this . modalsManager . setOption ( 'fetchParams' , next ) ;
1151+ } ;
1152+
11261153 this . crud . bulkAction ( 'assign driver' , selected , {
11271154 template : 'modals/bulk-assign-driver' ,
11281155 acceptButtonText : 'Assign Driver to Orders' ,
@@ -1133,14 +1160,20 @@ export default class OperationsOrdersIndexController extends BaseController {
11331160 actionPath : 'orders/bulk-assign-driver' ,
11341161 actionMethod : 'PATCH' ,
11351162 driverAssigned : null ,
1163+ notifyDriver : true ,
11361164 fetchParams : { } ,
11371165 resolveModelName : ( model ) => `${ model . get ( 'tracking_number.tracking_number' ) } - ${ model . get ( 'public_id' ) } ` ,
11381166 selectDriver : ( driver ) => {
11391167 this . modalsManager . setOptions ( {
11401168 driverAssigned : driver ,
11411169 acceptButtonDisabled : driver ? false : true ,
1142- fetchParams : driver ? { driver : driver . id } : { } ,
11431170 } ) ;
1171+
1172+ updateFetchParams ( 'driver' , driver ?. id ) ;
1173+ } ,
1174+ toggleNotifyDriver : ( checked ) => {
1175+ this . modalsManager . setOption ( 'notifyDriver' , checked ) ;
1176+ updateFetchParams ( 'silent' , ! checked ) ;
11441177 } ,
11451178 withSelected : ( orders ) => {
11461179 const driverAssigned = this . modalsManager . getOption ( 'driverAssigned' ) ;
@@ -1174,4 +1207,13 @@ export default class OperationsOrdersIndexController extends BaseController {
11741207 this . activeOrdersCount = response . orders_in_progress ;
11751208 } ) ;
11761209 }
1210+
1211+ @action commitBulkQuery ( ) {
1212+ this . bulk_query = this . bulkSearchValue ;
1213+ }
1214+
1215+ @action removeBulkQuery ( ) {
1216+ this . bulkSearchValue = '' ;
1217+ this . bulk_query = null ;
1218+ }
11771219}
0 commit comments