.success(function(data, status, headers, config) {
          var params = {
            reference: {
              name: data.file,
              path: path,
              tag: scope.document.tag.tag,
              uploader: Auth.user.username
            }
          };

          params.reference.acceptance_cycle = __
            .chain( scope.document.tag.acceptance_cycle )
            .omit('tags')
            .extend({
              status: 'in_revision'
            })
            .value();

          Documents.saveDocument( params )
            .success( function ( response ) {
              if ( response.status ) {
                Documents.nextToReview( response._id )
                  .then(function (data) {
                    scope.loadDocuments();
                    scope.selectedFiles = [];
                    scope.progress = [];
                    scope.upload = [];
                    scope.alerts.push({
                      type: 'success',
                      message: 'Documento guardadado exitosamente, una vez que sea aprobado será mostrado en la sección de documentos.'
                    });
                  });
              }
            });
        })
Example #2
0
function parseParams(name, vessel, func) {
    var paramMatcher = /^.*function.*\((.*)\)/;
    var match = paramMatcher.exec(func.toString());

    var str = match[1];
    var params = _.chain(str.split(',')).
        map(function (param) {
            return trim(param);
        }).
        filter(function (param) {
            return param && param !== '';
        }).
        value();

    var args = [];
    for (var i in params) {
        var param = params[i];
        try {
            args.push(vessel.get(param));
        } catch (e) {
            throw new Error("Failed to build [" + name + '] because: ' + e.message);
        }
    }
    return args;
}
Example #3
0
            var sortGoodScores = function(goodScores) {
                var tastiest = _.chain(goodScores)
                    .sortBy(function(p) { return p.score; })
                    .reverse()
                    .first(10)
                    .value();

                async.each(tastiest, function(pair, done) {
                    if(!_.isObject(pair.p1)) { // fix this
                        dbot.api.users.getUser(pair.p1, function(user) {
                            pair.p1 = user;
                            dbot.api.users.getUser(pair.p2, function(user) {
                                pair.p2 = user;
                                done();
                            });
                        }); 
                    } else {
                        done();
                    }
                }, function() {
                    var output = 'Most musically compatible users: ';    
                    _.each(tastiest, function(pair) {
                        output += pair.p1.currentNick + ' & ' + 
                            pair.p2.currentNick + ' (' + pair.score +
                            '%), ';
                    });
                    event.reply(output.slice(0, -2));
                });
            };
Example #4
0
Factory.buildStoriesWithPrefix = (prefix, extraProps={}) => (
  _.chain(Factory.factories)
    .pairs()
    .filter((pair) => pair[0].startsWith(prefix))
    .map((pair) => ({ name: pair[0].replace(prefix, ''), props: pair[1].build(extraProps) }))
    .value()
)
Example #5
0
 self.callRpc('system.listMethods',[], function (err, result){
     console.log
     if(err){
         console.log('unable to build proxy ' + err);
         self.emit('error', err);
         if(callback){
             callback(err, null);
         }
         return;
     }
     _.chain(result).map(function (method){
         return { 
             name : method,
             func : (function(method){ return function (){
                 var params = Array.prototype.slice.call(arguments),
                     cb = params.length
                         && typeof params[params.length-1] === "function"
                         && params.pop();
                 return self.callRpc(method, params, cb);
             }})(method)
         };
     }).reduce(function(memo, remoteFunc){
         assign(memo, remoteFunc.name.split('.'), remoteFunc.func);
         return memo;
     },self);
     self.emit('ready', self);
     if(callback){
         callback(err, self);
     }
 });
Example #6
0
            this.db.read('poll', name, function(err, poll) {
                if(!err) {
                    var order;
                    var votesArr = [];

                    var order = _.chain(poll.votes)
                        .pairs()
                        .sortBy(function(option) { return option[1]; })
                        .reverse()
                        .value();

                    var orderString = "";
                    for(var i=0;i<order.length;i++) {
                        orderString += order[i][0] +
                            " (" + order[i][1] + "), ";
                    }
                    orderString = orderString.slice(0, -2);

                    event.reply(dbot.t('count', {
                        'poll': name, 
                        'description': poll.description, 
                        'places': orderString
                    }));
                } else {
                    if(err instanceof NoSuchThingError) {
                        event.reply(dbot.t('poll_unexistent', {'name': name}));
                    }
                }
            });
