Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name cf_clothing_answers
- // @namespace http://tampermonkey.net/
- // @version 0.4.0
- // @match https://tasks.crowdflower.com/assignments/*
- // @require https://code.jquery.com/jquery-3.1.0.min.js
- // @require https://cdnjs.cloudflare.com/ajax/libs/async/2.0.1/async.min.js
- // @grant GM_notification
- // ==/UserScript==
- var jQ = jQuery.noConflict();
- (function () {
- const SERVERURL = 'https://35.162.216.24:1337/clothing';
- const COMPARABLE_ATTR = 'url';
- var alertErrorShowed = false;
- if (validTask()) {
- var jobsNodes = getJobsNodes();
- var questions = getQuestions();
- var nEvaluatedConfirmed = 0;
- async.forEachOf(questions, function (question, index) {
- findSavedAnswer(question[COMPARABLE_ATTR], function (savedAnswer) {
- if (savedAnswer.evaluated) {
- nEvaluatedConfirmed++;
- }
- displayAsnwer(index, savedAnswer);
- });
- });
- if (nEvaluatedConfirmed === 0) {
- //createUI();
- }
- }
- function validTask () {
- //EDIT
- var validTitle = 'Clothing Categorisation Task';
- var taskTitle = jQ('.job-title').text().trim();
- return taskTitle.includes(validTitle);
- }
- function getJobsNodes () {
- return jQ('div.cml.jsawesome');
- }
- function getQuestions () {
- var questions = [];
- for (var i = 0; i < jobsNodes.length; i++) {
- var jobNode = jobsNodes[i];
- //EDIT
- var question = jQ(jobNode).find('a').attr('href');
- questions.push({
- [COMPARABLE_ATTR]: question
- });
- }
- return questions;
- }
- function getAnswers () {
- var answers = [];
- //EDIT
- for (var i = 0; i < jobsNodes.length; i++) {
- var $jobNode = jQ(jobsNodes[i]).find('.span3.well');
- var answer = '';
- var gender, type, category, subcategory;
- //Gender
- gender = $jobNode.children('.group').first().find('input:checked').val();
- //Type
- type = $jobNode.children('.radios').first().find('input:checked').val();
- //Category
- category = $jobNode.children('.group').eq(1).find('input:checked');
- if (category) {
- category = category.val();
- } else {
- category = '';
- }
- //Sucategory
- subcategory = $jobNode.children('.group').eq(1).find('input:checked:checkbox').first();
- if (subcategory) {
- subcategory = subcategory.val();
- } else {
- subcategory = '';
- }
- answers.push({
- gender: gender,
- type: type,
- category: category,
- subcategory: subcategory
- });
- }
- return answers;
- }
- function sendNewAnswers (cb) {
- var answers = getAnswers();
- async.forEachOf(questions, function (question, index, next) {
- var answer = answers[index];
- //EDIT
- var newAsnwer = {
- url: question.url,
- gender: answer.gender,
- type: answer.type,
- category: answer.category,
- subcategory: answer.subcategory
- };
- jQ.post({
- url: SERVERURL,
- data: newAsnwer,
- timeout: 5000
- })
- .always(function () {
- next(null);
- });
- }, cb);
- }
- function findSavedAnswer (comparableAttr, done, fail) {
- jQ.post({
- url: SERVERURL + '/actions/find',
- dataType: 'JSON',
- data: {
- [COMPARABLE_ATTR]: comparableAttr
- }
- })
- .done(function (savedAnswers) {
- done(savedAnswers);
- })
- .fail(function (err) {
- if (err.statusText === "error"){
- showAlertError('No ha desbloqueado el pescadito ');
- }
- });
- }
- function displayAsnwer (index, answer) {
- var jobsNodes = jQ('div.cml.jsawesome');
- //EDIT
- var responseNode = '<div class="span6">' +
- '<table class="table table-bordered">' +
- '<tr><td><b>Gender:</b></td><td>' + answer.gender + '</td></tr>' +
- '<tr><td><b>Type:</b></td><td>' + answer.type + '</td></tr>' +
- '<tr><td><b>Category:</b></td><td>' + answer.category + '</td></tr>' +
- '<tr><td><b>Subcategory:</b></td><td>' + answer.subcategory + '</td></tr>' +
- '</table>' +
- '</div>';
- jQ(jobsNodes[index]).prepend(responseNode);
- }
- function createUI () {
- var $container = jQ('div.form-actions');
- var $originalSendButton = jQ('input:submit');
- $container.append('<button id="sabtn" type="button" class="submit btn btn-cf-green" >Enviar Respuestas</button>');
- jQ('#sabtn').on('click', function () {
- sendNewAnswers(function () {
- GM_notification({
- title: '',
- text: 'Respuestas Enviadas',
- timeout: 3000
- });
- });
- });
- }
- function showAlertError(message) {
- if (!alertErrorShowed) {
- GM_notification({
- title: 'Error al cargar respuestas',
- text: message,
- image: 'http://www.descargaratube.com/wp-content/uploads/2015/07/error_icon.png',
- timeout: 10000
- });
- }
- alertErrorShowed = true;
- }
- function showErrorBackground () {
- jQ('#content').css({background: '#ff878f'});
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement