From 8a809ad9d3608024feeb7eefd63c3e5e163d5cc5 Mon Sep 17 00:00:00 2001 From: Johan Gyllenspetz Date: Sat, 7 Nov 2015 16:07:11 -0800 Subject: [PATCH] Add example on how one way can be to set options to the viewer --- spec/Viewer.spec.ts | 1 - spec/viewer/OptionsParser.spec.ts | 8 ++++++++ src/Viewer.ts | 22 ++++++++++++++++++--- src/interfaces/IViewerOptions.ts | 19 ++++++++++++++++++ src/utils/Debug.ts | 33 +++++++++++++++++++++++++++++++ src/viewer/OptionsParser.ts | 16 +++++++++++++++ 6 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 spec/viewer/OptionsParser.spec.ts create mode 100644 src/interfaces/IViewerOptions.ts create mode 100644 src/utils/Debug.ts create mode 100644 src/viewer/OptionsParser.ts diff --git a/spec/Viewer.spec.ts b/spec/Viewer.spec.ts index 4f4693a0..4f06cd7b 100644 --- a/spec/Viewer.spec.ts +++ b/spec/Viewer.spec.ts @@ -20,7 +20,6 @@ describe("Viewer.moveToKey", () => { it("should move to a key", (done) => { viewer.moveToKey("h_tzkTklF6DZfU5plCA9Cw", (data: any) => { - console.log(data); done(); }); }); diff --git a/spec/viewer/OptionsParser.spec.ts b/spec/viewer/OptionsParser.spec.ts new file mode 100644 index 00000000..029cfbaa --- /dev/null +++ b/spec/viewer/OptionsParser.spec.ts @@ -0,0 +1,8 @@ +/// + +declare var Mapillary: any; + +describe("OptionsParser", () => { + it("exists", () => { + }); +}); diff --git a/src/Viewer.ts b/src/Viewer.ts index aa6526a4..3128dbf1 100644 --- a/src/Viewer.ts +++ b/src/Viewer.ts @@ -2,8 +2,10 @@ import * as when from "when"; +import Debug from "./utils/Debug"; import Graph from "./Graph"; import Prefetcher from "./viewer/Prefetcher"; +import OptionsParser from "./viewer/OptionsParser"; /* Errors */ import ParameterMapillaryError from "./errors/ParameterMapillaryError"; @@ -11,6 +13,7 @@ import ParameterMapillaryError from "./errors/ParameterMapillaryError"; /* Interfaces */ import IAPINavIm from "./interfaces/IAPINavIm"; import ILatLon from "./interfaces/ILatLon"; +import IViewerOptions from "./interfaces/IViewerOptions"; export class Viewer { /** @@ -37,16 +40,29 @@ export class Viewer { */ private prefetcher: Prefetcher; + /** + * Options to used to tweak the viewer. Optional if not + * provided Viewer will be set do default. + * @member Mapillary.Viewer#options + * @private + * @type {Prefetcher} + */ + private options: IViewerOptions; + /** * Initializes a Mapillary viewer * @class Mapillary.Viewer * @classdesc A Viewer for viewing Mapillary Street Level Imagery * @param {string} id of element to transform into viewer * @param {string} clientId for Mapillary API + * @param {IViewerOptions} Options for the viewer */ - constructor (id: string, clientId: string) { + constructor (id: string, clientId: string, options: IViewerOptions) { this.loading = false; + let optionsParser: OptionsParser = new OptionsParser(); + this.options = optionsParser.parseAndDefaultOptions(options); + this.graph = new Graph(); this.prefetcher = new Prefetcher(clientId); } @@ -66,12 +82,12 @@ export class Viewer { } if (this.graph.keyIsWorthy(key)) { - console.log("MOVE ON"); + Debug.log("MOVE ON"); } else { let response: when.Promise = this.prefetcher.loadFromKey(key); response.then((data: IAPINavIm) => { - console.log(data); if (cb != null) { + Debug.debug(data); cb(data); } }); diff --git a/src/interfaces/IViewerOptions.ts b/src/interfaces/IViewerOptions.ts new file mode 100644 index 00000000..3d971830 --- /dev/null +++ b/src/interfaces/IViewerOptions.ts @@ -0,0 +1,19 @@ +interface IViewerOptionsStepThr { + maxDistance?: number; + distancePerf?: number; + maxView?: number; + maxDrift?: number; +} + +export interface IViewerOptions { + debugLevel?: string; + + stepThr?: IViewerOptionsStepThr; + + enablePanoNavigation?: boolean; + enablePanoPlaying?: boolean; + enablePanoArrowAlignment?: boolean; + gamingNavigation?: boolean; +} + +export default IViewerOptions; diff --git a/src/utils/Debug.ts b/src/utils/Debug.ts new file mode 100644 index 00000000..53d10eb5 --- /dev/null +++ b/src/utils/Debug.ts @@ -0,0 +1,33 @@ +// fixme add more sophistication, this might be a module + +enum LogLevel {debug, log, warning, error, off}; + +export class Debug { + public static logLevel: LogLevel = LogLevel.off; + + public static debug(message: any): void { + if (this.logLevel <= LogLevel.debug) { + console.log(message); + } + } + + public static log(message: any): void { + if (this.logLevel <= LogLevel.log) { + console.log(message); + } + } + + public static warning(message: any): void { + if (this.logLevel <= LogLevel.warning) { + console.log(message); + } + } + + public static error(message: any): void { + if (this.logLevel <= LogLevel.error) { + console.log(message); + } + } +} + +export default Debug diff --git a/src/viewer/OptionsParser.ts b/src/viewer/OptionsParser.ts new file mode 100644 index 00000000..02fc19cd --- /dev/null +++ b/src/viewer/OptionsParser.ts @@ -0,0 +1,16 @@ +/* Errors */ +import ParameterMapillaryError from "../errors/ParameterMapillaryError"; + +/* Interfaces */ +import IViewerOptions from "../interfaces/IViewerOptions"; + +export class OptionsParser { + public parseAndDefaultOptions(options: IViewerOptions): IViewerOptions { + if (false) { + throw new ParameterMapillaryError(); + } + return options; + } +} + +export default OptionsParser