Difference between revisions of "MediaWiki:Common.js"
From EPRI GO&P Resource Center
EPRI ADMIN (talk | contribs) |
EPRI ADMIN (talk | contribs) |
||
Line 299: | Line 299: | ||
} | } | ||
}); | }); | ||
+ | }); | ||
+ | |||
+ | $(document).ready(function(){ | ||
+ | var pageBase = document.getElementById('content'); | ||
+ | pageBase.innerHTML = pageBase.innerHTML + "\n" + "<!-- Google tag (gtag.js) --> <script async src=\"https://www.googletagmanager.com/gtag/js?id=G-5V1LKDM2DY\"></script> <script> window.dataLayer = window.dataLayer || []; | ||
+ | function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-5V1LKDM2DY'); </script>"; | ||
}); | }); |
Revision as of 07:44, 3 July 2023
/* Any JavaScript here will be loaded for all users on every page load. */ /*! Name: Reading Time Dependencies: jQuery Author: Michael Lynch Author URL: http://michaelynch.com Date Created: August 14, 2013 Date Updated: April 30, 2018 Licensed under the MIT license */ $(function($) { $.fn.readingTime = function(options) { // define default parameters const defaults = { readingTimeTarget: '.eta', readingTimeAsNumber: false, wordCountTarget: null, wordsPerMinute: 270, round: true, lang: 'en', lessThanAMinuteString: '', prependTimeString: '', prependWordString: '', remotePath: null, remoteTarget: null, success: function() {}, error: function() {} }; const plugin = this; const el = $(this); let wordsPerSecond; let lessThanAMinute; let minShortForm; let totalWords; let totalReadingTimeSeconds; let readingTimeMinutes; let readingTimeSeconds; let readingTime; let readingTimeObj; // merge defaults and options plugin.settings = $.extend({}, defaults, options); // define vars const s = plugin.settings; const setTime = function(o) { if(o.text !== '') { if (s.lang == "zh") { let text = o.text.trim(); // step 1: count the number of Chinese characters const charArray = text.match(/[\u4e00-\u9fa5]/g); let charCount = 0; if (charArray != null) { charCount = charArray.length; } // step 2: replace all the Chinese characters with blank text = text.replace(/[\u4e00-\u9fa5]/g, " "); // step 3:replace newlines with blank text = text.replace(/[\r\n]/g, " "); // step 4:replace special characters with blank text = text.replace(/\W+/g, " "); // step 5: count the number of total English words const totalEnWords = text.trim().split(/\s+/g).length; totalWords = totalEnWords + charCount; } else { //split text by spaces to define total words totalWords = o.text.trim().split(/\s+/g).length; } //define words per second based on words per minute (s.wordsPerMinute) wordsPerSecond = s.wordsPerMinute / 60; //define total reading time in seconds totalReadingTimeSeconds = totalWords / wordsPerSecond; // define reading time readingTimeMinutes = Math.floor(totalReadingTimeSeconds / 60); // define remaining reading time seconds readingTimeSeconds = Math.round(totalReadingTimeSeconds - (readingTimeMinutes * 60)); // format reading time readingTime = `${readingTimeMinutes}:${readingTimeSeconds}`; // if s.round if(s.round) { // if minutes are greater than 0 if(readingTimeMinutes > 0) { // set reading time by the minute $(s.readingTimeTarget).text(s.prependTimeString + readingTimeMinutes + ((!s.readingTimeAsNumber) ? ' ' + minShortForm : '')); } else { // set reading time as less than a minute $(s.readingTimeTarget).text((!s.readingTimeAsNumber) ? s.prependTimeString + lessThanAMinute : readingTimeMinutes); } } else { // set reading time in minutes and seconds $(s.readingTimeTarget).text(s.prependTimeString + readingTime); } // if word count container isn't blank or undefined if(s.wordCountTarget !== '' && s.wordCountTarget !== undefined) { // set word count $(s.wordCountTarget).text(s.prependWordString + totalWords); } readingTimeObj = { wpm: s.wordsPerMinute, words: totalWords, eta: { time: readingTime, minutes: readingTimeMinutes, seconds: totalReadingTimeSeconds } }; // run success callback s.success.call(this, readingTimeObj); } else { // run error callback s.error.call(this, { error: 'The element does not contain any text' }); } }; // if no element was bound if(!this.length) { // run error callback s.error.call(this, { error: 'The element could not be found' }); // return so chained events can continue return this; } // Use switch instead of ifs switch (s.lang) { // if s.lang is Arabic case 'ar': lessThanAMinute = s.lessThanAMinuteString || "أقل من دقيقة"; minShortForm = 'دقيقة'; break; // if s.lang is Czech case 'cz': lessThanAMinute = s.lessThanAMinuteString || "Méně než minutu"; minShortForm = 'min'; break; // if s.lang is Danish case 'da': lessThanAMinute = s.lessThanAMinuteString || "Mindre end et minut"; minShortForm = 'min'; break; // if s.lang is German case 'de': lessThanAMinute = s.lessThanAMinuteString || "Weniger als eine Minute"; minShortForm = 'min'; break; // if s.lang is Spanish case 'es': lessThanAMinute = s.lessThanAMinuteString || "Menos de un minuto"; minShortForm = 'min'; break; // if s.lang is French case 'fr': lessThanAMinute = s.lessThanAMinuteString || "Moins d'une minute"; minShortForm = 'min'; break; // if s.lang is Hungarian case 'hu': lessThanAMinute = s.lessThanAMinuteString || "Kevesebb mint egy perc"; minShortForm = 'perc'; break; // if s.lang is Icelandic case 'is': lessThanAMinute = s.lessThanAMinuteString || "Minna en eina mínútu"; minShortForm = 'min'; break; // if s.lang is Italian case 'it': lessThanAMinute = s.lessThanAMinuteString || "Meno di un minuto"; minShortForm = 'min'; break; // if s.lang is Dutch case 'nl': lessThanAMinute = s.lessThanAMinuteString || "Minder dan een minuut"; minShortForm = 'min'; break; // if s.lang is Norwegian case 'no': lessThanAMinute = s.lessThanAMinuteString || "Mindre enn ett minutt"; minShortForm = 'min'; break; // if s.lang is Polish case 'pl': lessThanAMinute = s.lessThanAMinuteString || "Mniej niż minutę"; minShortForm = 'min'; break; // if s.lang is Russian case 'ru': lessThanAMinute = s.lessThanAMinuteString || "Меньше минуты"; minShortForm = 'мин'; break; // if s.lang is Slovak case 'sk': lessThanAMinute = s.lessThanAMinuteString || "Menej než minútu"; minShortForm = 'min'; break; // if s.lang is Swedish case 'sv': lessThanAMinute = s.lessThanAMinuteString || "Mindre än en minut"; minShortForm = 'min'; break; // if s.lang is Turkish case 'tr': lessThanAMinute = s.lessThanAMinuteString || "Bir dakikadan az"; minShortForm = 'dk'; break; // if s.lang is Ukrainian case 'uk': lessThanAMinute = s.lessThanAMinuteString || "Менше хвилини"; minShortForm = 'хв'; break; // if s.lang is Greek case 'el': lessThanAMinute = s.lessThanAMinuteString || 'Λιγότερο από λεπτό'; minShortForm = 'λεπτά'; break; // default s.lang in english default: lessThanAMinute = s.lessThanAMinuteString || 'Less than a minute'; minShortForm = 'min'; } // for each element el.each(function(index) { // if s.remotePath and s.remoteTarget aren't null if(s.remotePath != null && s.remoteTarget != null) { // get contents of remote file $.get(s.remotePath, function(data) { let wrapper = document.createElement('div'); wrapper.innerHTML = data; // set time using the remote target found in the remote file setTime({ text: $(wrapper).find(s.remoteTarget).text() }); }); } else { // set time using the targeted element setTime({ text: el.text() }); } }); return true; } })(jQuery); $(function() { $('body').readingTime({ readingTimeAsNumber: true, readingTimeTarget: $('.reading-time'), wordsPerMinute: 285, round: false, lang: 'en', success: function(data) { console.log(data); }, error: function(data) { console.log(data.error); $('.reading-time').remove(); } }); }); $(document).ready(function(){ var pageBase = document.getElementById('content'); pageBase.innerHTML = pageBase.innerHTML + "\n" + "<!-- Google tag (gtag.js) --> <script async src=\"https://www.googletagmanager.com/gtag/js?id=G-5V1LKDM2DY\"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-5V1LKDM2DY'); </script>"; });