From e7bf5952d0729b37e677168b6e8fbd1ce58ed1a2 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Sun, 10 Aug 2014 17:28:37 +0200 Subject: First version --- point/point.js | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 point/point.js (limited to 'point/point.js') diff --git a/point/point.js b/point/point.js new file mode 100644 index 0000000..85dbfb3 --- /dev/null +++ b/point/point.js @@ -0,0 +1,135 @@ +/* + * This file is part of "What's The Point" + * Copyright (C) 2014 Pacien TRAN-GIRARD + * + * "What's The Point" is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * "What's The Point" 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 this program. If not, see . + */ + +requirejs.config({ + baseUrl: "point", + paths: { + + /* file loaders */ + "text": "libs/text/text", + "css": "libs/require-css/css.min", + + /* parsers and compilers */ + "js-yaml": "libs/js-yaml/js-yaml.min", + + }, +}); + +var parameters = { + configFile: "../point.yml", + slides: true, +}; + +// parse url parameters +location.search.substring(1).split("&").forEach(function (kv) { + var kvp = kv.split("="); + parameters[kvp[0]] = kvp[1] === undefined ? true : kvp[1]; +}); + +// parse configuration file +require([ "js-yaml", "text!" + parameters.configFile, "view/view", "control/control" ], function (jsyaml, config, view, control) { + var settings = jsyaml.safeLoad(config); + + for (var k in view.VIEW) { + var v = view.VIEW[k]; + if (parameters[v]) { + settings.view = v; + break; + } + } + + settings.key = parameters.key; + if (settings.control == "local") { + settings.mode = control.MODE.FREE; + } else { + if (settings.key === undefined) { + settings.mode = control.MODE.SLAVE; + } else { + settings.mode = control.MODE.MASTER; + } + } + + // load theme and view + if (settings.data.type !== "pdf") { + require([ "css!theme/" + settings.theme ]); + } + require([ "css!view/" + settings.view ]); + + // apply slide dimension + var screen = document.getElementsByTagName("p-screen")[0]; + screen.style.width = settings.dimension.width + "px"; + screen.style.height = settings.dimension.height + "px"; + + require([ "data/renderSlide", "data/" + settings.data.type, "text!" + settings.data.file ], function (renderer, parser, data) { + + var exec = function (object) { + object.init(settings); + }; + + exec(parser); + exec(renderer); + + parser.parse(data, function (slidesData) { + renderer.render(slidesData, function (renderedSlides) { + + document.getElementsByTagName("p-screen")[0].appendChild(renderedSlides); + document.body.removeChild(document.getElementById("loadingclock")); + + // control + var controls = [ "slide", "fullscreen" ]; + if (settings.mode !== control.MODE.SLAVE) { + controls = controls.concat([ "layout" ]); + } + if (settings.mode === control.MODE.MASTER) { + controls = controls.concat([ "network" ]); + } + for (var i = 0; i < controls.length; i++) { + require([ "control/" + controls[i] ], exec); + } + + // binding + var bindings = []; + + if (settings.control.remote !== undefined) { + bindings = bindings.concat([ "network" ]); + } + + if (settings.mode !== control.MODE.SLAVE) { + bindings = bindings.concat(settings.binding); + } + + if (bindings !== undefined) { + for (var i = 0; i < bindings.length; i++) { + require([ "binding/" + bindings[i] ], exec); + } + } + + // load plug-ins + if (settings.plugins !== undefined) { + for (var i = 0; i < settings.plugins.length; i++) { + require([ "plugins/" + settings.plugins[i] + "/" + settings.plugins[i] ], exec); + } + } + + }); + + }); + + }); + +}); -- cgit v1.2.3