From ddaf8f54102e3de30b952bc95f2656743b1d1256 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Sun, 24 Apr 2016 13:10:36 +0800 Subject: [PATCH] factor out canvas support check function --- app/assets/javascripts/application.js | 1 + app/assets/javascripts/src/Metamaps.js.erb | 20 +++++-------------- .../javascripts/src/check-canvas-support.js | 15 ++++++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 app/assets/javascripts/src/check-canvas-support.js diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e9ab7dbf..8dcb1df3 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -24,6 +24,7 @@ //= require ./src/views/videoView //= require ./src/views/room //= require ./src/JIT +//= require ./src/check-canvas-support //= require ./src/Metamaps //= require ./src/Metamaps.Create //= require ./src/Metamaps.TopicCard diff --git a/app/assets/javascripts/src/Metamaps.js.erb b/app/assets/javascripts/src/Metamaps.js.erb index e4b64f14..a2fd8a21 100644 --- a/app/assets/javascripts/src/Metamaps.js.erb +++ b/app/assets/javascripts/src/Metamaps.js.erb @@ -1,18 +1,8 @@ -// TODO document this user agent function -var labelType, useGradients, nativeTextSupport, animate -;(function () { - var ua = navigator.userAgent, - iStuff = ua.match(/iPhone/i) || ua.match(/iPad/i), - typeOfCanvas = typeof HTMLCanvasElement, - nativeCanvasSupport = (typeOfCanvas == 'object' || typeOfCanvas == 'function'), - textSupport = nativeCanvasSupport && (typeof document.createElement('canvas').getContext('2d').fillText == 'function') - // I'm setting this based on the fact that ExCanvas provides text support for IE - // and that as of today iPhone/iPad current text support is lame - labelType = (!nativeCanvasSupport || (textSupport && !iStuff)) ? 'Native' : 'HTML' - nativeTextSupport = labelType == 'Native' - useGradients = nativeCanvasSupport - animate = !(iStuff || !nativeCanvasSupport) -})() +/* global Metamaps */ + +/* + * Metamaps.js.erb + */ // TODO eliminate these 5 top-level variables Metamaps.panningInt = null diff --git a/app/assets/javascripts/src/check-canvas-support.js b/app/assets/javascripts/src/check-canvas-support.js new file mode 100644 index 00000000..90afdde1 --- /dev/null +++ b/app/assets/javascripts/src/check-canvas-support.js @@ -0,0 +1,15 @@ +// TODO document this user agent function +var labelType, useGradients, nativeTextSupport, animate +;(function () { + var ua = navigator.userAgent, + iStuff = ua.match(/iPhone/i) || ua.match(/iPad/i), + typeOfCanvas = typeof HTMLCanvasElement, + nativeCanvasSupport = (typeOfCanvas == 'object' || typeOfCanvas == 'function'), + textSupport = nativeCanvasSupport && (typeof document.createElement('canvas').getContext('2d').fillText == 'function') + // I'm setting this based on the fact that ExCanvas provides text support for IE + // and that as of today iPhone/iPad current text support is lame + labelType = (!nativeCanvasSupport || (textSupport && !iStuff)) ? 'Native' : 'HTML' + nativeTextSupport = labelType == 'Native' + useGradients = nativeCanvasSupport + animate = !(iStuff || !nativeCanvasSupport) +})()