Best JavaScript code snippet using chrominator
waiter.py
Source:waiter.py
...30 :param client: The botocore client associated with the service.31 :rtype: botocore.waiter.Waiter32 :return: The waiter object.33 """34 single_waiter_config = waiter_model.get_waiter(waiter_name)35 operation_name = xform_name(single_waiter_config.operation)36 operation_method = NormalizedOperationMethod(37 getattr(client, operation_name))38 # Create a new wait method that will serve as a proxy to the underlying39 # Waiter.wait method. This is needed to attach a docstring to the40 # method.41 def wait(self, **kwargs):42 Waiter.wait(self, **kwargs)43 wait.__doc__ = WaiterDocstring(44 waiter_name=waiter_name,45 event_emitter=client.meta.events,46 service_model=client.meta.service_model,47 service_waiter_model=waiter_model,48 include_signature=False49 )50 # Rename the waiter class based on the type of waiter.51 waiter_class_name = str('%s.Waiter.%s' % (52 get_service_module_name(client.meta.service_model),53 waiter_name))54 # Create the new waiter class55 documented_waiter_cls = type(56 waiter_class_name, (Waiter,), {'wait': wait})57 # Return an instance of the new waiter class.58 return documented_waiter_cls(59 waiter_name, single_waiter_config, operation_method60 )61class NormalizedOperationMethod(object):62 def __init__(self, client_method):63 self._client_method = client_method64 def __call__(self, **kwargs):65 try:66 return self._client_method(**kwargs)67 except ClientError as e:68 return e.response69class WaiterModel(object):70 SUPPORTED_VERSION = 271 def __init__(self, waiter_config):72 """73 Note that the WaiterModel takes ownership of the waiter_config.74 It may or may not mutate the waiter_config. If this is a concern,75 it is best to make a copy of the waiter config before passing it to76 the WaiterModel.77 :type waiter_config: dict78 :param waiter_config: The loaded waiter config79 from the <service>*.waiters.json file. This can be80 obtained from a botocore Loader object as well.81 """82 self._waiter_config = waiter_config['waiters']83 # These are part of the public API. Changing these84 # will result in having to update the consuming code,85 # so don't change unless you really need to.86 version = waiter_config.get('version', 'unknown')87 self._verify_supported_version(version)88 self.version = version89 self.waiter_names = list(sorted(waiter_config['waiters'].keys()))90 def _verify_supported_version(self, version):91 if version != self.SUPPORTED_VERSION:92 raise WaiterConfigError(93 error_msg=("Unsupported waiter version, supported version "94 "must be: %s, but version of waiter config "95 "is: %s" % (self.SUPPORTED_VERSION,96 version)))97 def get_waiter(self, waiter_name):98 try:99 single_waiter_config = self._waiter_config[waiter_name]100 except KeyError:101 raise ValueError("Waiter does not exist: %s" % waiter_name)102 return SingleWaiterConfig(single_waiter_config)103class SingleWaiterConfig(object):104 """Represents the waiter configuration for a single waiter.105 A single waiter is considered the configuration for a single106 value associated with a named waiter (i.e TableExists).107 """108 def __init__(self, single_waiter_config):109 self._config = single_waiter_config110 # These attributes are part of the public API.111 self.description = single_waiter_config.get('description', '')...
waiter-queue.methods.ts
Source:waiter-queue.methods.ts
1import { Meteor } from 'meteor/meteor';2import { Job, JobCollection } from 'meteor/vsivsi:job-collection';3import { UserDetail } from '../../../models/auth/user-detail.model';4import { UserDetails } from '../../../collections/auth/user-detail.collection';5import { WaiterCallDetail } from '../../../models/restaurant/waiter-call-detail.model';6import { WaiterCallDetails } from '../../../collections/restaurant/waiter-call-detail.collection';7import { Restaurant, RestaurantTurn } from '../../../models/restaurant/restaurant.model';8import { Restaurants, RestaurantTurns } from '../../../collections/restaurant/restaurant.collection';9import { Accounts } from '../../../collections/restaurant/account.collection';10import { Orders } from '../../../collections/restaurant/order.collection';11import { Tables } from '../../../collections/restaurant/table.collection';12if (Meteor.isServer) {13 Meteor.methods({14 /**15 * This Meteor Method add a job in the Waiter call queue16 * @param {boolean} _priorityHigh17 * @param {any} _data18 */19 waiterCall: function (_queue: string, _priorityHigh: boolean, _data: any) {20 let priority: string = 'normal';21 let delay: number = 0;22 var waiterCallDetail: string;23 var job = new Job(24 _queue,25 'waiterCall',26 { data: '' }27 );28 job.priority(priority)29 .delay(delay)30 .save();31 if (_priorityHigh) {32 priority = 'critical', delay = 10000;33 WaiterCallDetails.update({ job_id: _data.job_id }, { $set: { waiter_id: _data.waiter_id, job_id: job._doc._id } });34 waiterCallDetail = _data.waiter_call_id;35 } else {36 let newTurn = Meteor.call('turnCreate', _data);37 waiterCallDetail = WaiterCallDetails.collection.insert({38 restaurant_id: _data.restaurants,39 table_id: _data.tables,40 user_id: _data.user,41 turn: newTurn,42 status: _data.status,43 creation_user: _data.user,44 creation_date: new Date(),45 queue: _queue,46 job_id: job._doc._id,47 type: _data.type,48 order_id: _data.order_id,49 });50 }51 return;52 },53 processJobs: function (job, callback, queueName, data) {54 let data_detail: WaiterCallDetail;55 let usr_id_enabled: UserDetail;56 data_detail = WaiterCallDetails.findOne({ job_id: job._doc._id });57 if (data_detail === undefined && data_detail === null) {58 Meteor.call('waiterCall', queueName, true, data);59 data_detail = WaiterCallDetails.findOne({ job_id: job._doc._id });60 }61 let restaurant = Restaurants.findOne({ _id: data_detail.restaurant_id });62 usr_id_enabled = Meteor.call('validateWaiterEnabled', data_detail.restaurant_id, restaurant.max_jobs, data_detail.table_id);63 if (!usr_id_enabled) {64 Meteor.call('jobRemove', queueName, job._doc._id, data_detail);65 usr_id_enabled = Meteor.call('validateWaiterEnabled', data_detail.restaurant_id, restaurant.max_jobs, data_detail.table_id);66 }67 Job.getJob(queueName, job._doc._id, function (err, job) {68 if (job) {69 job.done(function (err, result) { });70 //Storage of turns the restaurants by date71 var toDate = new Date().toLocaleDateString();72 RestaurantTurns.update({ restaurant_id: data_detail.restaurant_id, creation_date: { $gte: new Date(toDate) } },73 {74 $set: { last_waiter_id: usr_id_enabled.user_id, modification_user: 'SYSTEM', modification_date: new Date(), }75 });76 //Waiter call detail update in completed state77 WaiterCallDetails.update({ job_id: job._doc._id },78 {79 $set: { "waiter_id": usr_id_enabled.user_id, "status": "completed" }80 });81 //Waiter update of current jobs and state82 let usr_jobs: number = usr_id_enabled.jobs + 1;83 if (usr_jobs < restaurant.max_jobs) {84 UserDetails.update({ user_id: usr_id_enabled.user_id }, { $set: { "jobs": usr_jobs } });85 } else if (usr_jobs == restaurant.max_jobs) {86 UserDetails.update({ user_id: usr_id_enabled.user_id }, { $set: { "enabled": false, "jobs": usr_jobs } });87 }88 }89 });90 callback();91 },92 /**93 * Job remove94 * @param pQueueName 95 * @param pJobId 96 * @param pDataDetail 97 * @param pEnabled 98 */99 jobRemove(pQueueName, pJobId, pDataDetail) {100 Job.getJob(pQueueName, pJobId, function (err, job) {101 if (job) {102 job.cancel();103 job.remove(function (err, result) {104 if (result) {105 if (pDataDetail !== null && pDataDetail !== undefined) {106 var data: any = {107 job_id: job._doc._id,108 restaurants: pDataDetail.restaurant_id,109 tables: pDataDetail.table_id,110 user: pDataDetail.user_id,111 waiter_id: pDataDetail.waiter_id,112 status: 'waiting'113 };114 Meteor.call('waiterCall', pQueueName, true, data);115 }116 }117 });118 }119 });120 },121 /**122 * This Meteor method allow get new turn to the client123 * @param { any } _data 124 */125 turnCreate(_data: any): number {126 var newTurn: number = 1;127 var toDate = new Date().toLocaleDateString();128 var restaurantTurn: RestaurantTurn = RestaurantTurns.findOne({129 restaurant_id: _data.restaurants,130 creation_date: { $gte: new Date(toDate) }131 });132 if (restaurantTurn) {133 newTurn = restaurantTurn.turn + 1;134 RestaurantTurns.update(135 { _id: restaurantTurn._id },136 {137 $set: { turn: newTurn, modification_user: 'SYSTEM', modification_date: new Date(), }138 });139 } else {140 RestaurantTurns.insert({141 restaurant_id: _data.restaurants,142 turn: newTurn,143 last_waiter_id: "",144 creation_user: 'SYSTEM',145 creation_date: new Date(),146 });147 }148 return newTurn;149 },150 /**151 * This Meteor Method allow delete a job in the Waiter call queue152 * @param {string} _waiter_call_detail_id153 * @param {string} _waiter_id154 */155 closeCall: function (_jobDetail: WaiterCallDetail, _waiter_id: string) {156 Job.getJob(_jobDetail.queue, _jobDetail.job_id, function (err, job) {157 job.remove(function (err, result) {158 WaiterCallDetails.update({ _id: _jobDetail._id },159 {160 $set: { "status": "closed", modification_user: _waiter_id, modification_date: new Date() }161 });162 let waiterDetail = WaiterCallDetails.findOne({ job_id: _jobDetail.job_id });163 if (waiterDetail.type === "SEND_ORDER" && waiterDetail.order_id !== null) {164 Orders.update({ _id: waiterDetail.order_id },165 {166 $set: {167 status: 'ORDER_STATUS.DELIVERED',168 modification_user: _waiter_id,169 modification_date: new Date()170 }171 }172 );173 let order = Orders.findOne({ _id: waiterDetail.order_id });174 if (order) {175 let account = Accounts.findOne({ _id: order.accountId });176 Accounts.update({ _id: account._id }, { $set: { total_payment: (account.total_payment + order.totalPayment) } });177 }178 }179 let usr_detail: UserDetail = UserDetails.findOne({ user_id: _waiter_id });180 if (usr_detail) {181 let jobs = usr_detail.jobs - 1;182 UserDetails.update({ _id: usr_detail._id }, { $set: { "enabled": true, "jobs": jobs } });183 }184 });185 });186 return;187 },188 closeWaiterCall: function (_jobDetail: WaiterCallDetail) {189 Job.getJob(_jobDetail.queue, _jobDetail.job_id, function (err, job) {190 job.remove(function (err, result) {191 WaiterCallDetails.update({ _id: _jobDetail._id },192 {193 $set: { "status": "closed", modification_user: _jobDetail.waiter_id, modification_date: new Date() }194 });195 let usr_detail: UserDetail = UserDetails.findOne({ user_id: _jobDetail.waiter_id });196 if (usr_detail) {197 let jobs = usr_detail.jobs - 1;198 UserDetails.update({ _id: usr_detail._id }, { $set: { "enabled": true, "jobs": jobs } });199 }200 });201 });202 return;203 },204 /**205 * This meteor method allow cancel call to waiter by the user206 * @param {WaiterCallDetail} _jobDetail207 * @param {string} _userId208 */209 cancelCallClient: function (_jobDetail: WaiterCallDetail, _userId: string) {210 Job.getJob(_jobDetail.queue, _jobDetail.job_id, function (err, job) {211 if (job._doc.status !== 'completed') {212 job.cancel();213 }214 job.remove(function (err, result) {215 WaiterCallDetails.update({ job_id: _jobDetail.job_id },216 {217 $set: { "status": "cancel", modification_user: _userId, modification_date: new Date() }218 });219 let waiterDetail = WaiterCallDetails.findOne({ job_id: _jobDetail.job_id });220 if (waiterDetail.type === "CALL_OF_CUSTOMER" && waiterDetail.waiter_id) {221 let usr_detail = UserDetails.findOne({ user_id: waiterDetail.waiter_id });222 if (usr_detail) {223 let jobs = usr_detail.jobs - 1;224 UserDetails.update({ user_id: waiterDetail.waiter_id }, { $set: { "enabled": true, "jobs": jobs } });225 }226 }227 });228 });229 },230 /**231 * This function validate waiters enabled232 * @param {string} _restaurant233 * @param {string} _maxJobs234 */235 validateWaiterEnabled(_restaurant: string, _maxJobs: string, _tableId: string): UserDetail {236 let usr: UserDetail = null;237 let position: number = 0;238 let _randomLast: string;239 let table = Tables.findOne({ _id: _tableId });240 let waiterEnableds = UserDetails.collection.find({241 restaurant_work: _restaurant,242 is_active: true,243 enabled: true,244 role_id: "200",245 jobs: { $lt: _maxJobs },246 table_assignment_init: { $lte: table._number },247 table_assignment_end: { $gte: table._number }248 });249 var count = waiterEnableds.count();250 if (count > 0) {251 let restaurantTurn = RestaurantTurns.findOne({ "restaurant_id": _restaurant },252 {253 sort: { "creation_date": -1 }254 }255 );256 if (restaurantTurn) {257 _randomLast = restaurantTurn.last_waiter_id;258 }259 do {260 position = Meteor.call('getRandomInt', 0, count - 1);261 usr = waiterEnableds.fetch()[position];262 }263 while (usr.user_id == _randomLast && count > 1);264 return usr;265 } else {266 return null;267 }268 },269 /**270 * This function return a random number271 * @param {string} _restaurant272 */273 getRandomInt(min, max): number {274 return Math.floor(Math.random() * (max - min + 1)) + min;275 }276 });...
_autoWaiter-dbg.js
Source:_autoWaiter-dbg.js
1/*!2 * OpenUI53 * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.4 * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.5 */6sap.ui.define([7 "sap/ui/thirdparty/jquery",8 "sap/ui/base/Object",9 "sap/ui/test/_OpaLogger",10 "sap/ui/test/autowaiter/_XHRWaiter",11 "sap/ui/test/autowaiter/_timeoutWaiter",12 "sap/ui/test/autowaiter/_promiseWaiter",13 "sap/ui/test/autowaiter/_navigationContainerWaiter",14 "sap/ui/test/autowaiter/_UIUpdatesWaiter",15 "sap/ui/test/autowaiter/_moduleWaiter",16 "sap/ui/test/autowaiter/_resourceWaiter"17], function(18 jQueryDOM,19 UI5Object,20 _OpaLogger,21 _XHRWaiter,22 _timeoutWaiter,23 _promiseWaiter,24 _navigationContainerWaiter,25 _UIUpdatesWaiter,26 _moduleWaiter,27 _resourceWaiter28) {29 "use strict";30 var aWaiters = [];31 var oLogger = _OpaLogger.getLogger("sap.ui.test.autowaiter._autoWaiter");32 var AutoWaiter = UI5Object.extend("sap.ui.test.autowaiter._autoWaiter", {33 registerWaiter: function (sName, vWaiter) {34 return new Promise(function (fnResolve, fnReject) {35 if (typeof vWaiter === "string") {36 sap.ui.require([vWaiter], this._addWaiter(sName, fnResolve, fnReject), function (error) {37 fnReject("Failed to load waiter " + sName + ": " + error);38 });39 } else if (typeof vWaiter === "object") {40 this._addWaiter(sName, fnResolve, fnReject)(vWaiter);41 }42 }.bind(this));43 },44 hasToWait: function () {45 var result = false;46 // execute wait helpers in sequence and stop on the first that returns true47 // eg: there's no use to call _timeoutWaiter if _UIUpdatesWaiter is true48 aWaiters.forEach(function (mWaiter) {49 if (!result && mWaiter.waiter.isEnabled() && mWaiter.waiter.hasPending()) {50 result = true;51 }52 });53 if (!result) {54 oLogger.timestamp("opa.autoWaiter.syncPoint");55 oLogger.debug("AutoWaiter syncpoint");56 }57 return result;58 },59 extendConfig: function (oConfig) {60 if (!jQueryDOM.isEmptyObject(oConfig)) {61 aWaiters.forEach(function (mWaiter) {62 if (mWaiter.waiter.extendConfig) {63 mWaiter.waiter.extendConfig(oConfig[mWaiter.name]);64 }65 });66 }67 },68 getWaiters: function () {69 return aWaiters.slice();70 },71 _addWaiter: function (sName, fnSuccess, fnError) {72 fnSuccess = fnSuccess || function () {};73 fnError = fnError || function () {};74 return function (oWaiter) {75 if (typeof oWaiter.hasPending !== "function") {76 fnError("Waiter " + sName + " should have a hasPending method");77 } else if (typeof oWaiter.isEnabled !== "function") {78 fnError("Waiter " + sName + " should have an isEnabled method");79 } else {80 var bExists;81 aWaiters.forEach(function (mWaiter) {82 if (mWaiter.name === sName) {83 oLogger.debug("Waiter with name " + sName + " will be overridden!");84 bExists = true;85 mWaiter.waiter = oWaiter;86 }87 });88 if (!bExists) {89 aWaiters.push({90 name: sName,91 waiter: oWaiter92 });93 }94 fnSuccess(oWaiter);95 }96 };97 }98 });99 var oAutoWaiter = new AutoWaiter();100 var mDefaultWaiters = {101 xhrWaiter: _XHRWaiter,102 timeoutWaiter: _timeoutWaiter,103 promiseWaiter: _promiseWaiter,104 navigationWaiter: _navigationContainerWaiter,105 uiUpdatesWaiter: _UIUpdatesWaiter,106 moduleWaiter: _moduleWaiter,107 resourceWaiter: _resourceWaiter108 };109 Object.keys(mDefaultWaiters).forEach(function (sWaiter) {110 return oAutoWaiter._addWaiter(sWaiter)(mDefaultWaiters[sWaiter]);111 });112 return oAutoWaiter;...
Waiter.controller.ts
Source:Waiter.controller.ts
...11 12 @Security('api_key')13 @Tags('Admin')14 @Post("/getwaiter")15 async getwaiter(@Body() getreq:GetReqWaiter 16 ): Promise<SaveUpdateResWaiter>{17 console.log(getreq)18 const waiter:any = await new MainWaiter().getWaiter(<any>getreq);19 20 if(waiter === null) throw new CustomeError(404 , "Waiter Not Found")21 return <SaveUpdateResWaiter>waiter;22 }23 @Security('api_key')24 @Tags('Admin')25 @Get('/getallwaiter')26 @Response(400, 'heello')27 async getallWaiter(): Promise<SaveUpdateResWaiter[]>{28 29 const waiter: any = await new MainWaiter().getallwaiter().populate("order")30 return <SaveUpdateResWaiter[]> waiter31 }32 @Security('api_key')33 @Tags('Admin')34 @Post("/savewaiter")35 async savewaiter(@Body() savereq:SaveReqWaiter): Promise<SaveUpdateResWaiter>{36 const newwaiter:any = await new MainWaiter().saveWaiter(<any> savereq)37 return <SaveUpdateResWaiter> newwaiter;38 }39 @Security('api_key')40 @Tags('Admin')41 @Put("/updatewaiter")42 43 44 async updatewaiter( @Body() updatereq:UpdateReqWaiter ) : Promise<SaveUpdateResWaiter>{45 console.log(updatereq)46 const updatewaiter:any= await new MainWaiter().updateWaiter(<any> updatereq)47 if(updatewaiter === null) throw new CustomeError(404, 'not supported method')48 return <SaveUpdateResWaiter>updatewaiter;49 }50 51 @Security('api_key')52 @Tags('Admin')53 @Delete("/deletewaiter")54 @SuccessResponse("200","Product Deleted")55 async deletewaiter(@Body() deletereq:DelReqWaiter):Promise<any>{56 return await new MainWaiter().delWaiter(<any> deletereq)57 }58 59 @Tags('Waiter')60 @Post("/loginwaiter")61 async login(@Body() data:LoginWaiter):Promise<SaveUpdateResWaiter>{62 console.log(data)63 const logwaiter:any = await new MainWaiter().loginWaiter(data.email)64 if(logwaiter === null) throw new CustomeError(404 , "Wrong email and password ")65 return logwaiter;66 }67 @Security('jwt')68 @Tags('Waiter')69 @Get('/waiterorder')...
Using AI Code Generation
1chrominator.waiter('selector', 'timeout', 'interval');2chrominator.waiter('selector', 'timeout', 'interval');3chrominator.waiter('selector', 'timeout', 'interval');4chrominator.waiter('selector', 'timeout', 'interval');5chrominator.waiter('selector', 'timeout', 'interval');6chrominator.waiter('selector', 'timeout', 'interval');7chrominator.waiter('selector', 'timeout', 'interval');8chrominator.waiter('selector', 'timeout', 'interval');9chrominator.waiter('selector', 'timeout', 'interval');10chrominator.waiter('selector', 'timeout', 'interval');11If you find any issues, please report them [here](
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!