/** * @ngdoc function * @name fasit.component.#example * @function * * @description * desc * */ angular.module('fasit') .factory('queueService', function ( ): fb.IQueueService { 'use strict'; var queues = {}; var getQueue = function (queueId: string): fb.IQueue { if (queues[queueId] !== undefined) { return queues[queueId]; } else { var queue: fb.IQueue = new Queue(queueId); queues[queueId] = queue; return queue; } } function Queue(queueName: string): void { var queue = []; var isProcessing = false; /* Enqueuear något på kön */ this.enqueue = function (item,replace) { var res:fb.IQueueableItem = _.findWhere(queue, { UniqueId: item.UniqueId }); if (typeof res === 'undefined') { queue.push(item); } else if (replace) { res.Item = item.Item; res.UniqueId = item.UniqueId; res.LastResolved = item.LastResolved; } } this.id = queueName; /* Dequeuear ett element på kön */ this.dequeue = function () { if (queue.length === 0) { return undefined; } var item = queue[0]; queue.splice(0, 1); return item; } this.remove = function (id) { for (var i = 0; i < queue.length; i++) { if (queue[i].UniqueId === id) { return queue.splice(i, 1)[0]; } } } this.exists = function (id) { var res = _.findWhere(queue, { UniqueId: id }); return (typeof res !== 'undefined'); } this.get = function (id) { var res = _.findWhere(queue, { UniqueId: id }); return (typeof res !== 'undefined') ? res : null; } this.queue = queue; } return { get: getQueue, }; });