Example #7
0
function isUserFinding(user) {
    'use strict';
    return _.chain(queueEntriesByTier)
        .values().flatten().any(function(entry) {
            return entry.playerID === user.id;
        }).value();
}
	search.categorySummary = function(results, callback){
		results.results.resultsInCategoryCount = _.chain(results.results.posts)
			.map(function(post){
				post.content = JSON.parse(_.unescape(post.content));
				if(typeof post.content !== "string"){
					var content = '';
					_.each(post.content, function(partial, key){
						content += key + ': ' + partial + '<br>';
					});
					post.content = content;
				}
				return post;
			})
			.countBy(function(post){ return post.category.name;})
			.map(function(count, categoryName){ 
				var category = _.findWhere(results.results.categories, {name: categoryName});
				return {
					cid: category.cid,
					category: category.name,
					count: count
				};
			})
			.value();
		results.results.search_query_escaped = escape(results.results.search_query);

		callback(null, results);
	}
Example #9
0
        '~count': function(event) {
            var name = event.input[1].toLowerCase();
            
            if(_.has(polls, name)) {
                var order;
                var votesArr = [];

                var order = _.chain(polls[name].votes)
                    .pairs()
                    .sortBy(function(option) { return option[1] })
                    .reverse()
                    .value();

                var orderString = "";
                for(var i=0;i<order.length;i++) {
                    orderString += order[i][0] +
                        " (" + order[i][1] + "), ";
                }
                orderString = orderString.slice(0, -2);

                event.reply(dbot.t('count', {
                    'poll': name, 
                    'description': polls[name].description, 
                    'places': orderString
                }));
            } else {
                event.reply(dbot.t('poll_unexistent', {'name': name}));
            }
        }
Example #10
0
 .action(function(){
   var one = _.chain(program).pick('noun adj adv verb'.split(' ')).countBy().value().true;
   if (!one || one > 1) {
     console.error('Must include one and only one of -n, -a, -v, -r');
     process.exit(-1);
   }
   // force full output mode
   program.full = 1;
   exec.apply(this, arguments);
 });
Example #11
0
 webot.set(/^more$/i, function(info){
   var reply = _.chain(webot.get()).filter(function(rule){
     return rule.description;
   }).map(function(rule){
     //console.log(rule.name)
     return '> ' + rule.description;
   }).join('\n').value();
   
   return '我的主人还没教我太多东西,你可以考虑帮我加下.\n可用的指令:\n'+ reply;
 });
    function setupNetworks(port, networks) {
        serverPort = port;
        serverNetworks = networks;
        serverIPs = _.chain(networks)
            .map(function (network) { return network.ipv4; })
            .filter(function (ipv4) { return ipv4 !== ""; })
            .value();

        console.log("Using server URL of " + getBaseURI());
    }
Example #13
0
  webot.set(/^more$/i, function(info){
    var reply = _.chain(webot.gets()).filter(function(rule){
      return rule.description;
    }).map(function(rule){
      return '> ' + rule.description;
    }).join('\n').value();

    return ['我的主人还没教我太多东西,你可以考虑帮我加下.\n可用的指令:\n'+ reply,
      '没有更多啦!当前可用指令:\n' + reply];
  });
Example #14
0
  webot.set(/^(help|帮助|\?)$/i, function(info, action){
    action.description = 'help'

    var reply = _.chain(webot.get()).filter(function(action){
      return action.description
    }).map(function(action){
      return '> ' + action.description
    }).join('\n').value()
    
    return '可用的指令:\n'+ reply;
  })
Example #15
0
function mpeg4_mux_output(mkv, callback) {
    var options = [];
  
    _.chain(mkv.tracks).filter(is_video).each(function (track) {
	options.push('-add');
	options.push(track.file_name);
    });
    
    _.chain(mkv.tracks).filter(is_audio).sortBy(language_order).each(function (track) {
	options.push('-add');
	options.push(track.file_name + lang_tag(track) + ':group=3');
    });
    
    _.chain(mkv.tracks).filter(is_subtitles).sortBy(language_order).each(function (track) {
	options.push('-add');
	options.push(track.file_name + ':hdlr=sbtl' + lang_tag(track) + ':group=2:layer=1');
    });
    
    options.push('-new');
    options.push(make_output_name(mkv));
    
    if(mkv.tags) {
	var tags = [];
	for(var tag in mkv.tags) {
	    tags.push(tag + '=' + mkv.tags[tag]);
	}
	if(tags.length) {
	    options.push('-itags');
	    options.push(tags.join(':'));
	}
    }
    
    spawn_collect(exe_mp4box, 
		  options,
		  function(err, code, result) {
		      mkv.mp4box_output = result; 
		      mkv.mp4box_result = code;
		      callback(err, mkv);
		  });
    
}
Example #16
0
                    request(parseTag(tag), function (error, response, body){
                        var results =
                            _.chain(JSON.parse(body).data)
                            .map(function(item){
                                return {
                                    image: item.images.standard_resolution,
                                    caption: item.caption.text
                                }
                            }).value();

                        console.log(results);
                        realtime.notify(results);
                    });
