UNPKG

node-webodf

Version:

WebODF - JavaScript Document Engine http://webodf.org/

136 lines (122 loc) 5.41 kB
/** * Copyright (C) 2013 KO GmbH <copyright@kogmbh.com> * * @licstart * This file is part of WebODF. * * WebODF is free software: you can redistribute it and/or modify it * under the terms of the GNU Affero General Public License (GNU AGPL) * as published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * WebODF is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with WebODF. If not, see <http://www.gnu.org/licenses/>. * @licend * * @source: http://www.webodf.org/ * @source: https://github.com/kogmbh/WebODF/ */ /*global define, document, window, webodf*/ define([ "Benchmark", "HTMLResultsRenderer", "OpenDocument", "EnterEditMode", "MoveCursorToEndDirect", "InsertLetterA", "RemovePositions", "MoveCursorLeft", "SelectEntireDocument", "RemoveCurrentSelection", "PreloadDocument", "BoldCurrentSelection", "AlignCurrentSelectionJustified", "MoveCursorToEnd", "MoveCursorToStart", "SaveDocument" ], function (Benchmark, HTMLResultsRenderer, OpenDocument, EnterEditMode, MoveCursorToEndDirect,InsertLetterA, RemovePositions, MoveCursorLeft, SelectEntireDocument, RemoveCurrentSelection, PreloadDocument, BoldCurrentSelection, AlignCurrentSelectionJustified, MoveCursorToEnd, MoveCursorToStart, SaveDocument) { "use strict"; /** * Convert url query parameters into an Object * Source: http://stackoverflow.com/a/2880929 * @return {!Object.<!string, !string>} */ function getQueryParams() { /*jslint regexp: true*/ var match, pl = /\+/g, // Regex for replacing addition symbol with a space search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1), urlParams = {}; /*jslint regexp: false*/ match = search.exec(query); while (match) { urlParams[decode(match[1])] = decode(match[2]); match = search.exec(query); } return urlParams; } /** * Extract supported benchmark options from the url query parameters * @return {!{fileUrl: !string, includeSlow: !boolean, colour: (string|undefined)}} */ function getConfiguration() { var params = getQueryParams(); return { /** Test document to load. Relative or absolute urls are supported */ fileUrl: params.fileUrl || "100pages.odt", /** Include known slow actions in the benchmark. These can take 10 or more minutes each on large docs */ includeSlow: params.includeSlow === "false" ? false : true, /** Background colour of the benchmark results. Useful for distinguishing different benchmark versions */ colour: params.colour }; } /** * @constructor */ function HTMLBenchmark() { var loadingScreenElement = document.getElementById('loadingScreen'), canvasElement = document.getElementById("canvas"), benchmarkResultsElement = document.getElementById("benchmarkResults").getElementsByTagName("tbody")[0], versionElement = document.getElementById("version"), config = getConfiguration(), benchmark = new Benchmark(canvasElement), renderer = new HTMLResultsRenderer(benchmark, benchmarkResultsElement); versionElement.textContent = webodf.Version; renderer.setBackgroundColour(config.colour); loadingScreenElement.style.display = "none"; benchmark.actions.push(new PreloadDocument(config.fileUrl)); benchmark.actions.push(new OpenDocument(config.fileUrl)); benchmark.actions.push(new EnterEditMode()); benchmark.actions.push(new MoveCursorToEnd()); benchmark.actions.push(new MoveCursorToStart()); benchmark.actions.push(new InsertLetterA(100)); benchmark.actions.push(new RemovePositions(100, true)); benchmark.actions.push(new MoveCursorToEndDirect()); benchmark.actions.push(new InsertLetterA(1)); benchmark.actions.push(new InsertLetterA(100)); benchmark.actions.push(new RemovePositions(1, true)); benchmark.actions.push(new MoveCursorLeft(1)); benchmark.actions.push(new MoveCursorLeft(100)); benchmark.actions.push(new RemovePositions(1, false)); benchmark.actions.push(new RemovePositions(100, true)); benchmark.actions.push(new SelectEntireDocument()); benchmark.actions.push(new BoldCurrentSelection()); benchmark.actions.push(new AlignCurrentSelectionJustified()); benchmark.actions.push(new SaveDocument()); if (config.includeSlow) { benchmark.actions.push(new RemoveCurrentSelection()); } this.start = benchmark.start; } return HTMLBenchmark; });