From cac981112c4df7853e794bdadd77ba10723a588c Mon Sep 17 00:00:00 2001 From: Mikel Corcuera Date: Wed, 27 Jan 2016 11:43:00 +0000 Subject: [PATCH 01/11] First commit of the sv-wizard from copied from orignal repo Original repo: https://github.com/mcorcuera/sv-wizard --- tools/Streetview/sv-wizard/.bowerrc | 3 + tools/Streetview/sv-wizard/.gitignore | 4 + tools/Streetview/sv-wizard/.yo-rc.json | 3 + tools/Streetview/sv-wizard/Gruntfile.js | 445 +++++++++++++++++++ tools/Streetview/sv-wizard/test/index.html | 29 ++ tools/Streetview/sv-wizard/test/spec/test.js | 11 + 6 files changed, 495 insertions(+) create mode 100644 tools/Streetview/sv-wizard/.bowerrc create mode 100644 tools/Streetview/sv-wizard/.gitignore create mode 100644 tools/Streetview/sv-wizard/.yo-rc.json create mode 100644 tools/Streetview/sv-wizard/Gruntfile.js create mode 100644 tools/Streetview/sv-wizard/test/index.html create mode 100644 tools/Streetview/sv-wizard/test/spec/test.js diff --git a/tools/Streetview/sv-wizard/.bowerrc b/tools/Streetview/sv-wizard/.bowerrc new file mode 100644 index 0000000..69fad35 --- /dev/null +++ b/tools/Streetview/sv-wizard/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "bower_components" +} diff --git a/tools/Streetview/sv-wizard/.gitignore b/tools/Streetview/sv-wizard/.gitignore new file mode 100644 index 0000000..4509cc4 --- /dev/null +++ b/tools/Streetview/sv-wizard/.gitignore @@ -0,0 +1,4 @@ +node_modules +dist +.tmp +bower_components diff --git a/tools/Streetview/sv-wizard/.yo-rc.json b/tools/Streetview/sv-wizard/.yo-rc.json new file mode 100644 index 0000000..7a21352 --- /dev/null +++ b/tools/Streetview/sv-wizard/.yo-rc.json @@ -0,0 +1,3 @@ +{ + "generator-mocha": {} +} \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/Gruntfile.js b/tools/Streetview/sv-wizard/Gruntfile.js new file mode 100644 index 0000000..1c6b6ba --- /dev/null +++ b/tools/Streetview/sv-wizard/Gruntfile.js @@ -0,0 +1,445 @@ +// Generated on 2015-12-06 using +// generator-webapp 1.1.0 +'use strict'; + +// # Globbing +// for performance reasons we're only matching one level down: +// 'test/spec/{,*/}*.js' +// If you want to recursively match all subfolders, use: +// 'test/spec/**/*.js' + +module.exports = function (grunt) { + + // Time how long tasks take. Can help when optimizing build times + require('time-grunt')(grunt); + + // Automatically load required grunt tasks + require('jit-grunt')(grunt, { + useminPrepare: 'grunt-usemin' + }); + + // Configurable paths + var config = { + app: 'app', + dist: 'dist' + }; + + // Define the configuration for all the tasks + grunt.initConfig({ + + // Project settings + config: config, + + // Watches files for changes and runs tasks based on the changed files + watch: { + bower: { + files: ['bower.json'], + tasks: ['wiredep'] + }, + babel: { + files: ['<%= config.app %>/scripts/{,*/}*.js'], + tasks: ['babel:dist'] + }, + babelTest: { + files: ['test/spec/{,*/}*.js'], + tasks: ['babel:test', 'test:watch'] + }, + gruntfile: { + files: ['Gruntfile.js'] + }, + sass: { + files: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'], + tasks: ['sass', 'postcss'] + }, + styles: { + files: ['<%= config.app %>/styles/{,*/}*.css'], + tasks: ['newer:copy:styles', 'postcss'] + } + }, + + browserSync: { + options: { + notify: false, + background: true, + watchOptions: { + ignored: '' + } + }, + livereload: { + options: { + files: [ + '<%= config.app %>/{,*/}*.html', + '.tmp/styles/{,*/}*.css', + '<%= config.app %>/images/{,*/}*', + '.tmp/scripts/{,*/}*.js' + ], + port: 8080, + server: { + baseDir: ['.tmp', config.app], + routes: { + '/bower_components': './bower_components' + } + } + } + }, + test: { + options: { + port: 9001, + open: false, + logLevel: 'silent', + host: 'localhost', + server: { + baseDir: ['.tmp', './test', config.app], + routes: { + '/bower_components': './bower_components' + } + } + } + }, + dist: { + options: { + background: false, + server: '<%= config.dist %>' + } + } + }, + + // Empties folders to start fresh + clean: { + dist: { + files: [{ + dot: true, + src: [ + '.tmp', + '<%= config.dist %>/*', + '!<%= config.dist %>/.git*' + ] + }] + }, + server: '.tmp' + }, + + // Make sure code styles are up to par and there are no obvious mistakes + eslint: { + target: [ + 'Gruntfile.js', + '<%= config.app %>/scripts/{,*/}*.js', + '!<%= config.app %>/scripts/vendor/*', + 'test/spec/{,*/}*.js' + ] + }, + + // Mocha testing framework configuration options + mocha: { + all: { + options: { + run: true, + urls: ['http://<%= browserSync.test.options.host %>:<%= browserSync.test.options.port %>/index.html'] + } + } + }, + + // Compiles ES6 with Babel + babel: { + options: { + sourceMap: true + }, + dist: { + files: [{ + expand: true, + cwd: '<%= config.app %>/scripts', + src: '{,*/}*.js', + dest: '.tmp/scripts', + ext: '.js' + }] + }, + test: { + files: [{ + expand: true, + cwd: 'test/spec', + src: '{,*/}*.js', + dest: '.tmp/spec', + ext: '.js' + }] + } + }, + + // Compiles Sass to CSS and generates necessary files if requested + sass: { + options: { + sourceMap: true, + sourceMapEmbed: true, + sourceMapContents: true, + includePaths: ['.'] + }, + dist: { + files: [{ + expand: true, + cwd: '<%= config.app %>/styles', + src: ['*.{scss,sass}'], + dest: '.tmp/styles', + ext: '.css' + }] + } + }, + + postcss: { + options: { + map: true, + processors: [ + // Add vendor prefixed styles + require('autoprefixer')({ + browsers: ['> 1%', 'last 2 versions', 'Firefox ESR'] + }) + ] + }, + dist: { + files: [{ + expand: true, + cwd: '.tmp/styles/', + src: '{,*/}*.css', + dest: '.tmp/styles/' + }] + } + }, + + // Automatically inject Bower components into the HTML file + wiredep: { + app: { + src: ['<%= config.app %>/index.html'], + ignorePath: /^(\.\.\/)*\.\./ + }, + sass: { + src: ['<%= config.app %>/styles/{,*/}*.{scss,sass}'], + ignorePath: /^(\.\.\/)+/ + } + }, + + // Renames files for browser caching purposes + filerev: { + dist: { + src: [ + '<%= config.dist %>/scripts/{,*/}*.js', + '<%= config.dist %>/styles/{,*/}*.css', + '<%= config.dist %>/images/{,*/}*.*', + '<%= config.dist %>/styles/fonts/{,*/}*.*', + '<%= config.dist %>/*.{ico,png}' + ] + } + }, + + // Reads HTML for usemin blocks to enable smart builds that automatically + // concat, minify and revision files. Creates configurations in memory so + // additional tasks can operate on them + useminPrepare: { + options: { + dest: '<%= config.dist %>' + }, + html: '<%= config.app %>/index.html' + }, + + // Performs rewrites based on rev and the useminPrepare configuration + usemin: { + options: { + assetsDirs: [ + '<%= config.dist %>', + '<%= config.dist %>/images', + '<%= config.dist %>/styles' + ] + }, + html: ['<%= config.dist %>/{,*/}*.html'], + css: ['<%= config.dist %>/styles/{,*/}*.css'] + }, + + // The following *-min tasks produce minified files in the dist folder + imagemin: { + dist: { + files: [{ + expand: true, + cwd: '<%= config.app %>/images', + src: '{,*/}*.{gif,jpeg,jpg,png}', + dest: '<%= config.dist %>/images' + }] + } + }, + + svgmin: { + dist: { + files: [{ + expand: true, + cwd: '<%= config.app %>/images', + src: '{,*/}*.svg', + dest: '<%= config.dist %>/images' + }] + } + }, + + htmlmin: { + dist: { + options: { + collapseBooleanAttributes: true, + collapseWhitespace: true, + conservativeCollapse: true, + removeAttributeQuotes: true, + removeCommentsFromCDATA: true, + removeEmptyAttributes: true, + removeOptionalTags: true, + // true would impact styles with attribute selectors + removeRedundantAttributes: false, + useShortDoctype: true + }, + files: [{ + expand: true, + cwd: '<%= config.dist %>', + src: '{,*/}*.html', + dest: '<%= config.dist %>' + }] + } + }, + + // By default, your `index.html`'s will take care + // of minification. These next options are pre-configured if you do not + // wish to use the Usemin blocks. + // cssmin: { + // dist: { + // files: { + // '<%= config.dist %>/styles/main.css': [ + // '.tmp/styles/{,*/}*.css', + // '<%= config.app %>/styles/{,*/}*.css' + // ] + // } + // } + // }, + // uglify: { + // dist: { + // files: { + // '<%= config.dist %>/scripts/scripts.js': [ + // '<%= config.dist %>/scripts/scripts.js' + // ] + // } + // } + // }, + // concat: { + // dist: {} + // }, + + // Copies remaining files to places other tasks can use + copy: { + dist: { + files: [{ + expand: true, + dot: true, + cwd: '<%= config.app %>', + dest: '<%= config.dist %>', + src: [ + '*.{ico,png,txt}', + 'images/{,*/}*.webp', + '{,*/}*.html', + 'styles/fonts/{,*/}*.*' + ] + }, { + expand: true, + dot: true, + dest: '<%= config.dist %>', + src: [ + // Copy bower components to fix polymer dependencies + 'bower_components/**/*.*' + ] + }] + } + }, + + // Generates a custom Modernizr build that includes only the tests you + // reference in your app + modernizr: { + dist: { + devFile: 'bower_components/modernizr/modernizr.js', + outputFile: '<%= config.dist %>/scripts/vendor/modernizr.js', + files: { + src: [ + '<%= config.dist %>/scripts/{,*/}*.js', + '<%= config.dist %>/styles/{,*/}*.css', + '!<%= config.dist %>/scripts/vendor/*' + ] + }, + uglify: true + } + }, + + // Run some tasks in parallel to speed up build process + concurrent: { + server: [ + 'babel:dist', + 'sass' + ], + test: [ + 'babel' + ], + dist: [ + 'babel', + 'sass', + 'imagemin', + 'svgmin' + ] + } + }); + + + grunt.registerTask('serve', 'start the server and preview your app', function (target) { + + if (target === 'dist') { + return grunt.task.run(['build', 'browserSync:dist']); + } + + grunt.task.run([ + 'clean:server', + 'wiredep', + 'concurrent:server', + 'postcss', + 'browserSync:livereload', + 'watch' + ]); + }); + + grunt.registerTask('server', function (target) { + grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); + grunt.task.run([target ? ('serve:' + target) : 'serve']); + }); + + grunt.registerTask('test', function (target) { + if (target !== 'watch') { + grunt.task.run([ + 'clean:server', + 'concurrent:test', + 'postcss' + ]); + } + + grunt.task.run([ + 'browserSync:test', + 'mocha' + ]); + }); + + grunt.registerTask('build', [ + 'clean:dist', + 'wiredep', + 'useminPrepare', + 'concurrent:dist', + 'postcss', + 'concat', + 'cssmin', + 'uglify', + 'copy:dist', + 'modernizr', + 'filerev', + 'usemin', + 'htmlmin' + ]); + + grunt.registerTask('default', [ + 'newer:eslint', + 'test', + 'build' + ]); +}; diff --git a/tools/Streetview/sv-wizard/test/index.html b/tools/Streetview/sv-wizard/test/index.html new file mode 100644 index 0000000..6498d5f --- /dev/null +++ b/tools/Streetview/sv-wizard/test/index.html @@ -0,0 +1,29 @@ + + + + + Mocha Spec Runner + + + +
+ + + + + + + + + + + + diff --git a/tools/Streetview/sv-wizard/test/spec/test.js b/tools/Streetview/sv-wizard/test/spec/test.js new file mode 100644 index 0000000..0fca0fb --- /dev/null +++ b/tools/Streetview/sv-wizard/test/spec/test.js @@ -0,0 +1,11 @@ +(function () { + 'use strict'; + + describe('Give it some context', function () { + describe('maybe a bit more context here', function () { + it('should run here few assertions', function () { + + }); + }); + }); +})(); From b91e4b37285802fa9726b09d4b052f143aa6c03f Mon Sep 17 00:00:00 2001 From: Mikel Corcuera Date: Wed, 27 Jan 2016 11:43:49 +0000 Subject: [PATCH 02/11] Sync all missing files due to changes on gitignore --- tools/Streetview/sv-wizard/.editorconfig | 21 ++ tools/Streetview/sv-wizard/.gitattributes | 1 + tools/Streetview/sv-wizard/README.md | 2 + .../sv-wizard/app/apple-touch-icon.png | Bin 0 -> 6702 bytes tools/Streetview/sv-wizard/app/favicon.ico | Bin 0 -> 2238 bytes tools/Streetview/sv-wizard/app/index.html | 181 ++++++++++++++ tools/Streetview/sv-wizard/app/robots.txt | 4 + .../controllers/generatedDialogCtrl.js | 15 ++ .../app/scripts/controllers/menuCtrl.js | 34 +++ .../controllers/streetViewRequestCtrl.js | 84 +++++++ .../app/scripts/directives/autocomplete.js | 22 ++ .../app/scripts/directives/mapPreview.js | 35 +++ .../app/scripts/directives/svPreview.js | 132 ++++++++++ .../sv-wizard/app/scripts/generator.js | 46 ++++ .../Streetview/sv-wizard/app/scripts/main.js | 19 ++ .../app/scripts/models/authenticationMode.js | 7 + .../app/scripts/services/generator.js | 7 + .../sv-wizard/app/scripts/services/models.js | 10 + .../app/scripts/services/requestProvider.js | 94 +++++++ .../app/scripts/services/settings.js | 59 +++++ .../sv-wizard/app/scripts/services/utils.js | 7 + .../Streetview/sv-wizard/app/scripts/utils.js | 77 ++++++ .../sv-wizard/app/styles/custom-style.html | 43 ++++ .../Streetview/sv-wizard/app/styles/main.scss | 110 ++++++++ .../sv-wizard/app/styles/mapPreview.scss | 47 ++++ .../app/styles/ngDialog-theme-flat.css | 235 ++++++++++++++++++ .../sv-wizard/app/styles/svPreview.scss | 9 + .../sv-wizard/app/templates/generated.html | 9 + .../sv-wizard/app/templates/main.html | 97 ++++++++ .../sv-wizard/app/templates/menu.html | 44 ++++ tools/Streetview/sv-wizard/bower.json | 31 +++ tools/Streetview/sv-wizard/package.json | 59 +++++ 32 files changed, 1541 insertions(+) create mode 100644 tools/Streetview/sv-wizard/.editorconfig create mode 100644 tools/Streetview/sv-wizard/.gitattributes create mode 100644 tools/Streetview/sv-wizard/README.md create mode 100644 tools/Streetview/sv-wizard/app/apple-touch-icon.png create mode 100644 tools/Streetview/sv-wizard/app/favicon.ico create mode 100644 tools/Streetview/sv-wizard/app/index.html create mode 100644 tools/Streetview/sv-wizard/app/robots.txt create mode 100644 tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/directives/svPreview.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/generator.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/main.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/models/authenticationMode.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/services/generator.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/services/models.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/services/settings.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/services/utils.js create mode 100644 tools/Streetview/sv-wizard/app/scripts/utils.js create mode 100644 tools/Streetview/sv-wizard/app/styles/custom-style.html create mode 100644 tools/Streetview/sv-wizard/app/styles/main.scss create mode 100644 tools/Streetview/sv-wizard/app/styles/mapPreview.scss create mode 100644 tools/Streetview/sv-wizard/app/styles/ngDialog-theme-flat.css create mode 100644 tools/Streetview/sv-wizard/app/styles/svPreview.scss create mode 100644 tools/Streetview/sv-wizard/app/templates/generated.html create mode 100644 tools/Streetview/sv-wizard/app/templates/main.html create mode 100644 tools/Streetview/sv-wizard/app/templates/menu.html create mode 100644 tools/Streetview/sv-wizard/bower.json create mode 100644 tools/Streetview/sv-wizard/package.json diff --git a/tools/Streetview/sv-wizard/.editorconfig b/tools/Streetview/sv-wizard/.editorconfig new file mode 100644 index 0000000..c2cdfb8 --- /dev/null +++ b/tools/Streetview/sv-wizard/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/tools/Streetview/sv-wizard/.gitattributes b/tools/Streetview/sv-wizard/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/tools/Streetview/sv-wizard/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/README.md b/tools/Streetview/sv-wizard/README.md new file mode 100644 index 0000000..0621d4a --- /dev/null +++ b/tools/Streetview/sv-wizard/README.md @@ -0,0 +1,2 @@ +# sv-wizard +Google Maps Street View interactive code generator diff --git a/tools/Streetview/sv-wizard/app/apple-touch-icon.png b/tools/Streetview/sv-wizard/app/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..52a7e25475a1b410c9609ae7a1baa7cf7bd2da77 GIT binary patch literal 6702 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 Ef;y2sm;e9( literal 0 HcmV?d00001 diff --git a/tools/Streetview/sv-wizard/app/favicon.ico b/tools/Streetview/sv-wizard/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..49e316a93d5ac13e9f25522d6f8d662b357d8de3 GIT binary patch literal 2238 zcmdtiKWGzS7{~En!9nt`iHeX;MM!Z?_Eg6-I256!I!T6r1nQ8|njn~|I3*Ayv`bS^ zL=p$Hgv2RyNKitj!=a=_66l~9Lsy5_@1^RLi-L>#zJ2a4?|tsc`#$%k(hPlmo&)XW zMd>Q%>%=^9lb8{McDrzX8Xs*venQIG0~~VSFLK{Mv|25-dM&+pH`3N_SJzf{rQuMj z80pEe0$azNhYGB4t}wpKb&~7IvaEqotz(q08l?(G@eI%0C)RLFJt^9h!X+t`mV$T- zU&H6|DWg~nE38h4E>S0Th%B+D0ltH;;tTkPaidKcJ>Z#pdatOO3ag}$(h6!>BYYok z;oJBI`CsA7_@a7bZ7P9}<0E*3H+X|Lc!M9(Pv~8GoxVfQ(3j}O8sYnR3*W{!$X?-z zGTDn{&yqbs_Bh!i_yN9yui^{%G(L&HgI~f&@nL)jAHSAj7;U&BAc7x9$6l)%UF z5xl_zjKLeciH*0$2@~q_y6U{H9bVVQhIp6K2;awB_%^)^|$ME9>gTO^z>9mM@Kq5Jk-I# z0X3|vQmJTfZ%@TyQQO;OQd>v_j z|2e z;a_oocKZDM0spl5UkU^Qm#3_6mit$Hp2=_6Wp54|XNMi&a{K*$$GZ~s_j>)4v)d{E s^uEjO@pz_uzw8A#P2OQmzZ~X&z~uJfhA~c&n>FTlV^WUM + + + + SV Wizard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/tools/Streetview/sv-wizard/app/robots.txt b/tools/Streetview/sv-wizard/app/robots.txt new file mode 100644 index 0000000..b556648 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/robots.txt @@ -0,0 +1,4 @@ +# robotstxt.org/ + +User-agent: * +Disallow: diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js new file mode 100644 index 0000000..1a56a69 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js @@ -0,0 +1,15 @@ +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.controller( 'GeneratedDialogCtrl', + ['$scope', '$window', function($scope, $window) { + + $scope.url = $scope.ngDialogData.url; + + $scope.copy = function() { + + }; + + $scope.open = function() { + $window.open($scope.url); + }; +}]); diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js new file mode 100644 index 0000000..e033ba7 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js @@ -0,0 +1,34 @@ +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.controller( 'MenuCtrl', ['$scope', '$rootScope', 'Settings', + 'RequestProvider', function($scope, $rootScope, Settings, RequestProvider) { + + $scope.auth = Settings.getSettings(); + console.log($scope.auth); + $scope.requests = RequestProvider.getRequests(); + + $scope.$watch( function() { + return RequestProvider.getRequests() + }, function() { + $scope.requests = RequestProvider.getRequests(); + }) + + $scope.$watch('auth.apiKey', function() { + Settings.setApiKey($scope.auth.apiKey); + }); + + $scope.$watch('auth.clientId', function() { + Settings.setClientId($scope.auth.clientId); + }); + + $scope.$watch('auth.cryptoKey', function() { + Settings.setCryptoKey($scope.auth.cryptoKey); + }); + + $scope.openRequest = function(request) { + console.log('Opening'); + $rootScope.$emit('openrequest', request); + $rootScope.$emit('closemenu'); + } + +}]); diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js new file mode 100644 index 0000000..2b705ef --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js @@ -0,0 +1,84 @@ +var svWizardApp = angular.module('svWizardApp'); + + +svWizardApp.controller( 'StreetViewRequestCtrl', ['$scope', '$rootScope', + 'ngDialog', 'M','Generator', 'Settings', 'RequestProvider', + function($scope, $rootScope, ngDialog, M, Generator, Settings, + RequestProvider) { + + var defaultRequest = { + timestamp: null, + name: 'La Giralda - Sevilla', + location: {lat: 37.3863, lng: -5.99205}, + size: { + width: 640, + height: 640 + }, + heading: 254.5, + fov: 71.6, + pitch: 30.8, + authenticationMode: M.AuthenticationMode.NONE + }; + var currentRequest = RequestProvider.getCurrentRequest(); + + $scope.$watch( 'request', function() { + RequestProvider.updateCurrentRequest($scope.request); + }, true); + + $scope.addressSelected = function(address){ + console.log(address); + if( address !== undefined && address !== null) { + console.log('Halloo'); + var location = address.geometry.location; + $scope.request.location.lat = location.lat(); + $scope.request.location.lng = location.lng(); + + } + + } + $rootScope.$on('openrequest', function(event, request) { + $scope.request = request; + }); + + $scope.getRatio = function() { + var width = $scope.request.size.width; + var height = $scope.request.size.height; + + if( width == 0 || height == 0) { + return 1; + }else{ + return width/height; + } + }; + + $scope.save = function() { + console.log('Prepare to save'); + $scope.request = RequestProvider.saveRequest($scope.request); + } + + $scope.generate = function() { + var url = Generator.generate($scope.request, Settings.getSettings()); + ngDialog.open({ + template: 'templates/generated.html', + className: 'ngdialog-theme-default ngdialog-theme-custom', + controller: 'GeneratedDialogCtrl', + data: { + url: url + } + }); + } + + $scope.openMenu = function() { + $rootScope.$emit('openmenu'); + console.log('Hallo'); + } + + $scope.new = function() { + $scope.request = angular.copy($scope.request); + $scope.request.timestamp = null; + $scope.request.name = ''; + } + $scope.AuthenticationMode = M.AuthenticationMode; + $scope.request = currentRequest !== null ? currentRequest : + angular.copy(defaultRequest); +}]); diff --git a/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js b/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js new file mode 100644 index 0000000..eeb76d8 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js @@ -0,0 +1,22 @@ +var svWizardApp = angular.module('svWizardApp'); + + +svWizardApp.directive( 'autocomplete', [ '$timeout', function($timeout) { + + return { + restrict: 'A', + scope: { + autocomplete: '&' + }, + link: function(scope, element, attrs) { + var autocomplete = new google.maps.places.Autocomplete(element[0]); + + autocomplete.addListener('place_changed', function(){ + scope.$apply(); + $timeout(function() { + scope.autocomplete({address: autocomplete.getPlace()}); + }); + }); + } + } +}]); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js b/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js new file mode 100644 index 0000000..ac9648c --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js @@ -0,0 +1,35 @@ +var svWizardApp = angular.module('svWizardApp'); + + +svWizardApp.directive( 'mapPreview', ['$timeout', '$window', 'Utils', + function($timeout, $window, Utils) { + function initMap_(element) { + return new google.maps.Map(element.find('div')[0], { + center: {lat: 37.3863, lng: -5.99205}, + zoom: 16, + zoomControl: false, + mapTypeControl: false + }); + } + return { + template: '
', + scope: { + map: '=', + panorama: '=' + }, + link: function(scope, element, attrs) { + window.element = element; + + var map = initMap_(element); + + scope.$watch('panorama', function() { + map.setStreetView(scope.panorama); + google.maps.event.addListener(scope.panorama, + 'position_changed', function() { + map.panTo(scope.panorama.getPosition()); + }); + }) + + } + } + }]); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/directives/svPreview.js b/tools/Streetview/sv-wizard/app/scripts/directives/svPreview.js new file mode 100644 index 0000000..90133aa --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/directives/svPreview.js @@ -0,0 +1,132 @@ +var svWizardApp = angular.module('svWizardApp'); + + +svWizardApp.directive( 'svPreview', ['$timeout', '$window', 'Utils', + function($timeout, $window, Utils) { + + function zoomListener_(scope, panorama) { + return function() { + $timeout(function(){ + var fov = Utils.numbers.zoom2fov(panorama.getZoom()); + //FOV cannot be > 120 for SV API + if( fov > 120) { + panorama.setZoom(Utils.numbers.fov2zoom(120)); + }else{ + scope.fov = Utils.numbers.decimalPlaces(fov,1); + } + }); + }; + } + function povListener_(scope, panorama) { + return function() { + var pov = panorama.getPov(); + $timeout(function(){ + scope.heading = Utils.numbers.decimalPlaces( + Utils.numbers.wrap(pov.heading, 360), 1); + scope.pitch = Utils.numbers.decimalPlaces(pov.pitch, 1); + }); + }; + } + function positionListener_(scope, panorama) { + return function() { + $timeout(function(){ + var position = panorama.getPosition(); + scope.location.lat = Utils.numbers.decimalPlaces( + position.lat(),5); + scope.location.lng = Utils.numbers.decimalPlaces( + position.lng(), 5); + }); + }; + } + function resizePanorama_(scope, parent, panoramaEl, panorama) { + var parentSize = Utils.ui.getInnerSize(parent, $window); + var pRatio = parentSize.width / parentSize.height; + var ratio = scope.ratio(); + if(pRatio > ratio) { + panoramaEl.style.height = '100%'; + panoramaEl.style.width = ratio/pRatio * 100 + "%"; + }else{ + panoramaEl.style.width = '100%'; + panoramaEl.style.height = pRatio/ratio * 100 + "%"; + } + // The event has to be manually triggered because if not, the panorama + // view doesn't notice the size changed + google.maps.event.trigger(panorama, 'resize'); + } + + return { + restrict: 'E', + scope: { + panorama: '=', + location: '=', + heading: '=', + pitch: '=', + fov: '=', + ratio: '&' + }, + template: '
', + link: function(scope, element, attrs) { + // Enable IV + window['google']['maps']['streetViewViewer'] = 'photosphere'; + var panoramaEl = element[0]; + var container = element.parent()[0]; + var panorama = new google.maps.StreetViewPanorama( + panoramaEl, + { + addressControl: false, + zoomControl: false + } + ); + scope.panorama = panorama; + var zoomListener = zoomListener_(scope, panorama); + var povListener = povListener_(scope, panorama); + var positionListener = positionListener_(scope, panorama); + + var zoomListenerId = google.maps.event.addListener(panorama, + 'zoom_changed', zoomListener); + var povListenerId = google.maps.event.addListener(panorama, + 'pov_changed', povListener); + var positionListenerId = google.maps.event.addListener(panorama, + 'position_changed', positionListener); + + /* Listen for changes on the parameters */ + scope.$watch( 'location', function() { + google.maps.event.removeListener(positionListenerId); + var latLng = new google.maps.LatLng(scope.location); + panorama.setPosition(latLng); + positionListenerId = google.maps.event.addListener(panorama, + 'position_changed', positionListener); + }, true); + + scope.$watchGroup(['heading', 'pitch'], function(){ + google.maps.event.removeListener(povListenerId); + panorama.setPov({ + heading: scope.heading, + pitch: scope.pitch + }); + povListenerId = google.maps.event.addListener(panorama, + 'pov_changed', povListener); + }); + + scope.$watch( 'fov', function() { + google.maps.event.removeListener(zoomListenerId); + var fov = scope.fov; + var zoom = Utils.numbers.fov2zoom(fov); + panorama.setZoom(zoom); + zoomListenerId = google.maps.event.addListener(panorama, + 'zoom_changed', zoomListener); + }); + + resizePanorama_(scope, container, panoramaEl, panorama); + + scope.$watch('ratio()', function() { + resizePanorama_(scope, container, panoramaEl, panorama); + }); + + angular.element($window).bind('resize', function() { + resizePanorama_(scope, container, panoramaEl, panorama); + }); + } + }; +}]); diff --git a/tools/Streetview/sv-wizard/app/scripts/generator.js b/tools/Streetview/sv-wizard/app/scripts/generator.js new file mode 100644 index 0000000..db11657 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/generator.js @@ -0,0 +1,46 @@ +var svWizard = svWizard || {}; + +svWizard.generator = {}; +svWizard.DOMAIN = 'https://maps.googleapis.com'; +svWizard.BASE_URL = '/maps/api/streetview'; +svWizard.generator.generate = function(request, settings) { + console.log(settings); + var parameter = 'https://maps.googleapis.com/maps/api/streetview?'; + var parameters = { + location: request.location.lat + ',' + request.location.lng, + heading: request.heading, + pitch: request.pitch, + fov: request.fov, + size: request.size.width + 'x' + request.size.height + }; + var relativeUrl = svWizard.generator. + addParameters(svWizard.BASE_URL, parameters); + var url = ''; + if(request.authenticationMode == svWizard.AuthenticationMode.NONE) { + return svWizard.DOMAIN + relativeUrl; + }else if(request.authenticationMode == svWizard.AuthenticationMode.API_KEY){ + return svWizard.DOMAIN + relativeUrl + '&key=' + settings.apiKey; + }else{ + var urlToSign = relativeUrl + '&client=' + settings.clientId; + console.log(urlToSign); + var signature = svWizard.utils.signing.signature(urlToSign, + settings.cryptoKey); + return svWizard.DOMAIN + urlToSign + '&signature=' + signature; + } +}; + +svWizard.generator.addParameters = function (path,parameters) { + var url = path; + var paramStr = ''; + for (var key in parameters) { + if(parameters.hasOwnProperty(key)) { + paramStr += key + '=' + parameters[key]; + paramStr += '&'; + } + } + if(paramStr.length > 0) { + paramStr = paramStr.slice(0, paramStr.length - 1); + url += '?' + paramStr; + } + return url; +} \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/main.js b/tools/Streetview/sv-wizard/app/scripts/main.js new file mode 100644 index 0000000..2bcbacc --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/main.js @@ -0,0 +1,19 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp', ['ngDialog', + 'ng-polymer-elements', 'LocalStorageModule']); + +svWizardApp.config(function (localStorageServiceProvider) { + localStorageServiceProvider + .setPrefix('svwizard'); +}); + +svWizardApp.run(['$rootScope', function( $rootScope) { + $rootScope.$on('openmenu', function() { + angular.element('#drawer').get(0).openDrawer(); + }); + + $rootScope.$on('closemenu', function() { + angular.element('#drawer').get(0).closeDrawer(); + }); +}]); diff --git a/tools/Streetview/sv-wizard/app/scripts/models/authenticationMode.js b/tools/Streetview/sv-wizard/app/scripts/models/authenticationMode.js new file mode 100644 index 0000000..87b78b3 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/models/authenticationMode.js @@ -0,0 +1,7 @@ +var svWizard = svWizard || svWizard; + +svWizard.AuthenticationMode = { + NONE: 'none', + API_KEY: 'api_key', + FOR_WORK: 'for_work' +}; diff --git a/tools/Streetview/sv-wizard/app/scripts/services/generator.js b/tools/Streetview/sv-wizard/app/scripts/services/generator.js new file mode 100644 index 0000000..4b86da6 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/services/generator.js @@ -0,0 +1,7 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.factory('Generator', function() { + return svWizard.generator; +}); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/services/models.js b/tools/Streetview/sv-wizard/app/scripts/services/models.js new file mode 100644 index 0000000..077e08a --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/services/models.js @@ -0,0 +1,10 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.factory('M', function() { + var models = {}; + models.AuthenticationMode = svWizard.AuthenticationMode; + + return models; +}); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js b/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js new file mode 100644 index 0000000..5b5cafb --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js @@ -0,0 +1,94 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.service('RequestProvider', ['localStorageService', + function(localStorageService) { + var REQUESTS = 'requests'; + var CURRENT = 'current'; + + var requests_ = {}; + var requestsArray_ = [] + var current_ = {}; + + init_(); + + /*Loads the requests from locastorage*/ + function init_() { + var rawRequests = localStorageService.get(REQUESTS); + if(angular.isDefined(rawRequests) && rawRequests !== null + && rawRequests.length > 0) { + requests_ = angular.fromJson(rawRequests); + }else{ + requests_ = {}; + } + updateArray_(); + + var rawCurrent = localStorageService.get(CURRENT); + if(angular.isDefined(rawCurrent) && rawCurrent !== null && + rawCurrent.length > 0) { + current_ = angular.fromJson(rawCurrent); + }else{ + current_ = {}; + } + } + + function updateArray_() { + requestsArray_ = []; + for(var key in requests_) { + requestsArray_.push(requests_[key]); + } + console.log(requestsArray_); + } + + function saveRequests_() { + var requestsJson = angular.toJson(requests_); + localStorageService.set(REQUESTS, requestsJson); + + } + this.saveRequest = function(request) { + console.log(requests_); + var timestamp = request.timestamp; + if( request.timestamp !== null) { + delete requests_[request.timestamp]; + } + request.timestamp = Date.now() + ''; + requests_[request.timestamp] = request; + console.log(requests_); + saveRequests_(); + updateArray_(); + return request; + } + + this.getRequests = function() { + return requestsArray_; + } + + this.getCurrentRequest = function(){ + if(angular.isUndefined(current_.size) || + angular.isUndefined(current_.location) || + angular.isUndefined(current_.heading) || + angular.isUndefined(current_.fov) || + angular.isUndefined(current_.pitch)) { + return null; + } + return current_; + } + + this.removeRequest = function(timestamp) { + delete requests_[timestamp]; + saveRequests_(); + updateArray_(); + return true; + } + + this.updateCurrentRequest = function(request) { + current_ = request; + var currentJson = angular.toJson(current_); + localStorageService.set(CURRENT, currentJson); + } + + + + } +]); diff --git a/tools/Streetview/sv-wizard/app/scripts/services/settings.js b/tools/Streetview/sv-wizard/app/scripts/services/settings.js new file mode 100644 index 0000000..f56e27f --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/services/settings.js @@ -0,0 +1,59 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.service('Settings', ['localStorageService', + function(localStorageService) { + var API_KEY = 'apikey'; + var CRYPTO_KEY = 'cryptokey'; + var CLIENT_ID = 'clientid'; + + var apiKey_ = ''; + var cryptoKey_ = ''; + var clientId_ = ''; + + this.getApiKey = function() { + return apiKey_; + }; + + this.getCryptoKey = function() { + return cryptoKey_; + }; + + this.getClientId = function() { + return clientId_; + }; + + this.getSettings = function() { + return { + apiKey: apiKey_, + cryptoKey: cryptoKey_, + clientId: clientId_ + } + }; + + this.setApiKey = function( apiKey) { + apiKey_ = apiKey; + localStorageService.set(API_KEY, apiKey_); + }; + + this.setCryptoKey = function(cryptoKey) { + cryptoKey_ = cryptoKey; + localStorageService.set(CRYPTO_KEY, cryptoKey_); + }; + + this.setClientId = function(clientId) { + clientId_ = clientId; + localStorageService.set(CLIENT_ID, clientId_); + } + + function loadSetings() { + console.log('load settings'); + apiKey_ = localStorageService.get(API_KEY); + cryptoKey_ = localStorageService.get(CRYPTO_KEY); + clientId_ = localStorageService.get(CLIENT_ID); + } + + loadSetings(); + +}]); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/services/utils.js b/tools/Streetview/sv-wizard/app/scripts/services/utils.js new file mode 100644 index 0000000..7b06b1a --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/services/utils.js @@ -0,0 +1,7 @@ +var svWizard = svWizard || {}; + +var svWizardApp = angular.module('svWizardApp'); + +svWizardApp.factory('Utils', function() { + return svWizard.utils; +}); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/utils.js b/tools/Streetview/sv-wizard/app/scripts/utils.js new file mode 100644 index 0000000..e47df3f --- /dev/null +++ b/tools/Streetview/sv-wizard/app/scripts/utils.js @@ -0,0 +1,77 @@ +var svWizard = svWizard || {}; + +svWizard.utils = {}; + +svWizard.utils.numbers = (function() { + var numbers = {}; + numbers.decimalPlaces = function(num, places) { + var multiplier = Math.pow(10, places); + return Math.round( num * multiplier) / multiplier; + }; + + numbers.wrap = function(num,max) { + if( num >= 0) { + return num % max; + }else if( num < 0) { + return max + num%max; + } + }; + + //From the documentation: https://goo.gl/hCvvt + // fov = 180 / (2 ^ zoom) + // zoom = (log(180) - log(fov))/log(2) + numbers.fov2zoom = function(fov) { + return Math.log(180/fov) / Math.log(2); + }; + + numbers.zoom2fov = function(zoom) { + return 180 / (Math.pow(2,zoom)); + } + return numbers; +})(); + +svWizard.utils.ui = (function() { + var ui = {}; + ui.getInnerSize = function(el, theWindow) { + var s = theWindow.getComputedStyle(el, null); + var tWidth = ui.px2int(s.getPropertyValue('width')); + var tHeight = ui.px2int(s.getPropertyValue('height')); + var pRigth = ui.px2int(s.getPropertyValue('padding-right')); + var pLeft = ui.px2int(s.getPropertyValue('padding-left')); + var pTop = ui.px2int(s.getPropertyValue('padding-top')); + var pBottom = ui.px2int(s.getPropertyValue('padding-bottom')); + + return { + width: tWidth - pRigth - pLeft, + height: tHeight - pTop - pBottom + }; + } + //Externalize in utils + ui.px2int = function(px) { + return parseInt(px.replace('px', '')); + } + return ui; +})(); + +svWizard.utils.signing = (function() { + var signing = {}; + signing.signature = function(text, cryptoKey) { + var unescapedCryptoKey = signing.unescapeWebSafeBase64(cryptoKey); + console.log(unescapedCryptoKey); + var key = CryptoJS.enc.Base64.parse(unescapedCryptoKey); + var hash = CryptoJS.HmacSHA1(text, key); + var unescapedSignature = hash.toString(CryptoJS.enc.Base64); + console.log(unescapedSignature); + return signing.escapeWebSafeBase64(unescapedSignature); + + } + + signing.unescapeWebSafeBase64 = function(escaped) { + return escaped.replace(/-/g, '+').replace(/_/g, '/'); + } + + signing.escapeWebSafeBase64 = function(unescaped) { + return unescaped.replace(/\+/g, '-').replace(/\//g, '_'); + } + return signing; +}()); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/styles/custom-style.html b/tools/Streetview/sv-wizard/app/styles/custom-style.html new file mode 100644 index 0000000..7f5a720 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/styles/custom-style.html @@ -0,0 +1,43 @@ + diff --git a/tools/Streetview/sv-wizard/app/styles/main.scss b/tools/Streetview/sv-wizard/app/styles/main.scss new file mode 100644 index 0000000..33ee54d --- /dev/null +++ b/tools/Streetview/sv-wizard/app/styles/main.scss @@ -0,0 +1,110 @@ +// bower:scss +// endbower +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} +body { + background: #fafafa; + font-family: "Roboto", Helvetica, Arial, sans-serif; + color: #333; + width: 100%; + height: 100%; +} + +html { + width: 100%; + height: 100%; +} + +#map { + height: 100%; + width: 100%; +} +paper-header-panel{ + box-shadow: 0px 0px 4px grey; + z-index: 1; +} + +.paper-header { + height: 60px; + font-size: 16px; + line-height: 60px; + padding: 0 10px; + color: white; + transition: height 0.2s; + +} +.content { + height: 100%; + padding: 20px 15px; +} +.cover { + margin: 60px; +} + + +.configuration .section { + padding-top: 5px; + padding-left: 5px; + +} +.configuration .section .form { + padding-left: 5px; + font-size: 12px; +} +.sv-parameters { + min-width: 400px; +} + +.configuration .section h5 { + font-weight: normal; + font-size: 14px; + color: #444; +} + +.menu { + + .menu-section { + margin-bottom: 20px; + h4 { + color: #666; + } + .menu-section-content { + margin-left: 20px; + color: #777; + h5 { + margin-top: 10px; + margin-left: -10px; + font-weight: bold; + color: #777; + } + ul { + margin-top: 10px; + margin-left: 10px; + li { + margin: 5px; + list-style: none; + font-size: 14px; + cursor: pointer; + + &:hover { + color: #555; + } + } + } + } + } +} + +paper-toolbar { + + paper-fab.floating { + position: absolute; + top: calc(64px - 28px); + right: 24px; + z-index: 1; + transition: top 0.18s ease-in; + } +} diff --git a/tools/Streetview/sv-wizard/app/styles/mapPreview.scss b/tools/Streetview/sv-wizard/app/styles/mapPreview.scss new file mode 100644 index 0000000..aa26e0c --- /dev/null +++ b/tools/Streetview/sv-wizard/app/styles/mapPreview.scss @@ -0,0 +1,47 @@ +.map-preview{ + width: 250px; + height: 250px; + position: absolute; + bottom: 0; + left: 0; + margin: 50px; + box-shadow: 0px 0px 5px grey; + padding: 5px; + background: white; + >div { + border: 1px solid #ddd; + } + + &.big{ + width:100%; + height:100%; + border: none; + padding: 0; + margin: 0; + top: 0; + left: 0; + + >div{ + border: none; + } + } +} + +.address-search { + box-shadow: 0px 0px 5px grey; + padding: 5px; + background: white; + position: absolute; + top: 0; + left: 0; + margin: 20px; + border: none; + padding: 10px; + width: 150px; + transition: width 1s ease-in-out, left 1.5s ease-in-out; + + &:focus { + outline: 0; + width: 400px; + } +} \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/styles/ngDialog-theme-flat.css b/tools/Streetview/sv-wizard/app/styles/ngDialog-theme-flat.css new file mode 100644 index 0000000..2e862be --- /dev/null +++ b/tools/Streetview/sv-wizard/app/styles/ngDialog-theme-flat.css @@ -0,0 +1,235 @@ +@-webkit-keyframes ngdialog-flyin { + 0% { + opacity: 0; + -webkit-transform: translateY(-40px); + transform: translateY(-40px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes ngdialog-flyin { + 0% { + opacity: 0; + -webkit-transform: translateY(-40px); + -ms-transform: translateY(-40px); + transform: translateY(-40px); + } + + 100% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } +} + +@-webkit-keyframes ngdialog-flyout { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + transform: translateY(-40px); + } +} + +@keyframes ngdialog-flyout { + 0% { + opacity: 1; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + } + + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -ms-transform: translateY(-40px); + transform: translateY(-40px); + } +} + +.ngdialog.ngdialog-theme-default { + padding-bottom: 160px; + padding-top: 160px; +} + +.ngdialog.ngdialog-theme-default.ngdialog-closing .ngdialog-content { + -webkit-animation: ngdialog-flyout .5s; + animation: ngdialog-flyout .5s; +} + +.ngdialog.ngdialog-theme-default .ngdialog-content { + -webkit-animation: ngdialog-flyin .5s; + animation: ngdialog-flyin .5s; + background: #f0f0f0; + border-radius: 5px; + color: #444; + font-family: 'Helvetica',sans-serif; + font-size: 1.1em; + line-height: 1.5em; + margin: 0 auto; + max-width: 100%; + padding: 1em; + position: relative; + width: 50%; +} + +.ngdialog.ngdialog-theme-default .ngdialog-close { + border-radius: 5px; + cursor: pointer; + position: absolute; + right: 0; + top: 0; +} + +.ngdialog.ngdialog-theme-default .ngdialog-close:before { + background: transparent; + border-radius: 3px; + color: #bbb; + content: '\00D7'; + font-size: 26px; + font-weight: 400; + height: 30px; + line-height: 26px; + position: absolute; + right: 3px; + text-align: center; + top: 3px; + width: 30px; +} + +.ngdialog.ngdialog-theme-default .ngdialog-close:hover:before, +.ngdialog.ngdialog-theme-default .ngdialog-close:active:before { + color: #777; +} + +.ngdialog.ngdialog-theme-default .ngdialog-message { + margin-bottom: .5em; +} + +.ngdialog.ngdialog-theme-default .ngdialog-input { + margin-bottom: 1em; +} + +.ngdialog.ngdialog-theme-default .ngdialog-input textarea, +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"], +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"], +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"], +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"] { + background: #fff; + border: 0; + border-radius: 3px; + font-family: inherit; + font-size: inherit; + font-weight: inherit; + margin: 0 0 .25em; + min-height: 2.5em; + padding: .25em .67em; + width: 100%; +} + +.ngdialog.ngdialog-theme-default .ngdialog-input textarea:focus, +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"]:focus, +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"]:focus, +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"]:focus, +.ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"]:focus { + -webkit-box-shadow: inset 0 0 0 2px #8dbdf1; + box-shadow: inset 0 0 0 2px #8dbdf1; + outline: none; +} + +.ngdialog.ngdialog-theme-default .ngdialog-buttons { + *zoom: 1; +} + +.ngdialog.ngdialog-theme-default .ngdialog-buttons:after { + content: ''; + display: table; + clear: both; +} + +.ngdialog.ngdialog-theme-default .ngdialog-button { + border: 0; + border-radius: 3px; + cursor: pointer; + float: right; + font-family: inherit; + font-size: .8em; + letter-spacing: .1em; + line-height: 1em; + margin: 0 0 0 .5em; + padding: .75em 2em; + text-transform: uppercase; +} + +.ngdialog.ngdialog-theme-default .ngdialog-button:focus { + -webkit-animation: ngdialog-pulse 1.1s infinite; + animation: ngdialog-pulse 1.1s infinite; + outline: none; +} + +@media (max-width: 568px) { + .ngdialog.ngdialog-theme-default .ngdialog-button:focus { + -webkit-animation: none; + animation: none; + } +} + +.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-primary { + background: #3288e6; + color: #fff; +} + +.ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-secondary { + background: #e0e0e0; + color: #777; +} + +.ngdialog.ngdialog-theme-custom { + padding-top: 125px; + padding-bottom: 125px; +} + +.ngdialog.ngdialog-theme-custom .ngdialog-overlay { + background: rgba(0,0,0,.5); +} + +.ngdialog.ngdialog-theme-custom .ngdialog-content { + background: rgba(255,255,255,.9); + padding: 1.8em 2em; + -webkit-border-radius: 0; + border-radius: 0; +} + +.ngdialog.ngdialog-theme-custom .ngdialog-message h2 { + font-size: 26px; + font-family: 'Montserrat', 'Helvetica', Arial, sans-serif; + line-height: 30px; + margin-bottom: 20px; +} + +.ngdialog.ngdialog-theme-custom .ngdialog-message { + font-size: 16px; + font-family: 'Source Sans Pro'; + line-height: 22px; +} + +.ngdialog.ngdialog-theme-custom .ngdialog-message ul { + padding: 0 0 5px 35px; +} + +.ngdialog.ngdialog-theme-custom .ngdialog-button.ngdialog-button-primary { + background: #27ae60; + -webkit-border-radius: 0; + border-radius: 0; +} diff --git a/tools/Streetview/sv-wizard/app/styles/svPreview.scss b/tools/Streetview/sv-wizard/app/styles/svPreview.scss new file mode 100644 index 0000000..0044a3a --- /dev/null +++ b/tools/Streetview/sv-wizard/app/styles/svPreview.scss @@ -0,0 +1,9 @@ +.sv-preview-container { + background: #ddd; + padding: 10px; + position: relative; + + .sv-preview-panorama{ + box-shadow: 0px 0px 5px grey; + } +} \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/templates/generated.html b/tools/Streetview/sv-wizard/app/templates/generated.html new file mode 100644 index 0000000..189d4df --- /dev/null +++ b/tools/Streetview/sv-wizard/app/templates/generated.html @@ -0,0 +1,9 @@ +
+

Street View API request:

+ + + + + + +
\ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/templates/main.html b/tools/Streetview/sv-wizard/app/templates/main.html new file mode 100644 index 0000000..ee764a9 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/templates/main.html @@ -0,0 +1,97 @@ + + + +
Street View Wizard
+ +
+
+
+
+

Name

+
+ + + +
+
+
+

Parameters

+
+
+ + + +
px
+
+ + + + +
px
+
+
+
+ + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+
+
+

Authentication

+
+ + None + API key + Maps for Work + +
+
+
+ + +
+ Save + Generate +
+
+ +
+ +
+ + + +
diff --git a/tools/Streetview/sv-wizard/app/templates/menu.html b/tools/Streetview/sv-wizard/app/templates/menu.html new file mode 100644 index 0000000..7ba3532 --- /dev/null +++ b/tools/Streetview/sv-wizard/app/templates/menu.html @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/tools/Streetview/sv-wizard/bower.json b/tools/Streetview/sv-wizard/bower.json new file mode 100644 index 0000000..b4a1b8b --- /dev/null +++ b/tools/Streetview/sv-wizard/bower.json @@ -0,0 +1,31 @@ +{ + "name": "sv-wizard", + "private": true, + "dependencies": { + "jquery": "~2.1.4", + "modernizr": "~2.8.3", + "polymer": "Polymer/polymer#^1.2.0", + "iron-flex-layout": "PolymerElements/iron-flex-layout#~1.2.2", + "paper-header-panel": "PolymerElements/paper-header-panel#~1.1.2", + "paper-styles": "PolymerElements/paper-styles#~1.0.13", + "paper-drawer-panel": "PolymerElements/paper-drawer-panel#~1.0.5", + "paper-icon-button": "PolymerElements/paper-icon-button#~1.0.5", + "iron-iconset": "PolymerElements/iron-iconset#~1.0.4", + "paper-input": "PolymerElements/paper-input#~1.1.2", + "paper-radio-group": "PolymerElements/paper-radio-group#~1.0.7", + "paper-radio-button": "PolymerElements/paper-radio-button#~1.0.11", + "paper-button": "PolymerElements/paper-button#~1.0.11", + "angular": "~1.4.8", + "paper-dialog": "PolymerElements/paper-dialog#~1.0.3", + "ng-dialog": "likeastore/ngDialog#~0.5.6", + "ng-polymer-elements": "GabiAxel/ng-polymer-elements#~0.3.0", + "angular-local-storage": "~0.2.3", + "cryptojslib": "sytelus/CryptoJS#~3.1.2", + "paper-fab": "PolymerElements/paper-fab#~1.1.1", + "paper-toolbar": "PolymerElements/paper-toolbar#~1.1.2" + }, + "devDependencies": { + "chai": "~3.4.2", + "mocha": "~2.3.4" + } +} diff --git a/tools/Streetview/sv-wizard/package.json b/tools/Streetview/sv-wizard/package.json new file mode 100644 index 0000000..e523425 --- /dev/null +++ b/tools/Streetview/sv-wizard/package.json @@ -0,0 +1,59 @@ +{ + "private": true, + "devDependencies": { + "autoprefixer": "^6.0.2", + "grunt": "^0.4.5", + "grunt-babel": "^5.0.0", + "grunt-browser-sync": "^2.1.2", + "grunt-concurrent": "^1.0.0", + "grunt-contrib-clean": "^0.6.0", + "grunt-contrib-concat": "^0.5.1", + "grunt-contrib-copy": "^0.8.0", + "grunt-contrib-cssmin": "^0.12.2", + "grunt-contrib-htmlmin": "^0.4.0", + "grunt-contrib-imagemin": "^0.9.3", + "grunt-contrib-uglify": "^0.8.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-eslint": "^17.0.0", + "grunt-filerev": "^2.2.0", + "grunt-mocha": "^0.4.12", + "grunt-modernizr": "^0.6.0", + "grunt-newer": "^1.1.0", + "grunt-postcss": "^0.6.0", + "grunt-sass": "^1.0.0", + "grunt-svgmin": "^2.0.1", + "grunt-usemin": "^3.0.0", + "grunt-vulcanize": "^1.0.0", + "grunt-wiredep": "^2.0.0", + "jit-grunt": "^0.9.1", + "time-grunt": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "grunt test" + }, + "eslintConfig": { + "extends": [ + "eslint:recommended" + ], + "env": { + "node": true, + "browser": true, + "es6": true, + "jquery": true, + "mocha": true + }, + "rules": { + "quotes": [ + 2, + "single" + ], + "indent": [ + 2, + 2 + ] + } + } +} From 6c01bb51d10f9f4c91f8314778195e8ed561e648 Mon Sep 17 00:00:00 2001 From: Mikel Corcuera Date: Wed, 3 Feb 2016 17:28:40 +0000 Subject: [PATCH 03/11] Code clean up and minor bug fixes --- tools/Streetview/sv-wizard/app/index.html | 4 +- .../controllers/generatedDialogCtrl.js | 14 +-- .../app/scripts/controllers/menuCtrl.js | 26 +---- .../controllers/streetViewRequestCtrl.js | 44 ++----- .../app/scripts/directives/autocomplete.js | 6 +- .../app/scripts/directives/mapPreview.js | 21 ++-- .../app/scripts/{ => lib}/generator.js | 6 +- .../sv-wizard/app/scripts/{ => lib}/utils.js | 0 .../app/scripts/services/requestProvider.js | 109 +++++++++++------- .../app/scripts/services/settings.js | 88 ++++++-------- .../Streetview/sv-wizard/app/styles/main.scss | 5 +- .../sv-wizard/app/styles/mapPreview.scss | 47 +------- .../sv-wizard/app/styles/svPreview.scss | 28 +++++ .../sv-wizard/app/templates/main.html | 44 ++++--- .../sv-wizard/app/templates/menu.html | 16 +-- 15 files changed, 209 insertions(+), 249 deletions(-) rename tools/Streetview/sv-wizard/app/scripts/{ => lib}/generator.js (92%) rename tools/Streetview/sv-wizard/app/scripts/{ => lib}/utils.js (100%) diff --git a/tools/Streetview/sv-wizard/app/index.html b/tools/Streetview/sv-wizard/app/index.html index af03d4a..75046ce 100644 --- a/tools/Streetview/sv-wizard/app/index.html +++ b/tools/Streetview/sv-wizard/app/index.html @@ -161,8 +161,8 @@ - - + + diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js index 1a56a69..f19e4f3 100644 --- a/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/generatedDialogCtrl.js @@ -3,13 +3,13 @@ var svWizardApp = angular.module('svWizardApp'); svWizardApp.controller( 'GeneratedDialogCtrl', ['$scope', '$window', function($scope, $window) { - $scope.url = $scope.ngDialogData.url; + $scope.url = $scope.ngDialogData.url; - $scope.copy = function() { + $scope.copy = function() { + //TODO copy url into clipboard + }; - }; - - $scope.open = function() { - $window.open($scope.url); - }; + $scope.open = function() { + $window.open($scope.url); + }; }]); diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js index e033ba7..89ec776 100644 --- a/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/menuCtrl.js @@ -1,34 +1,14 @@ +var angular = angular || {}; var svWizardApp = angular.module('svWizardApp'); svWizardApp.controller( 'MenuCtrl', ['$scope', '$rootScope', 'Settings', 'RequestProvider', function($scope, $rootScope, Settings, RequestProvider) { - $scope.auth = Settings.getSettings(); - console.log($scope.auth); - $scope.requests = RequestProvider.getRequests(); - - $scope.$watch( function() { - return RequestProvider.getRequests() - }, function() { - $scope.requests = RequestProvider.getRequests(); - }) - - $scope.$watch('auth.apiKey', function() { - Settings.setApiKey($scope.auth.apiKey); - }); - - $scope.$watch('auth.clientId', function() { - Settings.setClientId($scope.auth.clientId); - }); - - $scope.$watch('auth.cryptoKey', function() { - Settings.setCryptoKey($scope.auth.cryptoKey); - }); + $scope.provider = RequestProvider; + $scope.settings = Settings; $scope.openRequest = function(request) { - console.log('Opening'); $rootScope.$emit('openrequest', request); $rootScope.$emit('closemenu'); } - }]); diff --git a/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js b/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js index 2b705ef..fab5e96 100644 --- a/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js +++ b/tools/Streetview/sv-wizard/app/scripts/controllers/streetViewRequestCtrl.js @@ -6,43 +6,24 @@ svWizardApp.controller( 'StreetViewRequestCtrl', ['$scope', '$rootScope', function($scope, $rootScope, ngDialog, M, Generator, Settings, RequestProvider) { - var defaultRequest = { - timestamp: null, - name: 'La Giralda - Sevilla', - location: {lat: 37.3863, lng: -5.99205}, - size: { - width: 640, - height: 640 - }, - heading: 254.5, - fov: 71.6, - pitch: 30.8, - authenticationMode: M.AuthenticationMode.NONE - }; - var currentRequest = RequestProvider.getCurrentRequest(); - - $scope.$watch( 'request', function() { - RequestProvider.updateCurrentRequest($scope.request); - }, true); - $scope.addressSelected = function(address){ console.log(address); if( address !== undefined && address !== null) { console.log('Halloo'); var location = address.geometry.location; - $scope.request.location.lat = location.lat(); - $scope.request.location.lng = location.lng(); + RequestProvider.current.location.lat = location.lat(); + RequestProvider.current.location.lng = location.lng(); } - } + $rootScope.$on('openrequest', function(event, request) { - $scope.request = request; + RequestProvider.current = request; }); $scope.getRatio = function() { - var width = $scope.request.size.width; - var height = $scope.request.size.height; + var width = RequestProvider.current.size.width; + var height = RequestProvider.current.size.height; if( width == 0 || height == 0) { return 1; @@ -53,11 +34,11 @@ svWizardApp.controller( 'StreetViewRequestCtrl', ['$scope', '$rootScope', $scope.save = function() { console.log('Prepare to save'); - $scope.request = RequestProvider.saveRequest($scope.request); + RequestProvider.current = RequestProvider.saveRequest(RequestProvider.current); } $scope.generate = function() { - var url = Generator.generate($scope.request, Settings.getSettings()); + var url = Generator.generate(RequestProvider.current, Settings); ngDialog.open({ template: 'templates/generated.html', className: 'ngdialog-theme-default ngdialog-theme-custom', @@ -74,11 +55,10 @@ svWizardApp.controller( 'StreetViewRequestCtrl', ['$scope', '$rootScope', } $scope.new = function() { - $scope.request = angular.copy($scope.request); - $scope.request.timestamp = null; - $scope.request.name = ''; + RequestProvider.current = angular.copy(RequestProvider.current); + RequestProvider.current = null; + RequestProvider.current = ''; } $scope.AuthenticationMode = M.AuthenticationMode; - $scope.request = currentRequest !== null ? currentRequest : - angular.copy(defaultRequest); + $scope.provider = RequestProvider; }]); diff --git a/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js b/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js index eeb76d8..e08672d 100644 --- a/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js +++ b/tools/Streetview/sv-wizard/app/scripts/directives/autocomplete.js @@ -1,12 +1,12 @@ var svWizardApp = angular.module('svWizardApp'); -svWizardApp.directive( 'autocomplete', [ '$timeout', function($timeout) { +svWizardApp.directive( 'mapAutocomplete', [ '$timeout', function($timeout) { return { restrict: 'A', scope: { - autocomplete: '&' + mapAutocomplete: '&' }, link: function(scope, element, attrs) { var autocomplete = new google.maps.places.Autocomplete(element[0]); @@ -14,7 +14,7 @@ svWizardApp.directive( 'autocomplete', [ '$timeout', function($timeout) { autocomplete.addListener('place_changed', function(){ scope.$apply(); $timeout(function() { - scope.autocomplete({address: autocomplete.getPlace()}); + scope.mapAutocomplete({address: autocomplete.getPlace()}); }); }); } diff --git a/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js b/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js index ac9648c..ef77207 100644 --- a/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js +++ b/tools/Streetview/sv-wizard/app/scripts/directives/mapPreview.js @@ -5,14 +5,14 @@ svWizardApp.directive( 'mapPreview', ['$timeout', '$window', 'Utils', function($timeout, $window, Utils) { function initMap_(element) { return new google.maps.Map(element.find('div')[0], { - center: {lat: 37.3863, lng: -5.99205}, zoom: 16, zoomControl: false, - mapTypeControl: false + mapTypeControl: false, + streetViewControl: true }); } return { - template: '
', + template: '
', scope: { map: '=', panorama: '=' @@ -23,13 +23,14 @@ svWizardApp.directive( 'mapPreview', ['$timeout', '$window', 'Utils', var map = initMap_(element); scope.$watch('panorama', function() { - map.setStreetView(scope.panorama); - google.maps.event.addListener(scope.panorama, - 'position_changed', function() { - map.panTo(scope.panorama.getPosition()); - }); - }) - + if(angular.isDefined(scope.panorama) && scope.panorama !== null) { + map.setStreetView(scope.panorama); + google.maps.event.addListener(scope.panorama, + 'position_changed', function() { + map.panTo(scope.panorama.getPosition()); + }); + } + }); } } }]); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/scripts/generator.js b/tools/Streetview/sv-wizard/app/scripts/lib/generator.js similarity index 92% rename from tools/Streetview/sv-wizard/app/scripts/generator.js rename to tools/Streetview/sv-wizard/app/scripts/lib/generator.js index db11657..63e88cf 100644 --- a/tools/Streetview/sv-wizard/app/scripts/generator.js +++ b/tools/Streetview/sv-wizard/app/scripts/lib/generator.js @@ -3,9 +3,9 @@ var svWizard = svWizard || {}; svWizard.generator = {}; svWizard.DOMAIN = 'https://maps.googleapis.com'; svWizard.BASE_URL = '/maps/api/streetview'; + svWizard.generator.generate = function(request, settings) { - console.log(settings); - var parameter = 'https://maps.googleapis.com/maps/api/streetview?'; + var parameters = { location: request.location.lat + ',' + request.location.lng, heading: request.heading, @@ -15,7 +15,7 @@ svWizard.generator.generate = function(request, settings) { }; var relativeUrl = svWizard.generator. addParameters(svWizard.BASE_URL, parameters); - var url = ''; + if(request.authenticationMode == svWizard.AuthenticationMode.NONE) { return svWizard.DOMAIN + relativeUrl; }else if(request.authenticationMode == svWizard.AuthenticationMode.API_KEY){ diff --git a/tools/Streetview/sv-wizard/app/scripts/utils.js b/tools/Streetview/sv-wizard/app/scripts/lib/utils.js similarity index 100% rename from tools/Streetview/sv-wizard/app/scripts/utils.js rename to tools/Streetview/sv-wizard/app/scripts/lib/utils.js diff --git a/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js b/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js index 5b5cafb..ed9b228 100644 --- a/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js +++ b/tools/Streetview/sv-wizard/app/scripts/services/requestProvider.js @@ -1,9 +1,10 @@ var svWizard = svWizard || {}; +var angular = angular || {}; var svWizardApp = angular.module('svWizardApp'); -svWizardApp.service('RequestProvider', ['localStorageService', - function(localStorageService) { +svWizardApp.service('RequestProvider', ['localStorageService', 'M', + function(localStorageService, M) { var REQUESTS = 'requests'; var CURRENT = 'current'; @@ -13,6 +14,65 @@ svWizardApp.service('RequestProvider', ['localStorageService', init_(); + this.saveRequest = function(request) { + console.log(requests_); + if( request.timestamp !== null) { + delete requests_[request.timestamp]; + } + request.timestamp = Date.now() + ''; + requests_[request.timestamp] = request; + console.log(requests_); + saveRequests_(); + updateArray_(); + return request; + } + + Object.defineProperty(this, 'requests', { + get: function(){return requestsArray_} + }); + + //TODO: Move to State service + + Object.defineProperty(this, 'current', { + get: function(){ + if(angular.isUndefined(current_.size) || + angular.isUndefined(current_.location) || + angular.isUndefined(current_.heading) || + angular.isUndefined(current_.fov) || + angular.isUndefined(current_.pitch)) { + return null; + } + return current_; + }, + set: function(request){ + current_ = request; + saveCurrentRequest_(); + } + }); + + this.removeRequest = function(timestamp) { + delete requests_[timestamp]; + saveRequests_(); + updateArray_(); + return true; + } + + //Private + + var defaultRequest_ = { + timestamp: null, + name: 'La Giralda - Sevilla', + location: {lat: 37.3863, lng: -5.99205}, + size: { + width: 640, + height: 640 + }, + heading: 254.5, + fov: 71.6, + pitch: 30.8, + authenticationMode: M.AuthenticationMode.NONE + }; + /*Loads the requests from locastorage*/ function init_() { var rawRequests = localStorageService.get(REQUESTS); @@ -44,51 +104,12 @@ svWizardApp.service('RequestProvider', ['localStorageService', function saveRequests_() { var requestsJson = angular.toJson(requests_); localStorageService.set(REQUESTS, requestsJson); - - } - this.saveRequest = function(request) { - console.log(requests_); - var timestamp = request.timestamp; - if( request.timestamp !== null) { - delete requests_[request.timestamp]; - } - request.timestamp = Date.now() + ''; - requests_[request.timestamp] = request; - console.log(requests_); - saveRequests_(); - updateArray_(); - return request; - } - - this.getRequests = function() { - return requestsArray_; - } - - this.getCurrentRequest = function(){ - if(angular.isUndefined(current_.size) || - angular.isUndefined(current_.location) || - angular.isUndefined(current_.heading) || - angular.isUndefined(current_.fov) || - angular.isUndefined(current_.pitch)) { - return null; - } - return current_; } - - this.removeRequest = function(timestamp) { - delete requests_[timestamp]; - saveRequests_(); - updateArray_(); - return true; - } - - this.updateCurrentRequest = function(request) { - current_ = request; + + function saveCurrentRequest_(){ var currentJson = angular.toJson(current_); localStorageService.set(CURRENT, currentJson); } - - - + } ]); diff --git a/tools/Streetview/sv-wizard/app/scripts/services/settings.js b/tools/Streetview/sv-wizard/app/scripts/services/settings.js index f56e27f..4e035fe 100644 --- a/tools/Streetview/sv-wizard/app/scripts/services/settings.js +++ b/tools/Streetview/sv-wizard/app/scripts/services/settings.js @@ -3,57 +3,45 @@ var svWizard = svWizard || {}; var svWizardApp = angular.module('svWizardApp'); svWizardApp.service('Settings', ['localStorageService', - function(localStorageService) { - var API_KEY = 'apikey'; - var CRYPTO_KEY = 'cryptokey'; - var CLIENT_ID = 'clientid'; - - var apiKey_ = ''; - var cryptoKey_ = ''; - var clientId_ = ''; - - this.getApiKey = function() { - return apiKey_; - }; - - this.getCryptoKey = function() { - return cryptoKey_; - }; - - this.getClientId = function() { - return clientId_; - }; - - this.getSettings = function() { - return { - apiKey: apiKey_, - cryptoKey: cryptoKey_, - clientId: clientId_ - } - }; - - this.setApiKey = function( apiKey) { - apiKey_ = apiKey; - localStorageService.set(API_KEY, apiKey_); - }; - - this.setCryptoKey = function(cryptoKey) { - cryptoKey_ = cryptoKey; - localStorageService.set(CRYPTO_KEY, cryptoKey_); - }; - - this.setClientId = function(clientId) { - clientId_ = clientId; - localStorageService.set(CLIENT_ID, clientId_); + function(localStorageService) { + + var API_KEY = 'apikey'; + var CRYPTO_KEY = 'cryptokey'; + var CLIENT_ID = 'clientid'; + + var apiKey_ = ''; + var cryptoKey_ = ''; + var clientId_ = ''; + + Object.defineProperty(this, 'apiKey', { + get: function() {return apiKey_;}, + set: function(apiKey) { + apiKey_ = apiKey; + localStorageService.set(API_KEY, apiKey_); } - - function loadSetings() { - console.log('load settings'); - apiKey_ = localStorageService.get(API_KEY); - cryptoKey_ = localStorageService.get(CRYPTO_KEY); - clientId_ = localStorageService.get(CLIENT_ID); + }); + + Object.defineProperty(this, 'clientId', { + get: function() {return clientId_;}, + set: function(clientId) { + clientId_ = clientId; + localStorageService.set(CLIENT_ID, clientId_); } - - loadSetings(); + }); + Object.defineProperty(this, 'cryptoKey', { + get: function() {return cryptoKey_;}, + set: function(cryptoKey) { + cryptoKey_ = cryptoKey; + localStorageService.set(CRYPTO_KEY, cryptoKey_); + } + }); + + function loadSetings_() { + apiKey_ = localStorageService.get(API_KEY); + cryptoKey_ = localStorageService.get(CRYPTO_KEY); + clientId_ = localStorageService.get(CLIENT_ID); + } + + loadSetings_(); }]); \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/styles/main.scss b/tools/Streetview/sv-wizard/app/styles/main.scss index 33ee54d..8f47c3e 100644 --- a/tools/Streetview/sv-wizard/app/styles/main.scss +++ b/tools/Streetview/sv-wizard/app/styles/main.scss @@ -18,10 +18,7 @@ html { height: 100%; } -#map { - height: 100%; - width: 100%; -} + paper-header-panel{ box-shadow: 0px 0px 4px grey; z-index: 1; diff --git a/tools/Streetview/sv-wizard/app/styles/mapPreview.scss b/tools/Streetview/sv-wizard/app/styles/mapPreview.scss index aa26e0c..139597f 100644 --- a/tools/Streetview/sv-wizard/app/styles/mapPreview.scss +++ b/tools/Streetview/sv-wizard/app/styles/mapPreview.scss @@ -1,47 +1,2 @@ -.map-preview{ - width: 250px; - height: 250px; - position: absolute; - bottom: 0; - left: 0; - margin: 50px; - box-shadow: 0px 0px 5px grey; - padding: 5px; - background: white; - >div { - border: 1px solid #ddd; - } - - &.big{ - width:100%; - height:100%; - border: none; - padding: 0; - margin: 0; - top: 0; - left: 0; - - >div{ - border: none; - } - } -} -.address-search { - box-shadow: 0px 0px 5px grey; - padding: 5px; - background: white; - position: absolute; - top: 0; - left: 0; - margin: 20px; - border: none; - padding: 10px; - width: 150px; - transition: width 1s ease-in-out, left 1.5s ease-in-out; - - &:focus { - outline: 0; - width: 400px; - } -} \ No newline at end of file + diff --git a/tools/Streetview/sv-wizard/app/styles/svPreview.scss b/tools/Streetview/sv-wizard/app/styles/svPreview.scss index 0044a3a..00411f5 100644 --- a/tools/Streetview/sv-wizard/app/styles/svPreview.scss +++ b/tools/Streetview/sv-wizard/app/styles/svPreview.scss @@ -2,8 +2,36 @@ background: #ddd; padding: 10px; position: relative; + width: 100%; .sv-preview-panorama{ box-shadow: 0px 0px 5px grey; } +} + +.address-search { + box-shadow: 0px 0px 5px grey; + padding: 5px; + background: white; + position: relative; + top: 0; + margin: 20px auto; + border: none; + padding: 10px; + width: 400px; + + &:focus { + width: 400px; + } +} + +.map-preview{ + height: 200px; + display: block; + margin: 0px; + padding: 0px; + margin-right: 10px; + >div { + border: 1px solid #aaa; + } } \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/templates/main.html b/tools/Streetview/sv-wizard/app/templates/main.html index ee764a9..8fc2505 100644 --- a/tools/Streetview/sv-wizard/app/templates/main.html +++ b/tools/Streetview/sv-wizard/app/templates/main.html @@ -9,56 +9,67 @@

Name

- - + + +
+
+ +
+

Location

+
+ + + +
+
-

Parameters

+

Request Parameters

- +
px
- +
px
- + - +
+ step="0.5" ng-model="provider.current.heading">
+ step="0.5" ng-model="provider.current.pitch">
+ step="0.5" ng-model="provider.current.fov">
@@ -66,7 +77,7 @@

Parameters

Authentication

- + None API key Maps for Work @@ -85,13 +96,12 @@

Authentication

+ - -
diff --git a/tools/Streetview/sv-wizard/app/templates/menu.html b/tools/Streetview/sv-wizard/app/templates/menu.html index 7ba3532..96bece7 100644 --- a/tools/Streetview/sv-wizard/app/templates/menu.html +++ b/tools/Streetview/sv-wizard/app/templates/menu.html @@ -1,8 +1,8 @@ - - + @@ -14,15 +14,15 @@

Settings

Authentication
- + - + - +
@@ -30,9 +30,9 @@
Authentication
+
+center-justified"> + panorama="main.panorama" + location="main.state.current.location" + fov="main.state.current.fov" + heading="main.state.current.heading" + pitch="main.state.current.pitch" + size="main.state.current.size"/>
diff --git a/tools/Streetview/sv-wizard/app/templates/menu.html b/tools/Streetview/sv-wizard/app/templates/menu.html index d8e7c92..e86bd1e 100644 --- a/tools/Streetview/sv-wizard/app/templates/menu.html +++ b/tools/Streetview/sv-wizard/app/templates/menu.html @@ -7,7 +7,6 @@ - - diff --git a/tools/Streetview/sv-wizard/app/templates/main.html b/tools/Streetview/sv-wizard/app/templates/main.html index 8e07e00..7346d34 100644 --- a/tools/Streetview/sv-wizard/app/templates/main.html +++ b/tools/Streetview/sv-wizard/app/templates/main.html @@ -8,7 +8,7 @@
- New diff --git a/tools/Streetview/sv-wizard/app/templates/menu.html b/tools/Streetview/sv-wizard/app/templates/menu.html index e86bd1e..dd2706f 100644 --- a/tools/Streetview/sv-wizard/app/templates/menu.html +++ b/tools/Streetview/sv-wizard/app/templates/menu.html @@ -3,12 +3,12 @@ + ng-model="menu.search"/> \ No newline at end of file +
diff --git a/tools/Streetview/sv-wizard/app/templates/main.html b/tools/Streetview/sv-wizard/app/templates/main.html index 7346d34..7a0d476 100644 --- a/tools/Streetview/sv-wizard/app/templates/main.html +++ b/tools/Streetview/sv-wizard/app/templates/main.html @@ -184,4 +184,4 @@

Authentication

pitch="main.state.current.pitch" size="main.state.current.size"/> - + \ No newline at end of file diff --git a/tools/Streetview/sv-wizard/app/templates/save.html b/tools/Streetview/sv-wizard/app/templates/save.html index edcda40..7005b2b 100644 --- a/tools/Streetview/sv-wizard/app/templates/save.html +++ b/tools/Streetview/sv-wizard/app/templates/save.html @@ -12,4 +12,4 @@

Save request

Save - \ No newline at end of file + diff --git a/tools/Streetview/sv-wizard/app/templates/sv-unavailable.html b/tools/Streetview/sv-wizard/app/templates/sv-unavailable.html index 6b868b6..b62c0dd 100644 --- a/tools/Streetview/sv-wizard/app/templates/sv-unavailable.html +++ b/tools/Streetview/sv-wizard/app/templates/sv-unavailable.html @@ -1,4 +1,4 @@

There is no Street View imagery for this location

-
\ No newline at end of file + diff --git a/tools/Streetview/sv-wizard/eslint.json b/tools/Streetview/sv-wizard/eslint.json index a812235..7ca545b 100644 --- a/tools/Streetview/sv-wizard/eslint.json +++ b/tools/Streetview/sv-wizard/eslint.json @@ -8,4 +8,4 @@ "rules" : { "no-unused-vars": [2, {"vars": "all", "args": "none"}] } -} \ No newline at end of file +} diff --git a/tools/Streetview/sv-wizard/package.json b/tools/Streetview/sv-wizard/package.json index 28a54db..6ffb708 100644 --- a/tools/Streetview/sv-wizard/package.json +++ b/tools/Streetview/sv-wizard/package.json @@ -34,27 +34,5 @@ }, "scripts": { "test": "grunt test" - }, - "eslintConfig": { - "extends": [ - "eslint:recommended" - ], - "env": { - "node": true, - "browser": true, - "es6": true, - "jquery": true, - "mocha": true - }, - "rules": { - "quotes": [ - 2, - "single" - ], - "indent": [ - 2, - 2 - ] - } } } From 83d634140af4fa68dac0dadf87a30df09667ee14 Mon Sep 17 00:00:00 2001 From: Mikel Corcuera Date: Mon, 7 Mar 2016 14:50:27 +0000 Subject: [PATCH 11/11] Make clear that files was initally generated but modified later --- tools/Streetview/sv-wizard/Gruntfile.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/Streetview/sv-wizard/Gruntfile.js b/tools/Streetview/sv-wizard/Gruntfile.js index 04e6757..665fa05 100644 --- a/tools/Streetview/sv-wizard/Gruntfile.js +++ b/tools/Streetview/sv-wizard/Gruntfile.js @@ -1,3 +1,6 @@ +// This file has been initially generated using +// generator-webapp 1.1.0 +// but has been modified to fit the build requirements on the project 'use strict'; module.exports = function (grunt) { @@ -355,7 +358,8 @@ module.exports = function (grunt) { dot: true, dest: '<%= config.dist %>', src: [ - // Copy bower components to fix polymer dependencies + // Copy bower components to fix polymer dependencies as they are + // not well integrated with the Grunt build tools. 'bower_components/**/*.*' ] }]