// ==UserScript== // @name FA Journal Breakdown // @namespace FurAffinity // @version 3.2 // @description Provides a breakdown of your journal list // @author JaysonHusky // @grant GM_getValue // @grant GM_setValue // @match *://www.furaffinity.net/msg/others/* // @match *://www.furaffinity.net/controls/user-settings/* // @require https://code.jquery.com/jquery-latest.js // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Setup keywords var myKeywords; // Begin loading function FAJBM_Load(){ var user_defined_keywords=GM_getValue('fajbm'); if(user_defined_keywords > ""){ myKeywords=user_defined_keywords.split(","); $('#fajbm_settings').val(user_defined_keywords.replace(/,/g,", ")); } else { return "undefined"; } } // Save settings function FAJBM_SaveSettings(fajbm){ GM_setValue('fajbm',fajbm); } // Load Control Panel var pathx=window.location.pathname; if(~pathx.indexOf("/controls/user-settings/")){ // Update $(document.body).on('click', '#fajbm_saveit', function() { var fajbm_set=$("input[name='fajbm_setting']").val().replace(/ /g,"").replace(/ /g,""); FAJBM_SaveSettings(fajbm_set); $('.faf-update-status').fadeIn('slow'); setTimeout(function(){ $('.faf-update-status').fadeOut('slow'); }, 5000); }); if(STATIC_PATH=="/themes/beta"){ $('.content .section-divider').after(`
Enter keywords here for the addon to identify in journal titles.
Keywords MUST be comma seperated and usernames MUST match the username of the page, NOT the URL.
Singular terms like "Stream" will match "Streams" etc.
Please do NOT use the terms "posted by" or "hours ago" as they will match every journal.
FA Journal Breakdown - Control Panel | ||||||
Journal breakdown by term:'); } else { KeywordTitle=$("#messages-journals h3").first().append(' Journal breakdown by term:'); } // Sort Keywords alphabetically myKeywords=myKeywords.sort(); // Creating the var's var StreamCounter,scx,theStreamCount2,strtouc,CommCounter; // Adapt JQuery :contains to function without case restriction jQuery.expr[':'].icontains=function(a, i, m){ return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; }; // JS equiv of PHPs ucwords() for better presentation (Credit: rickycheers @ Github) String.prototype.ucwords=function(){ strtouc=this.toLowerCase(); return strtouc.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,function(s){ return s.toUpperCase(); }); }; function CheckForConventionNaming(term){ // I know YCH is not a convention, but it needs to be termed as a all caps response var conventions=["ych","fc","mwff","mwf","fwa","blfc","cf","ac","sc","ef","ane","jftw","mp","bc","mff","af","ao","fau","ff","fm","fu","mcfc","nc","nfc","bff","bc","rcfm","cc","ifc"]; if(conventions.indexOf(term)>-1){ scx=$("#messagecenter-other #messages-journals li strong a:icontains('"+term+"')").length; theStreamCount2=' '+term.toUpperCase()+': '+scx+' '; } else if(term=="cfz"){ // Due to the way Confuzzled stylise their name, it has a unique condition here. scx=$("#messagecenter-other #messages-journals li strong a:icontains('"+term+"')").length; theStreamCount2=' CFz: '+scx+' '; } else{ scx=$("#messagecenter-other #messages-journals li:icontains('"+term+"')").length; theStreamCount2=' '+term.ucwords()+': '+scx+' '; } } // Search for custom keywords myKeywords.forEach(function(keyword) { // Add CSS3 Transitional feature for keyword click $("."+keyword+"").css('transition','0.5s all'); // Run a check against list of convention abbreviations and correctly present them CheckForConventionNaming(keyword); // Add custom keywords to Journal header $(KeywordTitle).append(theStreamCount2); // Highlight when clicked (deselecting all others) $("."+keyword).click(function(){ if(STATIC_PATH=="/themes/beta"){ $("."+keyword+"").css('transition','0.5s all'); $("."+keyword+"").css('background','#5b5e65'); $("."+keyword+"").css('border-radius','3px'); $("#messages-journals i:not(."+keyword+")").css('background','transparent'); $("#messagecenter-other #messages-journals li:icontains('"+keyword+"')").css('background','#535d75'); $("#messagecenter-other #messages-journals li:not(:icontains("+keyword+"))").css('background','transparent'); } else { $("."+keyword+"").css('transition','0.5s all'); $("."+keyword+"").css('background','rgba(1,0,0,0.2'); $("."+keyword+"").css('border-radius','3px'); $("#messages-journals i:not(."+keyword+")").css('background','transparent'); $("#messagecenter-other #messages-journals li:icontains('"+keyword+"')").css('background','rgba(1,0,0,0.2'); $("#messagecenter-other #messages-journals li:not(:icontains("+keyword+"))").css('background','transparent'); } }); }); })(); |