Example #17
0
        '~ignore': function(event) {
            var module = event.params[1];
            var ignorableModules = _.chain(dbot.modules)
                .filter(function(module, name) {
                    return dbot.config[module].ignorable === true;
                })
                .pluck('name')
                .value();

            if(_.isUndefined(module)) {
                event.reply(dbot.t('ignore_usage', {
                    'user': event.user, 
                    'modules': ignorableModules.join(', ')
                }));
            } else {
                if(module == '*' || _.include(ignorableModules, module)) {
                    this.api.getUserIgnores(event.server, event.user, function(err, user, ignores) {
                        if(!err) {
                            if(!ignores) {
                                ignores = {
                                    'id': user.id,
                                    'ignores': [],
                                    'bans': []
                                };
                            }

                            if(!_.include(ignores.ignores, module)) {
                                ignores.ignores.push(module);
                                this.db.save('ignores', user.id, ignores, function(err) {
                                    if(!err) {
                                        dbot.instance.ignoreTag(event.user, module);
                                        event.reply(dbot.t('ignored', {
                                            'user': event.user, 
                                            'module': module
                                        }));
                                    }
                                });
                            } else {
                                event.reply(dbot.t('already_ignoring', { 'user': event.user }));
                            }
                        } else {
                            // User doesn't exist
                        }
                    }.bind(this));
                } else {
                    event.reply(dbot.t('invalid_ignore', { 'user': event.user }));
                }
            }
        }, 
Example #18
0
        '~qstats': function(event) {
            var qSizes = _.chain(quotes)
                .pairs()
                .sortBy(function(category) { return category[1].length })
                .reverse()
                .first(10)
                .value();

            var qString = dbot.t('large_categories');
            for(var i=0;i<qSizes.length;i++) {
                qString += qSizes[i][0] + " (" + qSizes[i][1].length + "), ";
            }

            event.reply(qString.slice(0, -2));
        },
Example #19
0
            var orderedKickLeague = function(list, topWhat) {
                var kickArr = _.chain(list)
                    .pairs()
                    .sortBy(function(kick) { return kick[1] })
                    .reverse()
                    .first(10)
                    .value();

                var kickString = "Top " + topWhat + ": ";
                for(var i=0;i<kickArr.length;i++) {
                    kickString += kickArr[i][0] + " (" + kickArr[i][1] + "), ";
                }

                return kickString.slice(0, -2);
            };
 function getBladeIps() {
     return _.chain(netDb.db)
         .filter(function (discovery) { return !_.isUndefined(discovery.blades); })
         .map(function (discovery) { return discovery.blades; })
         .flatten()
         .map(function (blade) { return blade.networks; })
         .flatten()
         .map(function (network) { return network.ipv4; })
         .map(function (val){
             var matches = ipMatcher.exec(val);
             return matches && matches.length > 0 ? matches[1] : "";
         })
         .filter(function (val) { return val !== ""; })
         .value();
 }
Example #21
0
 	var rankByScore = function(ranking, getScore, sort, assignRank) {
 		var previousScore;
     var previousRank;
 		var currentRank = 0;
     _.chain(affiliateAthletes)
 		  .sortBy(function(a) {return getScore(a) * sort; })
 			.each(function(a) {
         currentRank++
 				var score = getScore(a);          
         rank = score === previousScore ? previousRank : currentRank
         previousScore = score;
         previousRank = rank;
         console.log(ranking + ' ' + a.name + ' ' + score + ' ' + rank);
 				assignRank(a, rank);
 			});
 	};
Example #22
0
            }, function() {
                var pCounts = _.chain(pList)
                    .pairs()
                    .sortBy(function(p) { return p[1]; })
                    .reverse()
                    .first(10)
                    .value();

                async.eachSeries(pCounts, function(pCount, next) {
                    dbot.api.users.getUser(pCount[0], function(err, user) {
			if(user) {
				pCount[0] = user.primaryNick;
			}
			next();
                    });
                }, function() {
                    callback(pCounts);
                }.bind(this));
            });
Example #23
0
 getOrdersActions: function(turnTime, battle) {
     'use strict';
     var actions;
     if (this.orders.length > 0 && !this.inTeleporter()) {
         actions = this.orders[0].getActions(turnTime, battle);
         //if it's not gonna make it,
         //force arrival to the tile at end of turn
         if (turnTime < battle.turnDuration) {
             _.chain(actions)
                 .where({type: 'Move'})
                 .each(function(a) {
                     if (a.duration + turnTime > battle.turnDuration) {
                         a.duration = battle.turnDuration - turnTime;
                     }
                 });
         }
         return actions;
     }
     return [];
 },
Example #24
0
                    }.bind(this), function() {
                        var scrobbliest = _.chain(plays)
                            .sortBy(function(p) { return p.plays; })
                            .reverse()
                            .first(10)
                            .value();

                        async.each(scrobbliest, function(item, done) {
                            dbot.api.users.getUser(item.user, function(user) {
                                item.user = user; 
                                done();
                            });
                        }, function() {
                            var output = dbot.t('lfm_scrobbliest');
                            _.each(scrobbliest, function(item) {
                                output += item.user.currentNick + ' (' +
                                    item.plays.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")+ '), ';
                            });
                            event.reply(output.slice(0, -2));
                        });
                    }.bind(this));
Example #25
0
            this.api.getTrackedWord(word, function(tWord) {
                if(tWord) {
                    var pCounts = _.chain(tWord.users)
                        .pairs()
                        .sortBy(function(p) { return p[1]; })
                        .reverse()
                        .first(10)
                        .value();

                    async.eachSeries(pCounts, function(pCount, next) {
                        dbot.api.users.getUser(pCount[0], function(err, user) {
                            if(user) {
                              pCount[0] = user.primaryNick;
                            }
                            next();
                        });
                    }, function() {
                        event.reply(this.internalAPI.formatHighscore('Top ' + word + ' users: ', pCounts));
                    }.bind(this));
                } else {
                    event.reply(word + ' isn\'t being tracked.');
                }
            }.bind(this));
 function getDiscoveryIps () {
     return _.chain(netDb.db)
         .map(function(value) { return value.ipv4; })
         .filter(function(value) { return "" !== value; })
         .value();
 }
Example #27
0
    /**
     * Generates a "script" for the units given all the orders issued.
     * @param {sh.OrderCollection} orderCollection
     * @param {sh.Battle} battle
     * @param {Boolean} resetBattle Should the battle be cleaned up at the end.
     * @return {sh.Script}
     */
    function createScript(orderCollection, battle, resetBattle) {
        var script, queue, changes, time, actors, actor, i,
            registerActionReturned = {}, turnDuration = battle.turnDuration,
            changesAtSameTime = [];
        script = new Script({turnDuration: turnDuration});
        queue = [];
        function insertInQueue(item) {
            insertByTime(queue, item);
        }

        function registerAction(returned, time) {
            return function(action) {
                action.time = time;
                action.updateModelChanges();
                script.actions.push(action);
                _.each(action.modelChanges, function(mc, index) {
                    if (mc.time >= 0) {
                    //Add actionIndex and index used by script.registerChange
                        mc.actionIndex = script.actions.length - 1;
                        mc.index = index;
                        if (mc.time === action.time) {
                            //apply immediate changes
                            mc.apply(battle);
                            script.registerChange(mc);
                            returned.immediateChanges.push(action.toString());
                        } else {
                            insertInQueue(mc);
                        }
                    }
                });
            };
        }

        //set the orders to the units
        battle.insertOrders(orderCollection);

        //null change to kick-start the process
        queue.push(getVoidModelChange(0));

        _.each(battle.pendingActions, function(action) {
            registerAction({}, action.time - turnDuration)(action);
        });

        //simulation loop (the battle gets modified and actions get added
        // to the script over time)
        while (queue.length > 0 && queue[0].time <= turnDuration) {
            time = queue[0].time;
            changes = _.where(queue, {time: time});
            _.invoke(changes, 'apply', battle);
            _.each(changes, script.registerChange, script);
            queue = queue.slice(changes.length);

            if (time < turnDuration) {
                //actions can't start at end of turn
                registerActionReturned.immediateChanges = [];
                actors = battle.getActors();
                for (i = 0; i < actors.length; i++) {
                    actor = actors[i];
                    _.each(actor.getActions(time, battle),
                        registerAction(registerActionReturned, time));
                }
                if (registerActionReturned.immediateChanges.length > 0) {
                    //If any actor returned any action with immediate model
                    //changes, the loop enters again at the same time.
                    changesAtSameTime.push(
                        registerActionReturned.immediateChanges
                    );
                    if (changesAtSameTime.length >= maxLoopsAtSameTime) {
                        throw 'Too much model changes at the same time (' +
                            time + 'ms). Changes stack: ' + changesAtSameTime
                            .slice(changesAtSameTime.length - 11,
                                changesAtSameTime.length - 1).toString() +
                            ' ...';
                    }
                    insertInQueue(getVoidModelChange(time));
                } else {
                    changesAtSameTime = [];
                }
            }
        }

        battle.pendingActions = _.chain(queue)
            .pluck('action')
            .uniq()
            .value();
        script.pendingActionsJson = utils.mapToJson(battle.pendingActions);

        //clean up
        if (resetBattle) {
            battle.endOfTurnReset();
        }
        return script;
    }