Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name SE Vanliga kontot 4.0
- // @namespace
- // @version SE 3.0
- // @description Productivity fixes for chattcentralen
- // @author
- // @match https://chattcentralen.se/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- loadConfig();
- console.log(config);
- document.title = "✉ Chattcentralen - " + window.location.pathname.substr(1);
- switch(window.location.pathname) {
- case '/':
- console.log("Main page: inserting username and password");
- if(config.username)
- document.getElementsByClassName('username')[0].value = config.username;
- if(config.password)
- document.getElementsByClassName('password')[0].value = config.password;
- document.getElementsByClassName('ui-button')[1].focus();
- if(config.autoLogin && document.getElementsByClassName("messages")[0].textContent.indexOf("Please enter") > -1) {
- console.log("Autologin");
- document.getElementsByClassName('ui-button')[1].click();
- }
- break;
- case '/messages':
- shimFunctions();
- case '/announcements':
- case '/statistics':
- if(config.showCounters) {
- createCounters();
- getStats();
- }
- registerHotkeys();
- createSettingsButton();
- if(config.goToMessagesFirst && document.referrer == window.location.origin+'/')
- window.location = window.location.origin+'/messages';
- break;
- }
- })();
- function loadConfig() {
- console.log("Loading config");
- var defaults = {
- hotkeys: ['KeyQ', 'KeyW', 'KeyA', 'KeyS', 'KeyZ', 'KeyX', 'Digit1', 'Digit2', 'Digit3', 'KeyH', 'KeyK', 'Digit4', 'Digit5', 'ArrowRight', 'Digit6', 'ArrowLeft', 'Digit1', 'Digit5', 'Digit3'],
- username: '',
- password: '',
- autoLogin: false,
- showCounters: true,
- goToMessagesFirst: false,
- highlightMessagesNotes: true,
- focusTargetNotes: false,
- notificationSound: true
- };
- var local = JSON.parse(localStorage.getItem('config'));
- if(local === null)
- local = defaults;
- for (let i in defaults)
- if (!local.hasOwnProperty(i))
- local[i] = defaults[i];
- for (let i in local)
- if (!defaults.hasOwnProperty(i))
- delete local[i];
- console.log("\tConfig loaded");
- Notification.requestPermission().then(function(result) {
- local.showNotifications = result === "granted";
- });
- config = local;
- }
- (function(){
- let allowCopyAndPaste = function(e){
- e.stopImmediatePropagation();
- return true;
- };
- document.addEventListener('copy', allowCopyAndPaste, true);
- document.addEventListener('paste', allowCopyAndPaste, true);
- document.addEventListener('contextmenu', allowCopyAndPaste, true);
- document.addEventListener('keydown', allowCopyAndPaste, true);
- })();
- function focusMessageBox() {
- window.scroll(0, 0);
- document.getElementsByClassName('conversation-message-text')[0].focus();
- }
- function getTargetName() {
- return document.getElementsByClassName('target-name')[0].textContent.slice(1);
- }
- function getUsername() {
- return document.getElementsByClassName("user")[0].textContent.match(/\w+/)[0];
- }
- function notifyOperator() {
- if(document.hidden) {
- if(notifyOperator.notificationSound === undefined) {
- notifyOperator.notificationSound = new Audio("https://youtu.be/llcQu-XB6oE?t=10");
- }
- console.log("Sending notification");
- let oldTitle = document.title;
- let newTitle = "✉ New message!";
- let notification = new Notification("Chattcentralen", {body: "New message received!"});
- if(config.notificationSound) {
- notifyOperator.notificationSound.play();
- }
- setTimeout(() => {
- notification.close.bind(notification);
- }, 5000);
- var n = 0;
- function blinkTitle() {
- document.title = n%2 ? newTitle : oldTitle;
- n++;
- if(document.hidden)
- window.setTimeout(blinkTitle, 500);
- else
- document.title = oldTitle;
- }
- blinkTitle();
- window.focus();
- }
- }
- function highlightMessagesNotes(element) {
- console.log("Highlighting messages and notes");
- let username = document.getElementsByClassName('target-name')[0].textContent.match(/\w+/)[0];
- for (let e of document.getElementsByClassName("from-to")) {
- if(e.textContent.indexOf(username) > -1) {
- e.parentElement.parentElement.style.background = highlightColor;
- }
- }
- let target = getTargetName();
- }
- /**
- * jQuery.autotype -
- */
- (function($){
- // code type constants
- var CHARACTER = 1,
- NON_CHARACTER = 2,
- MODIFIER_BEGIN = 3,
- MODIFIER_END = 4,
- isNullOrEmpty = function(val) { return val === null || val.length === 0; },
- isUpper = function(char) { return char.toUpperCase() === char; },
- isLower = function(char) { return char.toLowerCase() === char; },
- areDifferentlyCased = function(char1,char2) {
- return (isUpper(char1) && isLower(char2)) ||
- (isLower(char1) && isUpper(char2));
- },
- convertCase = function(char) {
- return isUpper(char) ? char.toLowerCase() : char.toUpperCase();
- },
- parseCodes = function(value, codeMap) {
- // buffer to hold a collection of key/char code pairs corresponding to input string value
- var codes = [],
- // buffer to hold the name of a control key as it's being parsed
- definingControlKey = false,
- // hold a collection of currently pushed modifier keys
- activeModifiers = {
- alt: false,
- meta: false,
- shift: false,
- ctrl: false
- },
- explicitModifiers = $.extend({}, activeModifiers),
- // buffer to hold construction of current control key
- currentControlKey = '',
- previousChar = '',
- pushCode = function(opts) {
- codes.push($.extend({}, opts, activeModifiers));
- },
- pushModifierBeginCode = function(modifierName) {
- activeModifiers[modifierName] = true;
- pushCode({
- keyCode: codeMap[modifierName],
- charCode: 0,
- char: '',
- type: MODIFIER_BEGIN
- });
- },
- pushModifierEndCode = function(modifierName) {
- activeModifiers[modifierName] = false;
- pushCode({
- keyCode: codeMap[modifierName],
- charCode: 0,
- char: '',
- type: MODIFIER_END
- });
- };
- for(var i=0;i<value.length;i++) {
- // if the character is about to define a control key
- if(!definingControlKey &&
- i <= value.length - 5 &&
- value.charAt(i) === '{' &&
- value.charAt(i+1) === '{')
- {
- // skip the next "{"
- i++;
- definingControlKey = true;
- }
- // if the character is about to end definition of control key
- else if (definingControlKey &&
- i <= value.length - 2 &&
- value.charAt(i) === '}' &&
- value.charAt(i+1) === '}')
- {
- // skip the next "}"
- i++;
- // check if this key is a modifier-opener (is a ctrl,alt,del,shift)
- if(activeModifiers[currentControlKey] !== undefined)
- {
- explicitModifiers[currentControlKey] = true;
- pushModifierBeginCode(currentControlKey);
- }
- // check if this key is a modifier-closer (is a /ctrl,/alt,/del,.shift)
- else if(activeModifiers[currentControlKey.substring(1)] !== undefined)
- {
- explicitModifiers[currentControlKey] = false;
- pushModifierEndCode(currentControlKey.substring(1));
- }
- // otherwise is some other kind of non-modifier control key
- else
- {
- pushCode({
- keyCode: codeMap[currentControlKey],
- charCode: 0,
- char: '',
- type: NON_CHARACTER,
- controlKeyName: currentControlKey
- });
- }
- definingControlKey = false;
- currentControlKey = '';
- }
- // currently defining control key
- else if (definingControlKey)
- {
- currentControlKey += value.charAt(i);
- }
- // otherwise is just a text character
- else
- {
- var character = value.charAt(i);
- // check for any implicitly changing of cases, and register presses/releases
- // of the shift key in accord with them.
- if(
- (!isNullOrEmpty(previousChar) && areDifferentlyCased(previousChar, character)) ||
- (isNullOrEmpty(previousChar) && isUpper(character))
- )
- {
- if(isUpper(character) && !activeModifiers.shift) {
- pushModifierBeginCode("shift");
- } else if (isLower(character) && activeModifiers.shift && !explicitModifiers.shift){
- pushModifierEndCode("shift");
- }
- }
- // modify the current character if there are active modifiers
- if((activeModifiers.shift && isLower(character)) ||
- (!activeModifiers.shift && isUpper(character))) {
- // shift converts case
- character = convertCase(character);
- }
- var code = {
- // if can't identify a keycode, just fudge with the char code.
- // nope, this isn't ideal by any means.
- keyCode: codeMap[character] || character.charCodeAt(0),
- charCode: character.charCodeAt(0),
- char: character,
- type: CHARACTER
- };
- // modify the current character if there are active modifiers
- if(activeModifiers.alt ||
- activeModifiers.ctrl ||
- activeModifiers.meta) {
- // alt, ctrl, meta make it so nothing is typed
- code.char = '';
- }
- pushCode(code);
- if(code.char !== '') { previousChar = code.char; }
- }
- }
- return codes;
- },
- triggerCodeOnField = function(code, field) {
- // build up base content that every event should contain
- // with information about whether certain chord keys are
- // simulated as being pressed
- var evnt = {
- altKey: code.alt,
- metaKey: code.meta,
- shiftKey: code.shift,
- ctrlKey: code.ctrl
- };
- // build out 3 event instances for all the steps of a key entry
- var keyDownEvent = $.extend($.Event(), evnt, {type:'keydown', keyCode: code.keyCode, charCode: 0, which: code.keyCode});
- var keyPressEvent = $.extend($.Event(), evnt, {type:'keypress', keyCode: 0, charCode: code.charCode, which: code.charCode || code.keyCode});
- var keyUpEvent = $.extend($.Event(), evnt, {type:'keyup', keyCode: code.keyCode, charCode: 0, which: code.keyCode});
- // go ahead and trigger the first 2 (down and press)
- // a keyup of a modifier shouldn't also re-trigger a keydown
- if(code.type !== MODIFIER_END) {
- field.trigger(keyDownEvent);
- }
- // modifier keys don't have a keypress event, only down or up
- if(code.type !== MODIFIER_BEGIN && code.type !== MODIFIER_END) {
- field.trigger(keyPressEvent);
- }
- // only actually add the new character to the input if the keydown or keypress events
- // weren't cancelled by any consuming event handlers
- if(!keyDownEvent.isPropagationStopped() &&
- !keyPressEvent.isPropagationStopped()) {
- if(code.type === NON_CHARACTER) {
- switch(code.controlKeyName) {
- case 'enter':
- field.val(field.val() + "\n");
- break;
- case 'back':
- field.val(field.val().substring(0,field.val().length-1));
- break;
- }
- } else {
- field.val(field.val() + code.char);
- }
- }
- // then also trigger the 3rd event (up)
- // a keydown of a modifier shouldn't also trigger a keyup until coded
- if(code.type !== MODIFIER_BEGIN) {
- field.trigger(keyUpEvent);
- }
- },
- triggerCodesOnField = function(codes, field, delay, global) {
- if(delay > 0) {
- codes = codes.reverse();
- var keyInterval = global.setInterval(function(){
- var code = codes.pop();
- triggerCodeOnField(code, field);
- if(codes.length === 0) {
- global.clearInterval(keyInterval);
- field.trigger('autotyped');
- }
- }, delay);
- } else {
- $.each(codes,function(){
- triggerCodeOnField(this, field);
- });
- field.trigger('autotyped');
- }
- };
- $.fn.autotype = function(value, options) {
- if(value === undefined || value === null) { throw("Value is required by jQuery.autotype plugin"); }
- var settings = $.extend({}, $.fn.autotype.defaults, options);
- // 1st Pass
- // step through the input string and convert it into
- // a logical sequence of steps, key, and charcodes to apply to the inputs
- var codes = parseCodes(value, settings.keyCodes[settings.keyBoard]);
- // 2nd Pass
- // Run the translated codes against each input through a realistic
- // and cancelable series of key down/press/up events
- return this.each(function(){ triggerCodesOnField(codes, $(this), settings.delay, settings.global); });
- };
- $.fn.autotype.defaults = {
- version: '0.5.0',
- keyBoard: 'enUs',
- delay: 0,
- global: window,
- keyCodes: {
- enUs: { 'back':8,'ins':45,'del':46,'enter':13,'shift':16,'ctrl':17,'meta':224,
- 'alt':18,'pause':19,'caps':20,'esc':27,'pgup':33,'pgdn':34,
- 'end':35,'home':36,'left':37,'up':38,'right':39,'down':40,
- 'printscr':44,'num0':96,'num1':97,'num2':98,'num3':99,'num4':100,
- 'num5':101,'num6':102,'num7':103,'num8':104,'num9':105,
- 'multiply':106,'add':107,'subtract':109,'decimal':110,
- 'divide':111,'f1':112,'f2':113,'f3':114,'f4':115,'f5':116,
- 'f6':117,'f7':118,'f8':119,'f9':120,'f10':121,'f11':122,
- 'f12':123,'numlock':144,'scrolllock':145,' ':9,' ':32,
- 'tab':9,'space':32,'0':48,'1':49,'2':50,'3':51,'4':52,
- '5':53,'6':54,'7':55,'8':56,'9':57,')':48,'!':49,'@':50,
- '#':51,'$':52,'%':53,'^':54,'&':55,'*':56,'(':57,';':186,
- '=':187,',':188,'-':189,'.':190,'/':191,'[':219,'\\':220,
- ']':221,"'":222,':':186,'+':187,'<':188,'_':189,'>':190,
- '?':191,'{':219,'|':220,'}':221,'"':222,'a':65,'b':66,'c':67,
- 'd':68,'e':69,'f':70,'g':71,'h':72,'i':73,'j':74,'k':75,
- 'l':76,'m':77,'n':78,'o':79,'p':80,'q':81,'r':82,'s':83,
- 't':84,'u':85,'v':86,'w':87,'x':88,'y':89,'z':90,'A':65,
- 'B':66,'C':67,'D':68,'E':69,'F':70,'G':71,'H':72,'I':73,
- 'J':74,'K':75,'L':76,'M':77,'N':78,'O':79,'P':80,'Q':81,
- 'R':82,'S':83,'T':84,'U':85,'V':86,'W':87,'X':88,'Y':89,'Z':90, 'Å':197, 'Ä':196, 'Ö':214}
- }
- };
- })(jQuery);
- window.afterConversationLoaded = function() {
- console.log("Loaded conversation");
- getStats();
- notifyOperator();
- console.log("Registering emoji click refocusing");
- for(let e of document.getElementsByClassName('emoji-insert')) {
- e.addEventListener('click', focusMessageBox);
- }
- console.log("Registering automatic photo adding");
- for(let e of document.getElementById('AddMediaDialog').getElementsByClassName("mediaAddContainer")) {
- e.addEventListener('click', () => {
- e.getElementsByTagName("img")[0].click();
- e.getElementsByTagName("input")[0].click();
- $('#btnAddMedia').button('enable')[0].click();
- focusMessageBox();
- });
- }
- let highlightColor = "rgb(255, 211, 20)";
- var target = document.getElementById('conversation-content');
- if(config.highlightMessagesNotes) {
- console.log("Highlighting own messages");
- for(let e of document.getElementById("conversation-messages").getElementsByClassName('message-text')) {
- let parentParent = e.parentElement.parentElement;
- if(parentParent.textContent.slice(1).indexOf(getTargetName()) > -1)
- parentParent.style.background = "rgb(145, 145, 145)";
- else
- parentParent.style.background = "rgb(107, 107, 107)";
- }
- console.log("Highlighting target notes");
- let ending = getTargetName().toUpperCase();
- for(let e of document.getElementsByClassName('player-last-notes')[0].children) {
- if(e.children[2].textContent.toUpperCase().replace(/[\ \)]*$/,"").indexOf(ending) > -1) {
- e.style.background = highlightColor;
- }
- }
- }
- let targetNotesContent = document.getElementsByClassName('target-note-content')[0];
- document.addEventListener('selectionchange', (e) => {
- let anchor = document.getSelection().anchorNode;
- if(anchor && anchor.nodeType === Node.TEXT_NODE) {
- anchor = anchor.parentElement;
- }
- if(anchor.classList.contains('message-text')) {
- targetNotesContent.value = window.getSelection().toString();
- }
- });
- //Function to focus end of text
- (function($){
- $.fn.focusTextToEnd = function(){
- this.focus();
- var $thisVal = this.val();
- this.val('').val($thisVal);
- return this;
- }
- }(jQuery));
- //Copy text between textareas
- $(".counters-column6").on("change", function(){
- var Text = $(".counters-column6").val();
- $(".conversation-message-text").autotype(Text);
- //Delete Text
- $(".counters-column6").val('');
- //Focus TextField
- window.scroll(0, 0);
- $(".conversation-message-text").focusTextToEnd();
- });
- }
- function shimFunctions() {
- /*
- if(config.showCounters) {
- console.log("Adding statistics counters");
- loadConversation = (function() {
- var cached_loadConversation = loadConversation;
- return function() {
- var result = cached_loadConversation.apply(this, arguments);
- afterConversationLoaded();
- return result;
- };
- })();
- }
- /*/
- console.log("Adding statistics counters????");
- if(config.showCounters) {
- console.log("Adding statistics counters");
- loadConversation = new Function(
- "id",
- "doPreload",
- "review",
- "fromClaimNext",
- "claimNextType",
- loadConversation.toString()
- .replace("userIdleTime = 0;", "userIdleTime = 0;\n\t\tafterConversationLoaded();")
- .replace(/^function[^{]+{/i,"")
- .replace(/}[^}]*$/i, "")
- );
- }
- //*/
- console.log("Shimming playerNotes");
- playerNotes = (function() {
- var cached_playerNotes = playerNotes;
- return function() { // Swaps category dropdown and log button for player
- var result = cached_playerNotes.apply(this, arguments);
- let e = document.getElementsByClassName('player-note-categories')[0];
- let f = document.getElementsByClassName('player-save-note')[0];
- if(e !== undefined && f !== undefined) {
- f.insertAdjacentElement('beforebegin', e);
- f.addEventListener('click', focusMessageBox);
- }
- return result;
- };
- })();
- console.log("Shimming targetNotes");
- targetNotes = (function() { // Swaps category dropdown and log button for player
- var cached_targetNotes = targetNotes;
- return function() {
- var result = cached_targetNotes.apply(this, arguments);
- let e = document.getElementsByClassName('target-note-categories')[0];
- let f = document.getElementsByClassName('target-save-note')[0];
- if(e !== undefined && f !== undefined) {
- f.insertAdjacentElement('beforebegin', e);
- if(config.focusTargetNotes) {
- f.addEventListener('click', (() => $('.target-note-content')[0].focus()));
- } else {
- f.addEventListener('click', focusMessageBox);
- }
- }
- return result;
- };
- })();
- }
- function registerHotkeys() {
- console.log("Registering hotkeys");
- var helperFunctions = new Map();
- var helpFunctions = new Map();
- helperFunctions.set(config.hotkeys[0], // Go to player note
- () => {
- let e = document.getElementsByClassName('player-note-content')[0];
- if(e !== undefined) {
- var targetNameNote = " (" + getTargetName() + ")";
- if(!e.value.endsWith(targetNameNote))
- e.value += targetNameNote;
- $.fancybox.close();
- e.focus();
- let pos = e.value.length - targetNameNote.length;
- e.setSelectionRange(pos, pos);
- }
- });
- helperFunctions.set(config.hotkeys[1], // Go to target note
- () => {
- let e = document.getElementsByClassName('target-note-content')[0];
- if(e !== undefined) {
- $.fancybox.close();
- e.focus();
- }
- });
- helperFunctions.set(config.hotkeys[2], focusMessageBox); // Go to message box
- helperFunctions.set(config.hotkeys[3], // Open latest attachment
- () => {
- let e = document.getElementsByClassName('conversation-attachment')[0];
- if(e !== undefined) {
- e.click();
- }
- });
- helperFunctions.set(config.hotkeys[4], // Add image
- () => {
- let e = document.getElementsByClassName('message-addmedia-button')[0];
- if(e !== undefined) {
- e.click();
- }
- });
- helperFunctions.set(config.hotkeys[5], // Remove image
- () => {
- let e = document.getElementsByClassName('message-delmedia-button')[0];
- if(e !== undefined) {
- e.click();
- }
- });
- helperFunctions.set(config.hotkeys[6], // Go to Messages
- () => {
- $('button[rel="messages"]').click();
- });
- helperFunctions.set(config.hotkeys[7], // Go to Stopped Messages
- () => {
- $('button[rel="stopped"]').click();
- });
- helperFunctions.set(config.hotkeys[8], // Go to Unread Messages
- () => {
- $('button[rel="unread"]').click();
- });
- helperFunctions.set(config.hotkeys[9], // Generate Hobbies and save to Notes
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- var interests = [' astrologi' ,'bakning' ,'basta' ,'bilar' ,'bio' ,'brädspel' ,'båtar' ,'böcker' ,'campa' ,'cykla' ,'dansa' ,'datorer' ,'dekorera' ,'djur' ,'film' ,'fiska' ,'flyga' ,'fotboll' ,'fotografera' ,'friluftsliv' ,'friskvård' ,'gymnastik' ,'hund' ,'husdjur' ,'hälsa' ,'jogga' ,'katt' ,'klättring' ,'konserter' ,'konst' ,'litteratur' ,'matlagning' ,'meditera' ,'motorcyklar' ,'museum' ,'musik' ,'måla' ,'natur' ,'opera' ,'politik' ,'promenera' ,'pyssla' ,'religion' ,'renovera' ,'resa' ,'rida' ,'segla' ,'simma' ,'skidor' ,'skådespel' ,'social media' ,'spela kort' ,'tatueringar' ,'teater' ,'teckna' ,'teknik' ,'trädgård' ,'träna' ,'tv' ,'umgås' ,'uteliv' ,'vandra' ,'vinprovning' ,'vintersport' ,'äta ute'];
- var n = ~~(Math.random() * 4) + 2;
- var rand = [];
- do {
- rand[rand.length] = interests.splice(Math.floor(Math.random() * interests.length), 1)[0];
- } while (rand.length < n);
- var hoBB = rand;
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(hoBB);
- var f = $('.player-note-content.area').val();
- var e = $('.player-note-content.area');
- $(e).val( f + ' (' + targetNamee + ')');
- // Select note category
- var category = 'Hobby';
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Autotype text to Message
- $('.conversation-message-text').autotype(f);
- });
- helperFunctions.set(config.hotkeys[10], // Generera Sexintressen + spara i Notes
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- var interests = [' analt' ,' bakifrån' ,' bli bunden' ,' att binda' ,' använda buttplug' ,' använda dildo' ,' dominans' ,' kyssar' ,' långa förspel' ,' missionären' ,' ögonbindel' ,' offentliga platser' ,' onani' ,' hårdare smisk' ,' att rida' ,' rollspel' ,' sexiga underkläder' ,' sexleksaker' ,' skeda' ,' att suga' ,' att svälja' ,' teasing' ,' vaniljsex'];
- var n = ~~(Math.random() * 4) + 2;
- var rand = [];
- do {
- rand[rand.length] = interests.splice(Math.floor(Math.random() * interests.length), 1)[0];
- } while (rand.length < n);
- var sex = rand;
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(sex);
- var f = $('.player-note-content.area').val();
- var e = $('.player-note-content.area');
- $(e).val( f + ' (' + targetNamee + ')');
- // Select note category
- var category = 'Sexuella preferenser';
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Autotype text to Message
- $('.conversation-message-text').autotype(f);
- });
- helperFunctions.set(config.hotkeys[11], // Player Jobb+Spara i Notes
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- //Extract Player Proffesion//
- var playerjob = $('.profession').text().toLowerCase();
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(playerjob + ' (' + targetNamee + ')');
- // Select note category
- var category = 'jobb/utbildning';
- // Categories
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //paste proffesion//
- $('.conversation-message-text').autotype(playerjob);
- });
- helperFunctions.set(config.hotkeys[12], // Retrieve Player Name and Save to Notes
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- var playername = $('.real_name').text();
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(playername + ' (' + targetNamee + ')');
- // Select note category
- var category = 'namn';
- // Categories
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Autotype text to Message
- $('.conversation-message-text').autotype(playername);
- });
- helperFunctions.set(config.hotkeys[13], // Target Notes+Autoval av Kategori
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- // Extract selected text
- var note = window.getSelection().toString();
- // Modify and verify selected text
- var text = prompt('Target note:', note);
- // Insert text to note
- $('.target-note-content.area').val(text);
- // Select note category
- var category;
- if (text.match(/bild|selfie|kuk|gif/i)) {
- var category = 'Bilder';
- } else if (text.match(/singel|barn|son|söner|döttrar|dotter|fru|särbo|sambo|gift|skild|änk/i)) {
- var category = 'Familj/Relationer';
- } else if (text.match(/jobb|arbetar|plugg|stude|pension|kör buss|kör lastbil|kör taxi|på järnvägen|chef|kock|vakt|pilot|polis|bagare|förare|frisör|jurist|läkare|lärare|ledare|målare|montör|rektor|advokat|konsult|optiker|pedagog|säljare|väktare|arbetare|arkitekt|brandman|chaufför|designer|fotograf|ingenjör|operatör|snickare|arbetslös|assistent|bartender|maskinist|sköterska|veterinär|elektriker|journalist|hantverkare|programmerare|projektledare|mekaniker|driver eget|företag|firma|måleri|snickeri|verkstad/i)) {
- var category = 'Jobb/Utbildning';
- } else if (text.match(/hund|katt|husdjur|spela|träna|astrologi|basta|bakning|bilar|bio|film|brädspel|båtar|böcker|litteratur|campa|cykla|dansa|datorer|dekorera|djur|fiska|flyga|fotboll|fotografera|friluftsliv|gymnastik|hälsa|friskvård|jogga|klättring|konserter|konst|museum|matlagning|meditera|motorcyklar|musik|måla|natur|nyheter|politik|opera|promenera|pyssla|religion|renovera|resa|rida|resa|segla|simma|skidor|skådespel|social media|tatueringar|teater|teckna|teknik|trädgård|träna|tv|umgås|uteliv|vandra|vinprovning|vintersport|äta ute/i)) {
- var category = 'Hobby';
- } else if (text.match(/bor i|Karlskrona|Karlshamn|Borås|Borlänge/i)) {
- var category = 'Stad';
- } else if (text.match(/heter|Abbe|Abdullah|Abraham|Adam|Adel|Adis|Agris|Agua|Alaga|Albert|Albin|Alek|Alex|Alexander|Alf|Alfred|Ali|Allan|Amir|Anders|Andreas|André|Andy|Ante|Anton|Ants|Ari|Aristides|Arne|Arto|Arvid|Axel|Azar|Behzad|Bengt/i)) {
- var category = 'Namn';
- } else if (text.match(/Bengt-Åke|Benny|Bernt|Bernt-Olov|Bernth|Bert|Bertil|Birger|Birgir|Bjarne|Björn|Bo|Bogdan|Boris|Bosse|Bror|Börge|Börje|Calle|Calmer|Carl|Carsten|Chaban|Charlie|Chris|Christer|Christian|Christoffer|Christophe|Christopher/i)) {
- var category = 'Namn';
- } else if (text.match(/Claes|Classe|Claudiu|Conny|Costas|Dan|Dane|Daniel|Danne|David|Davide|Davor|Deivys|Demir|Dennis|Derek|Dick|Edi|Edvard|Edvin|Ego|Eije|Einar|Eki|Elias|Emanuel|Emil|Emir|Eric|Erik|Erland|Evert|Ewen|Farid|Filip|Folke|Francesco/i)) {
- var category = 'Namn';
- } else if (text.match(/Franjo|Frank|Freddie|Fredrik|Friedhelm|Frode|Fugus|Gabriel|Georg|Gerald|Gerd|Gerra|Gert|Gert-Owe|Getahun|Gunnar|Gustaf|Gustav|Göran|Görgen|Görgen|Gösta|Göte|Habib|Hans|Hans Börge|Harald|Harri|Harry|Hasse|Helmut|Henke|Henrik|Henry|Hossein|Hugo|Håkan|Ihsan|Inge|Ingemar|Ingmar/i)) {
- var category = 'Namn';
- } else if (text.match(/Ingvar|Isaac|Isac|Isak|Ismail|Ivar|Jack|Jakob|Jan|Janne|Jean|Jens|Jerry|Jesper|Jhonatan|Jimmy|Joakim|Joar|Jocke|Joel|Johan|Johannes|John|Johnny|Jon|Jonas|Jonathan|Jonny|Juan|Julius|Jyrki|Jörgen|Kai|Kaj|Kalle|Kari|Karl|Karl Gustav|Karl-Erik|Karl-Olov|Karol|Ken|Kenneth|Kenny|Kent|Kenta/i)) {
- var category = 'Namn';
- } else if (text.match(/Kenth|Kieren|Kim|Kjell|Kjelle|Klas|Knut|Krister|Kristian|Kristoffer|Kurt|Kurt-Lennart|Kutte|Kåge|Lars|Lars Olov|Larsa|Larte|Larui|Lasse|Leif|Lellas|Lennart|Leo|Leon|Linus|Lucky|Ludvig|Magnus|Manne|Manuel|Marco|Marcus|Marek|Marian|Mario|Mark|Marko|Markus|Martin|Mathias|Mats|Matsvo|Matte|Matti|Mattias|Max|Melker|Michael|Michel|Micke|Mika|Mikael|Mikael|Mille|Miron|Misa|Mohamed|Mohammed/i)) {
- var category = 'Namn';
- } else if (text.match(/Morgan|Musa|Mustapha|Måns|Mårten|Nicke|Nicklas|Nicky|Niclas|Niklas|Nille|Nils|Nisse|Nurko|Ola|Oliver|Olle|Olof|Olov|Oscar|Oskar|Ove|Owe|Parsia|Pasi|Patric|Patrick|Patrik|Paul|Pavel|Peder|Pelle|Peo|Per|Per-Olof|Peter|Pether|Petter|Philip|Pierre|Pontus|Poul|Putte|Pär|Rafael|Rafeo|Ragnar|Raimo|Rasmus|Riccardo|Richard|Rickard|Rikard|Rimtaf|Risto|Robban|Robert|Robin|Roffe|Roger|Roland|Rolf|Rolle|Romii|Ronnie|Ronny|Ruben|Rune|Sabah|Sajad|Saladin|Sam|Samuel|Sebastian|Seed|Serko|Sigge|Silvo|Simon|Stefan|Steffen|Sten|Sten-Åke|Stig|Stig-Evert|Sture|Sune|Sven|Sven Erik|Sven Ingvar|Sven Åke|Sven-Erik|Sven-Gunnar|Sven-Åke|Sören|Tage|Taha|Tapio|Ted|Thomas|Thorbjörn|Tobbe|Tobias|Tobias|Tom|Tomas|Tommy|Tony|Torbjörn|Tord|Tore|Torgny|Torsten|Uffe|Ulf|Ulrik|Uno|Urban|Valentin|Victor|Viktor|Vilhelm|Waldemar|Wiktor|Wilhelm|William|Wojtek|Yngve|Yousef|Zdislav|Åke|Öyvind/i)) {
- var category = 'Namn';
- } else if (text.match(/anal|bakifrån|bunden|buttplug|dildo|dominans|kyssar|förspel|missionär|mystik|offentlig|onan|piska|rollspel|underkläder|sexleksaker|strap-on|suga|svälja|teasing|trekant|kondom|vaniljsex|wet/i)) {
- var category = 'Sexuella preferenser';
- } else if (text.match(/bil|mc|motorcykel/i)) {
- var category = 'Transportmedel';
- } else if (text.match(/mejl|mail|telef|skype|kik|fb|facebook/i)) {
- var category = 'Mejl och telefon';
- } else if (text.match(/sjuk/i)) {
- var category = 'Hälsa';
- } else var category = prompt('Select category:');
- // Categories
- $('select.target-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.target-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $( ".conversation-message-text" ).focus();
- });
- helperFunctions.set(config.hotkeys[14], // Save to Target Aktuellt
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- // Extract selected text
- var note = window.getSelection().toString();
- // Insert text to note
- $('.target-note-content.area').val(note);
- // Select note category
- var category = 'aktuella saker';
- // Categories
- $('select.target-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.target-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $( ".conversation-message-text" ).focus();
- });
- helperFunctions.set(config.hotkeys[15], // Save To Player Auto Category
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- //Function to focus end of text
- (function($){
- $.fn.focusTextToEnd = function(){
- this.focus();
- var $thisVal = this.val();
- this.val('').val($thisVal);
- return this;
- }
- }(jQuery));
- // Extract selected text
- var note = window.getSelection().toString();
- // Modify and verify selected text
- var text = prompt('Player note:', note);
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(text + ' (' + targetNamee + ')');
- // Select note category
- var category;
- if (text.match(/bild|selfie|kuk|gif/i)) {
- var category = 'Bilder';
- } else if (text.match(/singel|barn|son|söner|döttrar|dotter|fru|särbo|sambo|gift|skild|änk/i)) {
- var category = 'Familj/Relationer';
- } else if (text.match(/jobb|arbetar|plugg|stude|pension|kör buss|kör lastbil|kör taxi|på järnvägen|chef|kock|vakt|pilot|polis|bagare|förare|frisör|jurist|läkare|lärare|ledare|målare|montör|rektor|advokat|konsult|optiker|pedagog|säljare|väktare|arbetare|arkitekt|brandman|chaufför|designer|fotograf|ingenjör|operatör|snickare|arbetslös|assistent|bartender|maskinist|sköterska|veterinär|elektriker|journalist|hantverkare|programmerare|projektledare|mekaniker|driver eget|företag|firma|måleri|snickeri|verkstad/i)) {
- var category = 'Jobb/Utbildning';
- } else if (text.match(/hund|katt|husdjur|spela|träna|astrologi|basta|bakning|bilar|bio|film|brädspel|båtar|böcker|litteratur|campa|cykla|dansa|datorer|dekorera|djur|fiska|flyga|fotboll|fotografera|friluftsliv|gymnastik|hälsa|friskvård|jogga|klättring|konserter|konst|museum|matlagning|meditera|motorcyklar|musik|måla|natur|nyheter|politik|opera|promenera|pyssla|religion|renovera|resa|rida|resa|segla|simma|skidor|skådespel|social media|tatueringar|teater|teckna|teknik|trädgård|träna|tv|umgås|uteliv|vandra|vinprovning|vintersport|äta ute/i)) {
- var category = 'Hobby';
- } else if (text.match(/bor i|Karlskrona|Karlshamn|Borås|Borlänge/i)) {
- var category = 'Stad';
- } else if (text.match(/heter/i)) {
- var category = 'Namn';
- } else if (text.match(/anal|bakifrån|bunden|buttplug|dildo|dominans|kyssar|förspel|missionär|mystik|offentlig|onan|piska|rollspel|underkläder|sexleksaker|strap-on|suga|svälja|teasing|trekant|kondom|vaniljsex|wet/i)) {
- var category = 'Sexuella preferenser';
- } else if (text.match(/bil|mc|motorcykel/i)) {
- var category = 'Transportmedel';
- } else if (text.match(/mejl|mail|telef|skype|kik|fb|facebook/i)) {
- var category = 'Mejl och telefon';
- } else if (text.match(/sjuk/i)) {
- var category = 'Hälsa';
- } else var category = prompt('Select category:');
- // Categories
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $('.conversation-message-text').focusTextToEnd();
- });
- helperFunctions.set(config.hotkeys[16], // Player Save to Stad
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- //Function to focus end of text
- (function($){
- $.fn.focusTextToEnd = function(){
- this.focus();
- var $thisVal = this.val();
- this.val('').val($thisVal);
- return this;
- }
- }(jQuery));
- // Extract selected text
- var note = window.getSelection().toString();
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(note + ' (' + targetNamee + ')');
- // Select note category
- var category = 'stad';
- // Categories
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $('.conversation-message-text').focusTextToEnd();
- });
- helperFunctions.set(config.hotkeys[17], // Player Save to Aktuellt
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- //Function to focus end of text
- (function($){
- $.fn.focusTextToEnd = function(){
- this.focus();
- var $thisVal = this.val();
- this.val('').val($thisVal);
- return this;
- }
- }(jQuery));
- // Extract selected text
- var note = window.getSelection().toString();
- // Extract target name
- var targetName = $('.target-name').text();
- // Trim period from target name
- var targetNamee = targetName.substr(1);
- // Insert text to note
- $('.player-note-content.area').val(note + ' (' + targetNamee + ')');
- // Select note category
- var category = 'Aktuella saker';
- // Categories
- $('select.player-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.player-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $('.conversation-message-text').focusTextToEnd();
- });
- helperFunctions.set(config.hotkeys[18], // Target Notes No Prompt
- () => {
- // Adds :containsNC - non case-sensitive :contains
- $.extend($.expr[":"], {
- "containsNC": function(elem, i, match, array) {
- return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
- }
- });
- // Extract selected text
- var text = window.getSelection().toString();
- // Insert text to note
- $('.target-note-content.area').val(text);
- // Select note category
- var category;
- if (text.match(/bild|selfie|kuk|gif/i)) {
- var category = 'Bilder';
- } else if (text.match(/singel|barn|son|söner|döttrar|dotter|fru|särbo|sambo|gift|skild|änk/i)) {
- var category = 'Familj/Relationer';
- } else if (text.match(/jobb|arbetar|plugg|stude|pension|kör buss|kör lastbil|kör taxi|på järnvägen|chef|kock|vakt|pilot|polis|bagare|förare|frisör|jurist|läkare|lärare|ledare|målare|montör|rektor|advokat|konsult|optiker|pedagog|säljare|väktare|arbetare|arkitekt|brandman|chaufför|designer|fotograf|ingenjör|operatör|snickare|arbetslös|assistent|bartender|maskinist|sköterska|veterinär|elektriker|journalist|hantverkare|programmerare|projektledare|mekaniker|driver eget|företag|firma|måleri|snickeri|verkstad/i)) {
- var category = 'Jobb/Utbildning';
- } else if (text.match(/hund|katt|husdjur|spela|träna|astrologi|basta|bakning|bilar|bio|film|brädspel|båtar|böcker|litteratur|campa|cykla|dansa|datorer|dekorera|djur|fiska|flyga|fotboll|fotografera|friluftsliv|gymnastik|hälsa|friskvård|jogga|klättring|konserter|konst|museum|matlagning|meditera|motorcyklar|musik|måla|natur|nyheter|politik|opera|promenera|pyssla|religion|renovera|resa|rida|resa|segla|simma|skidor|skådespel|social media|tatueringar|teater|teckna|teknik|trädgård|träna|tv|umgås|uteliv|vandra|vinprovning|vintersport|äta ute/i)) {
- var category = 'Hobby';
- } else if (text.match(/bor i|Karlskrona|Karlshamn|Borås|Borlänge/i)) {
- var category = 'Stad';
- } else if (text.match(/heter|Abbe|Abdullah|Abraham|Adam|Adel|Adis|Agris|Agua|Alaga|Albert|Albin|Alek|Alex|Alexander|Alf|Alfred|Ali|Allan|Amir|Anders|Andreas|André|Andy|Ante|Anton|Ants|Ari|Aristides|Arne|Arto|Arvid|Axel|Azar|Behzad|Bengt/i)) {
- var category = 'Namn';
- } else if (text.match(/Bengt-Åke|Benny|Bernt|Bernt-Olov|Bernth|Bert|Bertil|Birger|Birgir|Bjarne|Björn|Bo|Bogdan|Boris|Bosse|Bror|Börge|Börje|Calle|Calmer|Carl|Carsten|Chaban|Charlie|Chris|Christer|Christian|Christoffer|Christophe|Christopher/i)) {
- var category = 'Namn';
- } else if (text.match(/Claes|Classe|Claudiu|Conny|Costas|Dan|Dane|Daniel|Danne|David|Davide|Davor|Deivys|Demir|Dennis|Derek|Dick|Edi|Edvard|Edvin|Ego|Eije|Einar|Eki|Elias|Emanuel|Emil|Emir|Eric|Erik|Erland|Evert|Ewen|Farid|Filip|Folke|Francesco/i)) {
- var category = 'Namn';
- } else if (text.match(/Franjo|Frank|Freddie|Fredrik|Friedhelm|Frode|Fugus|Gabriel|Georg|Gerald|Gerd|Gerra|Gert|Gert-Owe|Getahun|Gunnar|Gustaf|Gustav|Göran|Görgen|Görgen|Gösta|Göte|Habib|Hans|Hans Börge|Harald|Harri|Harry|Hasse|Helmut|Henke|Henrik|Henry|Hossein|Hugo|Håkan|Ihsan|Inge|Ingemar|Ingmar/i)) {
- var category = 'Namn';
- } else if (text.match(/Ingvar|Isaac|Isac|Isak|Ismail|Ivar|Jack|Jakob|Jan|Janne|Jean|Jens|Jerry|Jesper|Jhonatan|Jimmy|Joakim|Joar|Jocke|Joel|Johan|Johannes|John|Johnny|Jon|Jonas|Jonathan|Jonny|Juan|Julius|Jyrki|Jörgen|Kai|Kaj|Kalle|Kari|Karl|Karl Gustav|Karl-Erik|Karl-Olov|Karol|Ken|Kenneth|Kenny|Kent|Kenta/i)) {
- var category = 'Namn';
- } else if (text.match(/Kenth|Kieren|Kim|Kjell|Kjelle|Klas|Knut|Krister|Kristian|Kristoffer|Kurt|Kurt-Lennart|Kutte|Kåge|Lars|Lars Olov|Larsa|Larte|Larui|Lasse|Leif|Lellas|Lennart|Leo|Leon|Linus|Lucky|Ludvig|Magnus|Manne|Manuel|Marco|Marcus|Marek|Marian|Mario|Mark|Marko|Markus|Martin|Mathias|Mats|Matsvo|Matte|Matti|Mattias|Max|Melker|Michael|Michel|Micke|Mika|Mikael|Mikael|Mille|Miron|Misa|Mohamed|Mohammed/i)) {
- var category = 'Namn';
- } else if (text.match(/Morgan|Musa|Mustapha|Måns|Mårten|Nicke|Nicklas|Nicky|Niclas|Niklas|Nille|Nils|Nisse|Nurko|Ola|Oliver|Olle|Olof|Olov|Oscar|Oskar|Ove|Owe|Parsia|Pasi|Patric|Patrick|Patrik|Paul|Pavel|Peder|Pelle|Peo|Per|Per-Olof|Peter|Pether|Petter|Philip|Pierre|Pontus|Poul|Putte|Pär|Rafael|Rafeo|Ragnar|Raimo|Rasmus|Riccardo|Richard|Rickard|Rikard|Rimtaf|Risto|Robban|Robert|Robin|Roffe|Roger|Roland|Rolf|Rolle|Romii|Ronnie|Ronny|Ruben|Rune|Sabah|Sajad|Saladin|Sam|Samuel|Sebastian|Seed|Serko|Sigge|Silvo|Simon|Stefan|Steffen|Sten|Sten-Åke|Stig|Stig-Evert|Sture|Sune|Sven|Sven Erik|Sven Ingvar|Sven Åke|Sven-Erik|Sven-Gunnar|Sven-Åke|Sören|Tage|Taha|Tapio|Ted|Thomas|Thorbjörn|Tobbe|Tobias|Tobias|Tom|Tomas|Tommy|Tony|Torbjörn|Tord|Tore|Torgny|Torsten|Uffe|Ulf|Ulrik|Uno|Urban|Valentin|Victor|Viktor|Vilhelm|Waldemar|Wiktor|Wilhelm|William|Wojtek|Yngve|Yousef|Zdislav|Åke|Öyvind/i)) {
- var category = 'Namn';
- } else if (text.match(/anal|bakifrån|bunden|buttplug|dildo|dominans|kyssar|förspel|missionär|mystik|offentlig|onan|piska|rollspel|underkläder|sexleksaker|strap-on|suga|svälja|teasing|trekant|kondom|vaniljsex|wet/i)) {
- var category = 'Sexuella preferenser';
- } else if (text.match(/bil|mc|motorcykel/i)) {
- var category = 'Transportmedel';
- } else if (text.match(/mejl|mail|telef|skype|kik|fb|facebook/i)) {
- var category = 'Mejl och telefon';
- } else if (text.match(/sjuk/i)) {
- var category = 'Hälsa';
- } else var category = prompt('Select category:');
- // Categories
- $('select.target-note-categories option:containsNC("' + category + '")').attr('selected', 'selected');
- // Save note
- $('.target-save-note').trigger('click')
- //Focus TextField
- window.scroll(0, 0);
- $( ".conversation-message-text" ).focus();
- });
- helperFunctions.set(config.hotkeys[19], // Focus TextField Column6
- () => {
- //Focus TextField
- $( ".counters-column6" ).focusTextToEnd();
- });
- //Key Event Listensers for Hotkeys
- document.addEventListener('keyup', (e) =>{ // Send Mssg and Lap Time on hit Enter Key
- if (e.which == 13) {
- var isFocused = $(".conversation-message-text").is(":focus"),
- Fokus = $(".counters-column6").is(":focus");
- var len = $('.conversation-message-text').val().length || $('.counters-column6').val().length;
- if (len >= 75 && isFocused) {
- $('#counters-column5').trigger("click");
- $('.message-submit-button').trigger("click");
- }else if (len >= 75 && Fokus) {
- $(".conversation-message-text").focusTextToEnd();
- $('#counters-column5').trigger("click");
- setTimeout($('.message-submit-button').trigger("click"), 500);
- }else{
- return false;
- }
- }
- });
- document.addEventListener('keyup', (e) => { // Adds Alt Key event listeners for the hotkeys
- if(e.altKey && isOkHotkey(e.code)) {
- e.preventDefault();
- e.stopPropagation();
- let f = helperFunctions.get(e.code);
- if(f !== undefined) f();
- }
- });
- document.addEventListener('keyup', (e) => { // Adds Ctrl Key event listeners for the hotkeys
- if(e.ctrlKey && isOkHotkey(e.code)) {
- e.preventDefault();
- e.stopPropagation();
- let r = helpFunctions.get(e.code);
- if(r !== undefined) r();
- }
- });
- console.log("\tHotkeys registered");
- }
- function isOkHotkey(code) {
- return code.startsWith("Key") || code.startsWith("Digit") || code.startsWith("Numpad") || code.startsWith("Arrow") || code.startsWith("F") || code.startsWith("R");
- }
- function createSettingsButton() {
- function addSetting(value, name) {
- var id_name = (name + 'Setting').replace(/[^A-Za-z_]/g,'');
- var label = document.createElement('label');
- label.innerHTML = name + ": ";
- label.setAttribute('for', id_name);
- label.style.gridColumn = '1';
- var element = document.createElement('input');
- if(typeof value == 'boolean') {
- element.type = 'checkbox';
- element.checked = value;
- } else {
- element.type = 'text';
- element.value = value !== undefined ? value : "";
- }
- element.id = id_name;
- element.name = id_name;
- element.style.gridColumn = '2';
- settingsDialog.appendChild(label);
- settingsDialog.appendChild(element);
- return element;
- }
- function setHotkey(n, e) {
- if(isOkHotkey(e.code) || ['Backspace', 'Delete'].includes(e.code)) {
- e.preventDefault();
- e.stopPropagation();
- var code = (['Backspace', 'Delete'].includes(e.code)) ? "" : e.code;
- e.target.value = code;
- config.hotkeys[n] = code;
- }
- }
- console.log("Creating settings button");
- var menu = $('#topmenu1')[0];
- var settingsDialog = document.createElement('div');
- settingsDialog.id = 'SettingsDialog';
- settingsDialog.style.display = 'none';
- settingsDialog.style.alignItems = 'center';
- addSetting(config.username, 'Username') .addEventListener('change', (e) => {config.username = e.target.value;});
- addSetting(config.password, 'Password') .addEventListener('change', (e) => {config.password = e.target.value;});
- addSetting(config.autoLogin, 'Autologin') .addEventListener('change', (e) => {config.autoLogin = e.target.checked;});
- addSetting(config.showCounters, 'Show counters') .addEventListener('change', (e) => {config.showCounters = e.target.checked;});
- addSetting(config.goToMessagesFirst, 'Go to Messages after login')
- .addEventListener('change', (e) => {config.goToMessagesFirst = e.target.checked;});
- addSetting(config.highlightMessagesNotes, 'Highlights messages and notes')
- .addEventListener('change', (e) => {config.highlightMessagesNotes = e.target.checked;});
- addSetting(config.focusTargetNotes, 'Focus target notes after logging')
- .addEventListener('change', (e) => {config.focusTargetNotes = e.target.checked;});
- addSetting(config.notificationSound, 'Play sound on new message')
- .addEventListener('change', (e) => {config.notificationSound = e.target.checked;});
- settingsDialog.appendChild(document.createElement('span'));
- settingsDialog.appendChild(document.createElement('br'));
- settingsDialog.appendChild(document.createElement('span')); settingsDialog.lastChild.innerHTML = 'Functions Starting With ALT Key';
- settingsDialog.appendChild(document.createElement('span'));
- settingsDialog.appendChild(document.createElement('br'));
- addSetting(config.hotkeys[ 0], 'Go to player logging') .addEventListener('keyup', (e) => {setHotkey( 0, e);});
- addSetting(config.hotkeys[ 1], 'Go to target logging') .addEventListener('keyup', (e) => {setHotkey( 1, e);});
- addSetting(config.hotkeys[ 2], 'Go to message box') .addEventListener('keyup', (e) => {setHotkey( 2, e);});
- addSetting(config.hotkeys[ 3], 'Open latest attachment').addEventListener('keyup', (e) => {setHotkey( 3, e);});
- addSetting(config.hotkeys[ 4], 'Add photo dialog') .addEventListener('keyup', (e) => {setHotkey( 4, e);});
- addSetting(config.hotkeys[ 5], 'Remove selected photo') .addEventListener('keyup', (e) => {setHotkey( 5, e);});
- addSetting(config.hotkeys[ 6], 'Go to Messages') .addEventListener('keyup', (e) => {setHotkey( 6, e);});
- addSetting(config.hotkeys[ 7], 'Go to Stopped Messages') .addEventListener('keyup', (e) => {setHotkey( 7, e);});
- addSetting(config.hotkeys[8], 'Go to Unread Messages') .addEventListener('keyup', (e) => {setHotkey(8, e);});
- addSetting(config.hotkeys[9], 'Generate Hobbies') .addEventListener('keyup', (e) => {setHotkey(9, e);});
- addSetting(config.hotkeys[10], 'SexIntressen') .addEventListener('keyup', (e) => {setHotkey(10, e);});
- addSetting(config.hotkeys[11], 'Player Jobb') .addEventListener('keyup', (e) => {setHotkey(11, e);});
- addSetting(config.hotkeys[12], 'Player Namn') .addEventListener('keyup', (e) => {setHotkey(12, e);});
- settingsDialog.appendChild(document.createElement('span'));
- settingsDialog.appendChild(document.createElement('br'));
- settingsDialog.appendChild(document.createElement('span')); settingsDialog.lastChild.innerHTML = 'Functions Starting With CTRL Key';
- settingsDialog.appendChild(document.createElement('span'));
- settingsDialog.appendChild(document.createElement('br'));
- addSetting(config.hotkeys[13], 'Target AutoNotes') .addEventListener('keyup', (e) => {setHotkey(13, e);});
- addSetting(config.hotkeys[14], 'Target Aktuellt') .addEventListener('keyup', (e) => {setHotkey(14, e);});
- addSetting(config.hotkeys[15], 'Player AutoNotes') .addEventListener('keyup', (e) => {setHotkey(15, e);});
- addSetting(config.hotkeys[16], 'Player Stad') .addEventListener('keyup', (e) => {setHotkey(16, e);});
- addSetting(config.hotkeys[17], 'Player Aktuellt') .addEventListener('keyup', (e) => {setHotkey(17, e);});
- addSetting(config.hotkeys[18], 'Target Notes Utan Prompt') .addEventListener('keyup', (e) => {setHotkey(18, e);});
- addSetting(config.hotkeys[19], 'Focus Textarea') .addEventListener('keyup', (e) => {setHotkey(19, e);});
- var settingsButton = menu.children[5].cloneNode();
- settingsButton.id = 'SettingsButton';
- settingsButton.setAttribute('rel', 'settings');
- settingsButton.addEventListener('click', () => {
- $('#SettingsDialog').dialog({
- title: "Settings",
- resizable: false,
- modal: true,
- position: 'top',
- width: '400',
- open: () => {
- $('#SettingsDialog')[0].style.display = 'grid';
- },
- buttons: [
- {
- text: "Save",
- click: () => {
- console.log("Storing config");
- localStorage.setItem('config', JSON.stringify(config));
- console.log("\tConfig stored:");
- console.log(localStorage.getItem('config'));
- loadConfig();
- //window.location.reload();
- }
- }
- ]
- });
- });
- $('button[rel="documents/manual.pdf"]')[0].insertAdjacentElement('afterend', settingsButton);
- $('button[rel="documents/manual.pdf"]')[0].insertAdjacentText('afterend', '\n');
- $('#SettingsButton').button();
- settingsButton.children[0].innerHTML = 'Settings';
- document.getElementById('informDialog').insertAdjacentElement('afterend', settingsDialog);
- console.log("\tSettings button created");
- }
- function createCounters() {
- console.log("Creating counter elements");
- var menu = document.getElementById('topmenu1');
- menu.style.position = 'relative';
- var counters = document.createElement('div');
- counters.id = 'counters-container';
- counters.style.display = 'inline-block';
- counters.style.position = 'absolut';
- counters.style.top = '50%';
- counters.style.transform = 'translateY(-50%)';
- counters.style.fontSize = '1.1em';
- var column1 = document.createElement('div');
- column1.id = 'counters-column1';
- column1.style.display = 'inline-block';
- column1.style.marginLeft = '1em';
- column1.style.marginTop = '1em';
- column1.style.verticalAlign = 'top';
- column1.appendChild(document.createElement('span')); column1.lastChild.innerHTML = 'Sent: ';
- column1.appendChild(document.createElement('span'));
- column1.appendChild(document.createElement('br'));
- column1.appendChild(document.createElement('span')); column1.lastChild.innerHTML = 'Earned: €';
- column1.appendChild(document.createElement('span'));
- column1.appendChild(document.createElement('br'));
- var column2 = document.createElement('div');
- column2.id = 'counters-column2';
- column2.style.display = 'inline-block';
- column2.style.marginLeft = '2em';
- column2.style.marginTop = '1em';
- column2.style.verticalAlign = 'top';
- column2.appendChild(document.createElement('span')); column2.lastChild.innerHTML = 'This week: ';
- column2.appendChild(document.createElement('span'));
- column2.appendChild(document.createElement('br'));
- column2.appendChild(document.createElement('span')); column2.lastChild.innerHTML = 'Earned: €';
- column2.appendChild(document.createElement('span'));
- column2.appendChild(document.createElement('br'));
- column2.appendChild(document.createElement('span')); column2.lastChild.innerHTML = 'Rate: €';
- column2.appendChild(document.createElement('span'));
- column2.appendChild(document.createElement('br'));
- var column4 = document.createElement('div');
- column4.id = 'counters-column4';
- column4.style.display = 'inline-block';
- column4.style.marginLeft = '3em';
- column4.style.marginTop = '1em';
- column4.style.verticalAlign = 'top';
- column4.appendChild(document.createElement('span')); column4.lastChild.innerHTML = 'Time: ';
- column4.appendChild(document.createElement('span'));
- column4.appendChild(document.createElement('br'));
- column4.appendChild(document.createElement('span')); column4.lastChild.innerHTML = 'Last Msg: ';
- column4.appendChild(document.createElement('span'));
- var column5 = document.createElement('div');
- column5.id = 'counters-column5';
- column5.style.display = 'none';
- column5.style.marginLeft = '3em';
- column5.style.marginTop = '1em';
- column5.style.verticalAlign = 'top';
- column5.appendChild(document.createElement('button')); column5.lastChild.innerHTML = 'Clear';
- counters.appendChild(column1);
- counters.appendChild(column2);
- counters.appendChild(column4);
- counters.appendChild(column5);
- menu.insertBefore(counters, menu.lastElementChild);
- var menuu = document.getElementById('main');
- menuu.style.position = 'relative';
- var counterss = document.createElement('div');
- counterss.id = 'counters-container2';
- counterss.style.display = 'block';
- counterss.style.position = 'absolut';
- counterss.style.float = 'left';
- counterss.style.top = '100%';
- counterss.style.transform = 'translateY(-50%)';
- counterss.style.fontSize = '1.1em';
- var column6 = document.createElement('textarea');
- column6.className = 'counters-column6';
- column6.style.display = 'inline-block';
- column6.style.marginLeft = '24em';
- column6.style.marginTop = '6em';
- column6.style.verticalAlign = 'top';
- column6.style.width = '790px';
- column6.style.height = '50px';
- counterss.appendChild(column6);
- menuu.insertBefore(counterss, menuu.lastElementChild);
- console.log("\tCounter elements created");
- }
- function calcRate(messages) {
- if(messages >= 1976)
- return 0.19;
- if(messages >= 1576)
- return 0.16;
- if(messages >= 776)
- return 0.14;
- return 0.12;
- }
- function calcEarned(rate, normal, bonus, other) {
- return rate * (normal + bonus) +
- 0.02 * bonus +
- 0.12 * other;
- }
- function getStats() {
- function updateCounters(stats) {
- function statsForDate(date) {
- var normal = parseInt(date.replied_messages_normal) | 0;
- var peakHour = parseInt(date.replied_messages_peakhour) | 0;
- var weekend = parseInt(date.replied_messages_saturday) +
- parseInt(date.replied_messages_sunday) +
- parseInt(date.replied_messages_specialtrigger) | 0;
- var other = parseInt(date.replied_favorites) +
- parseInt(date.replied_flirts) +
- parseInt(date.replied_matches) +
- parseInt(date.replied_proposals) +
- parseInt(date.replied_stopped) | 0;
- return [normal, peakHour + weekend, other];
- }
- console.log("Updating counters");
- var date = new Date().toLocaleString('sv-SE', {
- year: 'numeric',
- month: '2-digit',
- day: '2-digit'
- });
- var sentNormal, sentBonus, other, normalWeek=0, bonusWeek=0, otherWeek=0, rate,
- column1 = document.getElementById('counters-column1'),
- column2 = document.getElementById('counters-column2'),
- column4 = document.getElementById('counters-column4'),
- column5 = document.getElementById('counters-column5');
- column1.children[1].innerHTML = 'No statistics for today (yet?)!';
- column1.children[4].innerHTML = '';
- for(const s of stats) {
- [sentNormal, sentBonus, other] = statsForDate(s);
- normalWeek += sentNormal;
- bonusWeek += sentBonus;
- otherWeek += other;
- if(s.date == date) {
- rate = calcRate(normalWeek + bonusWeek);
- column1.children[1].innerHTML = sentNormal + sentBonus;
- column1.children[4].innerHTML = (rate * (sentNormal + sentBonus)).toFixed(2);
- console.log("\tCounters for today updated");
- break;
- }
- }
- column2.children[1].innerHTML = normalWeek + bonusWeek;
- column2.children[4].innerHTML = calcEarned(rate, normalWeek, bonusWeek, otherWeek).toFixed(2);
- column2.children[7].innerHTML = rate;
- console.log("\tCounters updated");
- }
- console.log("Getting statistics");
- $.ajax({
- url: '/ajax/stats/action/getStats',
- dataType: 'json',
- type: 'POST',
- data: {
- year: new Date().getFullYear(),
- weekno: $.datepicker.iso8601Week(new Date()),
- pagination: {
- current: 1,
- drawPagination: false,
- perPage: 20,
- total: 1
- },
- type: 'mine'
- },
- success: function (response) {
- console.log("getStats AJAX call success");
- updateCounters(response.data.result);
- },
- complete: function () {}
- });
- console.log("\tStatistics gotten");
- }
- var h1 = document.getElementById('counters-column4'),
- start = document.getElementById('counters-column5'),
- h2 = document.getElementById('counters-column4'),
- seconds = 0, minutes = 0, hours = 0,
- t;
- function add() {
- seconds++;
- if (seconds >= 60) {
- seconds = 0;
- minutes++;
- if (minutes >= 60) {
- minutes = 0;
- hours++;
- }
- }
- h1.children[1].textContent = (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);
- timer();
- }
- function timer() {
- t = setTimeout(add, 1000);
- }
- timer();
- /* Start button */
- start.onclick = function() {
- h2.children[4].textContent = leftPad(minutes) + ":" + leftPad(seconds);
- h1.children[1].innerHTML = "00:00";
- seconds = 0; minutes = 0; hours = 0;
- return false;
- }
- return true;
- function leftPad(value) {
- return value < 10 ? ('0' + value) : value;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement