diff --git a/lib/assets/javascripts/application.js b/lib/assets/javascripts/application.js index e1f41ec..17f32e2 100644 --- a/lib/assets/javascripts/application.js +++ b/lib/assets/javascripts/application.js @@ -1,4 +1,5 @@ // Generic JS that is applicable across multiple pages +import './utils/array'; import './utils/paginable'; import './utils/panelHeading'; import './utils/links'; diff --git a/lib/assets/javascripts/utils/array.js b/lib/assets/javascripts/utils/array.js new file mode 100644 index 0000000..b8b3f77 --- /dev/null +++ b/lib/assets/javascripts/utils/array.js @@ -0,0 +1,20 @@ +import { isFunction } from './isType'; + +if (!Array.prototype.find) { + Array.prototype.find = function (predicate) { // eslint-disable-line no-extend-native, func-names + if (!isFunction(predicate)) { + throw new TypeError('predicate must be a function'); + } + const array = Object(this); + const length = array.length; + let i = 0; + while (i < length) { + if (predicate.call(this, array[i], i, array)) { + return array[i]; + } + i += 1; + } + return undefined; + }; +} + diff --git a/lib/assets/javascripts/utils/tinymce.js b/lib/assets/javascripts/utils/tinymce.js index dc11ac4..ff285b2 100644 --- a/lib/assets/javascripts/utils/tinymce.js +++ b/lib/assets/javascripts/utils/tinymce.js @@ -14,7 +14,7 @@ // Configuration extracted from https://www.tinymce.com/docs/advanced/usage-with-module-loaders/ require.context( - 'file-loader?name=[path][name].[ext]&context=node_modules/tinymce!tinymce/skins', + 'file-loader?name=./stylesheets/[path][name].[ext]&context=node_modules/tinymce!tinymce/skins', true, /.*/, ); @@ -42,7 +42,7 @@ table_default_attributes: { border: 1, }, - skin_url: '/javascripts/skins/lightgray', // editorManager.baseURL is not resolved properly for IE since document.currentScript is not supported, see issue https://github.com/tinymce/tinymce/issues/3584 + skin_url: '/stylesheets/skins/lightgray', // editorManager.baseURL is not resolved properly for IE since document.currentScript is not supported, see issue https://github.com/tinymce/tinymce/issues/3584 }; /* This function is invoked anytime a new editor is initialised (e.g. Tinymce.init()) diff --git a/lib/assets/javascripts/views/answers/rda_metadata.js b/lib/assets/javascripts/views/answers/rda_metadata.js index f0f6a71..04c8cfc 100644 --- a/lib/assets/javascripts/views/answers/rda_metadata.js +++ b/lib/assets/javascripts/views/answers/rda_metadata.js @@ -121,7 +121,7 @@ function initStandards() { // for each metadata question, init selected standards according to html - $('.rda_metadata').each(function () { + $('.rda_metadata').each(function () { // eslint-disable-line func-names // list of selected standards const selectedStandards = $(this).find('.selected_standards .list'); // form listing of standards diff --git a/lib/assets/javascripts/views/usage/index.js b/lib/assets/javascripts/views/usage/index.js index f60eb70..c9938d6 100644 --- a/lib/assets/javascripts/views/usage/index.js +++ b/lib/assets/javascripts/views/usage/index.js @@ -10,10 +10,10 @@ const topic = $(el); return { [topic.val()]: topic.attr('data-url') }; }).get() // An array of objects { topic: URL } - .reduce((acc, value) => Object.assign(acc, value), {}); // Flatten to a single object + .reduce((acc, value) => $.extend(acc, value), {}); const rangeDatesUpToLastYearFromNow = () => { const getLastMonth = () => moment().subtract(1, 'month').clone(); - const rangeDates = new Array(12).fill(1).reduce((acc, v, i) => { + const rangeDates = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].reduce((acc, v, i) => { const id = getLastMonth().subtract(i, 'month').format('MMM-YY'); acc[id] = { start_date: getLastMonth().startOf('month').subtract(i, 'month').format('YYYY-MM-DD'), @@ -116,7 +116,7 @@ }); const yearlySuccesHandler = ({ data, selector } = {}) => { const keys = Object.keys(data); // Keys are Month-Year strings and values might be [0...N] - if (keys.findIndex(k => data[k] > 0) > -1) { + if (keys.find(k => data[k] > 0)) { createChart({ selector, data }); } else { $(selector).prev().show();