app/helpers.js (44 lines of code) (raw):

// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // This file creates a set of helper functions that will be loaded for all html // templates. These functions should be self contained and not rely on any // external dependencies as they are loaded prior to the application. We may // want to change this later, but for now this should be thought of as a // "purely functional" helper system. import constants from "./constants"; import app from "./initialize"; import utils from "./core/utils"; import moment from "moment"; import url from "url"; import {get} from "./core/ajax"; import _ from 'lodash'; var Helpers = {}; Helpers.removeSpecialCharacters = utils.removeSpecialCharacters; Helpers.safeURL = utils.safeURLName; Helpers.imageUrl = function (path) { // TODO: add dynamic path for different deploy targets return path; }; Helpers.getDocUrl = function (key) { return (_.has(constants.DOC_URLS, key)) ? constants.DOC_URLS[key] : '#'; }; // File size pretty printing, taken from futon.format.js Helpers.formatSize = function (size, decimals = 1) { var jump = 512; if (size < jump) return size + " bytes"; var units = ["KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; var i = 0; while (size >= jump && i < units.length) { i += 1; size /= 1024; } return size.toFixed(decimals) + ' ' + units[i - 1]; }; Helpers.formatDate = function (timestamp) { return moment(timestamp, 'X').format('MMM Do, h:mm:ss a'); }; Helpers.getDateFromNow = function (timestamp) { return moment(timestamp, 'X').fromNow(); }; Helpers.escapeJQuerySelector = function (selector) { return selector && selector.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g, "\\$&"); }; Helpers.getApiUrl = endpointRoute => { if (app.host.endsWith('/') && endpointRoute.startsWith("/")) { endpointRoute = endpointRoute.substr(1); } return url.resolve(window.location.href, app.host + endpointRoute); }; Helpers.getServerUrl = endpointRoute => { if (app.host.endsWith('/') && endpointRoute.startsWith("/")) { endpointRoute = endpointRoute.substr(1); } return app.host + endpointRoute; }; Helpers.getRootUrl = ({origin, pathname} = window.location) => { return url.resolve(origin + pathname, app.host); }; Helpers.getUUID = function (count = 1) { const url = Helpers.getServerUrl(`/_uuids?count=${count}`); return get(url); }; /** * Determine if the current application is running on IE10 or IE11 * @returns {boolean} True if on IE10 or IE11. Otherwise false. */ Helpers.isIE1X = function() { return document.documentMode == 11 || document.documentMode == 10; }; export default Helpers;