├── .bowerrc ├── .gitignore ├── LICENSE ├── README.md ├── app.json ├── bower.json ├── config.xml ├── gulpfile.js ├── hooks ├── README.md └── after_prepare │ └── 010_add_platform_class.js ├── ionic.project ├── package.json ├── resources ├── icon.png ├── ios │ ├── icon │ │ ├── icon-40.png │ │ ├── icon-40@2x.png │ │ ├── icon-50.png │ │ ├── icon-50@2x.png │ │ ├── icon-60.png │ │ ├── icon-60@2x.png │ │ ├── icon-60@3x.png │ │ ├── icon-72.png │ │ ├── icon-72@2x.png │ │ ├── icon-76.png │ │ ├── icon-76@2x.png │ │ ├── icon-small.png │ │ ├── icon-small@2x.png │ │ ├── icon-small@3x.png │ │ ├── icon.png │ │ └── icon@2x.png │ └── splash │ │ ├── Default-568h@2x~iphone.png │ │ ├── Default-667h.png │ │ ├── Default-736h.png │ │ ├── Default-Landscape-736h.png │ │ ├── Default-Landscape@2x~ipad.png │ │ ├── Default-Landscape~ipad.png │ │ ├── Default-Portrait@2x~ipad.png │ │ ├── Default-Portrait~ipad.png │ │ ├── Default@2x~iphone.png │ │ └── Default~iphone.png └── splash.png ├── scss ├── agenda.scss ├── event.scss ├── ionic.app.scss ├── jsconfuy.scss ├── main-menu.scss ├── speakers.scss └── venue.scss ├── server.js └── www ├── agenda.json ├── css ├── ionic.app.css ├── ionic.app.min.css └── style.css ├── img ├── ember.png ├── ionic.png └── speakers │ ├── adolfo_builes.jpg │ ├── adrian_mugnolo.png │ ├── agustin_haller.jpg │ ├── alex_sexton.jpg │ ├── angelina_fabbro.jpg │ ├── chris_miller.jpg │ ├── ciro_nunes.jpg │ ├── damian_schenkelman.jpg │ ├── dayana_jabif.jpg │ ├── eric_schoffstall.jpg │ ├── guillermo_paz.jpg │ ├── james_halliday.jpg │ ├── jaydson_gomes.jpg │ ├── jean_charles_sisk.jpg │ ├── jeremy_morrell.png │ ├── julian_duque.jpg │ ├── leonardo_garcia_crespo.jpg │ ├── lourdes_montano.jpg │ ├── martin_gontovnikas.jpg │ ├── martin_naumann.jpg │ ├── mathias_bynens.jpg │ ├── mathias_rodriguez.png │ ├── matias_volpe.jpg │ ├── matthew_podwysocki.jpg │ ├── maximiliano_fierro.jpg │ ├── michael_cetrulo.jpg │ ├── nicolas_bevacqua.jpg │ ├── pablo_chiappetti.jpg │ ├── rafael_specht.jpg │ ├── sam_saccone.jpg │ ├── santiago_ferreira.png │ ├── sergio_gianazza.jpg │ └── valeri_karpov.png ├── index.html ├── js ├── app.js ├── controllers.js ├── directives.js ├── filters.js └── services.js ├── lib ├── angular-animate │ ├── .bower.json │ ├── README.md │ ├── angular-animate.js │ ├── angular-animate.min.js │ ├── angular-animate.min.js.map │ ├── bower.json │ └── package.json ├── angular-sanitize │ ├── .bower.json │ ├── README.md │ ├── angular-sanitize.js │ ├── angular-sanitize.min.js │ ├── angular-sanitize.min.js.map │ ├── bower.json │ └── package.json ├── angular-ui-router │ ├── .bower.json │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── README.md │ ├── api │ │ └── angular-ui-router.d.ts │ ├── bower.json │ ├── release │ │ ├── angular-ui-router.js │ │ └── angular-ui-router.min.js │ └── src │ │ ├── common.js │ │ ├── resolve.js │ │ ├── state.js │ │ ├── stateDirectives.js │ │ ├── stateFilters.js │ │ ├── templateFactory.js │ │ ├── urlMatcherFactory.js │ │ ├── urlRouter.js │ │ ├── view.js │ │ ├── viewDirective.js │ │ └── viewScroll.js ├── angular │ ├── .bower.json │ ├── README.md │ ├── angular-csp.css │ ├── angular.js │ ├── angular.min.js │ ├── angular.min.js.gzip │ ├── angular.min.js.map │ ├── bower.json │ └── package.json ├── ionic │ ├── .bower.json │ ├── README.md │ ├── bower.json │ ├── css │ │ ├── ionic.css │ │ └── ionic.min.css │ ├── fonts │ │ ├── ionicons.eot │ │ ├── ionicons.svg │ │ ├── ionicons.ttf │ │ └── ionicons.woff │ ├── js │ │ ├── ionic-angular.js │ │ ├── ionic-angular.min.js │ │ ├── ionic.bundle.js │ │ ├── ionic.bundle.min.js │ │ ├── ionic.js │ │ └── ionic.min.js │ └── scss │ │ ├── _action-sheet.scss │ │ ├── _animations.scss │ │ ├── _backdrop.scss │ │ ├── _badge.scss │ │ ├── _bar.scss │ │ ├── _button-bar.scss │ │ ├── _button.scss │ │ ├── _checkbox.scss │ │ ├── _form.scss │ │ ├── _grid.scss │ │ ├── _items.scss │ │ ├── _list.scss │ │ ├── _loaders.scss │ │ ├── _loading.scss │ │ ├── _menu.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _platform.scss │ │ ├── _popover.scss │ │ ├── _popup.scss │ │ ├── _progress.scss │ │ ├── _radio.scss │ │ ├── _range.scss │ │ ├── _refresher.scss │ │ ├── _reset.scss │ │ ├── _scaffolding.scss │ │ ├── _select.scss │ │ ├── _slide-box.scss │ │ ├── _spinner.scss │ │ ├── _split-pane.scss │ │ ├── _tabs.scss │ │ ├── _toggle.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _util.scss │ │ ├── _variables.scss │ │ ├── ionic.scss │ │ └── ionicons │ │ ├── _ionicons-animation.scss │ │ ├── _ionicons-font.scss │ │ ├── _ionicons-icons.scss │ │ ├── _ionicons-variables.scss │ │ └── ionicons.scss ├── ngmap │ ├── .bower.json │ ├── .gitattributes │ ├── .gitignore │ ├── .travis.yml │ ├── LICENSE │ ├── README.md │ ├── app │ │ ├── .buildignore │ │ └── scripts │ │ │ ├── .jshintrc │ │ │ ├── app.js │ │ │ ├── directives │ │ │ ├── .jshintrc │ │ │ ├── bicycling-layer.js │ │ │ ├── cloud-layer.js │ │ │ ├── custom-control.js │ │ │ ├── directions.js │ │ │ ├── drawing-manager.js │ │ │ ├── dynamic-maps-engine-layer.js │ │ │ ├── fusion-tables-layer.js │ │ │ ├── heatmap-layer.js │ │ │ ├── info-window.js │ │ │ ├── kml-layer.js │ │ │ ├── map-data.js │ │ │ ├── map-lazy-load.js │ │ │ ├── map-type.js │ │ │ ├── map.js │ │ │ ├── map_controller.js │ │ │ ├── maps-engine-layer.js │ │ │ ├── marker.js │ │ │ ├── overlay-map-type.js │ │ │ ├── places-auto-complete.js │ │ │ ├── shape.js │ │ │ ├── street-view-panorama.js │ │ │ ├── traffic-layer.js │ │ │ ├── transit-layer.js │ │ │ └── weather-layer.js │ │ │ └── services │ │ │ ├── .jshintrc │ │ │ ├── attr2_options.js │ │ │ ├── geo_coder.js │ │ │ ├── navigator_geolocation.js │ │ │ └── street_view.js │ ├── bower.json │ ├── build │ │ ├── docs │ │ │ ├── Attr2Options.html │ │ │ ├── GeoCoder.html │ │ │ ├── MapController.html │ │ │ ├── NavigatorGeolocation.html │ │ │ ├── StreetView.html │ │ │ ├── bicycling-layer.html │ │ │ ├── cloud-layer.html │ │ │ ├── custom-control.html │ │ │ ├── directions.html │ │ │ ├── directives_bicycling-layer.js.html │ │ │ ├── directives_cloud-layer.js.html │ │ │ ├── directives_custom-control.js.html │ │ │ ├── directives_directions.js.html │ │ │ ├── directives_drawing-manager.js.html │ │ │ ├── directives_dynamic-maps-engine-layer.js.html │ │ │ ├── directives_fusion-tables-layer.js.html │ │ │ ├── directives_heatmap-layer.js.html │ │ │ ├── directives_info-window.js.html │ │ │ ├── directives_kml-layer.js.html │ │ │ ├── directives_map-data.js.html │ │ │ ├── directives_map-lazy-load.js.html │ │ │ ├── directives_map-type.js.html │ │ │ ├── directives_map.js.html │ │ │ ├── directives_map_controller.js.html │ │ │ ├── directives_maps-engine-layer.js.html │ │ │ ├── directives_marker.js.html │ │ │ ├── directives_overlay-map-type.js.html │ │ │ ├── directives_places-auto-complete.js.html │ │ │ ├── directives_shape.js.html │ │ │ ├── directives_street-view-panorama.js.html │ │ │ ├── directives_traffic-layer.js.html │ │ │ ├── directives_transit-layer.js.html │ │ │ ├── directives_weather-layer.js.html │ │ │ ├── drawing-manager.html │ │ │ ├── dynamic-maps-engine-layer.html │ │ │ ├── fusion-tables-layer.html │ │ │ ├── heatmap-layer.html │ │ │ ├── index.html │ │ │ ├── info-window.html │ │ │ ├── kml-layer.html │ │ │ ├── lazy-load.html │ │ │ ├── map-data.html │ │ │ ├── map-type.html │ │ │ ├── map.html │ │ │ ├── maps-engine-layer.html │ │ │ ├── marker.html │ │ │ ├── overlay-map-type.html │ │ │ ├── places-auto-complete.html │ │ │ ├── scripts │ │ │ │ ├── linenumber.js │ │ │ │ └── prettify │ │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ │ ├── lang-css.js │ │ │ │ │ └── prettify.js │ │ │ ├── services_attr2_options.js.html │ │ │ ├── services_geo_coder.js.html │ │ │ ├── services_navigator_geolocation.js.html │ │ │ ├── services_street_view.js.html │ │ │ ├── shape.html │ │ │ ├── streetview-panorama.html │ │ │ ├── styles │ │ │ │ ├── jsdoc-default.css │ │ │ │ ├── prettify-jsdoc.css │ │ │ │ └── prettify-tomorrow.css │ │ │ ├── traffic-layer.html │ │ │ ├── transit-layer.html │ │ │ └── weather-layer.html │ │ └── scripts │ │ │ ├── ng-map.debug.js │ │ │ ├── ng-map.js │ │ │ └── ng-map.min.js │ ├── config │ │ ├── jsdoc │ │ │ └── template │ │ │ │ ├── README.md │ │ │ │ ├── publish.js │ │ │ │ ├── static │ │ │ │ ├── scripts │ │ │ │ │ ├── linenumber.js │ │ │ │ │ └── prettify │ │ │ │ │ │ ├── Apache-License-2.0.txt │ │ │ │ │ │ ├── lang-css.js │ │ │ │ │ │ └── prettify.js │ │ │ │ └── styles │ │ │ │ │ ├── jsdoc-default.css │ │ │ │ │ ├── prettify-jsdoc.css │ │ │ │ │ └── prettify-tomorrow.css │ │ │ │ └── tmpl │ │ │ │ ├── container.tmpl │ │ │ │ ├── details.tmpl │ │ │ │ ├── example.tmpl │ │ │ │ ├── examples.tmpl │ │ │ │ ├── exceptions.tmpl │ │ │ │ ├── layout.tmpl │ │ │ │ ├── mainpage.tmpl │ │ │ │ ├── members.tmpl │ │ │ │ ├── method.tmpl │ │ │ │ ├── params.tmpl │ │ │ │ ├── properties.tmpl │ │ │ │ ├── returns.tmpl │ │ │ │ ├── source.tmpl │ │ │ │ ├── tutorial.tmpl │ │ │ │ └── type.tmpl │ │ ├── karma.conf.js │ │ └── protractor.conf.js │ ├── gulpfile.js │ ├── package.json │ ├── road-trip.md │ ├── spec │ │ ├── directives │ │ │ ├── map_controller_spec.js │ │ │ ├── map_spec.js │ │ │ ├── marker_spec.js │ │ │ ├── shape_spec.js │ │ │ └── street_view_panorama_spec.js │ │ ├── e2e │ │ │ └── testapp_spec.js │ │ ├── lib │ │ │ ├── angular-mocks.js │ │ │ ├── angular.js │ │ │ └── markerclusterer.js │ │ └── services │ │ │ ├── attr2_options_spec.js │ │ │ ├── geo_coder_spec.js │ │ │ ├── navigator_geolocation_spec.js │ │ │ └── street_view_spec.js │ └── testapp │ │ ├── USGSOverlay.js │ │ ├── aerial-rotate.html │ │ ├── aerial-simple.html │ │ ├── circle-simple.html │ │ ├── control-custom-state.html │ │ ├── control-custom.html │ │ ├── control-disableUI.html │ │ ├── control-options.html │ │ ├── control-positioning.html │ │ ├── control-simple.html │ │ ├── directions.html │ │ ├── drawing-manager.html │ │ ├── event-arguments.html │ │ ├── event-domlistener.html │ │ ├── event-properties.html │ │ ├── event-simple.html │ │ ├── events.html │ │ ├── events_controller_as.html │ │ ├── groundoverlay-simple.html │ │ ├── heatmap.json │ │ ├── hello_map.html │ │ ├── icon-complex.html │ │ ├── icon-simple.html │ │ ├── images │ │ ├── beachflag.png │ │ └── spinner.gif │ │ ├── infowindow-simple-max.html │ │ ├── infowindow-simple.html │ │ ├── infowindow_compile.html │ │ ├── infowindow_geolookup.html │ │ ├── infowindow_ng_click.html │ │ ├── layer-bicycling.html │ │ ├── layer-data-dynamic.html │ │ ├── layer-data-quakes-advanced.html │ │ ├── layer-data-quakes-default.html │ │ ├── layer-data-quakes-simple.html │ │ ├── layer-data-simple.html │ │ ├── layer-data-style.html │ │ ├── layer-dynamicmapsengine.html │ │ ├── layer-fusiontables-heatmap.html │ │ ├── layer-fusiontables-query.html │ │ ├── layer-fusiontables-simple.html │ │ ├── layer-fusiontables-styling.html │ │ ├── layer-georss.html │ │ ├── layer-heatmap.html │ │ ├── layer-kml-features.html │ │ ├── layer-kml.html │ │ ├── layer-mapsengine.html │ │ ├── layer-style-event.html │ │ ├── layer-traffic.html │ │ ├── layer-transit.html │ │ ├── layer-weather.html │ │ ├── map-coordinates.html │ │ ├── map-geolocation.html │ │ ├── map-lazy-load.html │ │ ├── map-projection-simple.html │ │ ├── map-simple.html │ │ ├── map_app.html │ │ ├── map_control.html │ │ ├── map_events.html │ │ ├── map_fit_bounds.html │ │ ├── map_geo_fallback_center.html │ │ ├── map_lazy_init.html │ │ ├── map_options.html │ │ ├── map_with_current_position.html │ │ ├── map_with_dynamic_address.html │ │ ├── map_with_dynamic_center.html │ │ ├── mapsenginelayer-noauth-layerid.html │ │ ├── mapsenginelayer-noauth-layerkey.html │ │ ├── maptype-base.html │ │ ├── maptype-image-overlay.html │ │ ├── maptype-image.html │ │ ├── maptype-overlay.html │ │ ├── maptype-styled-complex.html │ │ ├── maptype-styled-simple.html │ │ ├── marker-animations-iteration.html │ │ ├── marker-animations.html │ │ ├── marker-clusterer.html │ │ ├── marker-remove.html │ │ ├── marker-simple.html │ │ ├── marker-symbol-custom.html │ │ ├── marker-symbol-predefined.html │ │ ├── marker.html │ │ ├── marker_dynamic_raw.html │ │ ├── marker_icon.html │ │ ├── marker_on_street_view.html │ │ ├── marker_with_address.html │ │ ├── marker_with_current_position.html │ │ ├── marker_with_dynamic_address.html │ │ ├── marker_with_dynamic_position.html │ │ ├── marker_with_info_window.html │ │ ├── marker_with_ng_repeat.html │ │ ├── marker_with_ng_repeat_dynamic.html │ │ ├── marker_with_parent_controller.html │ │ ├── multiple_maps_on_a_page.html │ │ ├── overlay-custom.html │ │ ├── overlay-hideshow.html │ │ ├── overlay-remove.html │ │ ├── overlay-simple.html │ │ ├── overlay-symbol-animate.html │ │ ├── overlay-symbol-arrow.html │ │ ├── overlay-symbol-custom.html │ │ ├── overlay-symbol-dashed.html │ │ ├── places-auto-complete.html │ │ ├── polygon-arrays.html │ │ ├── polygon-autoclose.html │ │ ├── polygon-draggable.html │ │ ├── polygon-simple.html │ │ ├── polyline-complex.html │ │ ├── polyline-remove.html │ │ ├── polyline-simple.html │ │ ├── rectangle-event.html │ │ ├── rectangle-simple.html │ │ ├── rectangle-zoom.html │ │ ├── scripts │ │ ├── app.js │ │ ├── get-starbucks.js │ │ ├── markerclusterer.js │ │ ├── markerclusterer_packed.js │ │ ├── markers.js │ │ ├── plunkr.js │ │ ├── quakes.geo.json │ │ └── starbucks.json │ │ ├── shape.html │ │ ├── shape_circle_with_current_position.html │ │ ├── shape_circle_with_dynamic_address.html │ │ ├── shape_with_ng_repeat.html │ │ ├── street-view-panorama.html │ │ ├── street-view-panorama_container.html │ │ ├── street-view_road_trip.html │ │ ├── taxi-data.js │ │ ├── ui-bootstrap.html │ │ ├── ui-router.html │ │ └── user-editable-shapes.html └── underscore │ ├── .bower.json │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── underscore-min.js │ ├── underscore-min.map │ └── underscore.js ├── speakers.json └── templates ├── agenda.html ├── event.html ├── menu.html ├── partials └── agenda-event.html ├── speakers.html └── venue.html /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "www/lib" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Specifies intentionally untracked files to ignore when using Git 2 | # http://git-scm.com/docs/gitignore 3 | 4 | node_modules/ 5 | platforms/ 6 | plugins/ 7 | .DS_Store 8 | 9 | .*.sw* 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 startapplabs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ionic JSConfUY workshop", 3 | "description": "A simple Ionic app for JSConfUY 2015", 4 | "repository": "https://github.com/startapplabs/jsconfuy", 5 | "logo": "https://dl.dropboxusercontent.com/u/30873364/ionWorkshop/logo.png", 6 | "keywords": ["ionic", "javascript", "jsconf", "jsconfuy"] 7 | } 8 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsconfuy", 3 | "private": "true", 4 | "devDependencies": { 5 | "ionic": "driftyco/ionic-bower#1.0.0-rc.3" 6 | }, 7 | "dependencies": { 8 | "underscore": "~1.8.3" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var gutil = require('gulp-util'); 3 | var bower = require('bower'); 4 | var concat = require('gulp-concat'); 5 | var sass = require('gulp-sass'); 6 | var minifyCss = require('gulp-minify-css'); 7 | var rename = require('gulp-rename'); 8 | var sh = require('shelljs'); 9 | 10 | var paths = { 11 | sass: ['./scss/**/*.scss'] 12 | }; 13 | 14 | gulp.task('default', ['sass']); 15 | 16 | gulp.task('sass', function(done) { 17 | gulp.src('./scss/ionic.app.scss') 18 | .pipe(sass()) 19 | .pipe(gulp.dest('./www/css/')) 20 | .pipe(minifyCss({ 21 | keepSpecialComments: 0 22 | })) 23 | .pipe(rename({ extname: '.min.css' })) 24 | .pipe(gulp.dest('./www/css/')) 25 | .on('end', done); 26 | }); 27 | 28 | gulp.task('watch', function() { 29 | gulp.watch(paths.sass, ['sass']); 30 | }); 31 | 32 | gulp.task('install', ['git-check'], function() { 33 | return bower.commands.install() 34 | .on('log', function(data) { 35 | gutil.log('bower', gutil.colors.cyan(data.id), data.message); 36 | }); 37 | }); 38 | 39 | gulp.task('git-check', function(done) { 40 | if (!sh.which('git')) { 41 | console.log( 42 | ' ' + gutil.colors.red('Git is not installed.'), 43 | '\n Git, the version control system, is required to download Ionic.', 44 | '\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.', 45 | '\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.' 46 | ); 47 | process.exit(1); 48 | } 49 | done(); 50 | }); 51 | -------------------------------------------------------------------------------- /ionic.project: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsconfuy", 3 | "app_id": "7364750e", 4 | "gulpStartupTasks": [ 5 | "sass", 6 | "watch" 7 | ], 8 | "watchPatterns": [ 9 | "www/**/*", 10 | "!www/lib/**/*" 11 | ] 12 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsconfuy", 3 | "version": "1.0.0", 4 | "description": "jsconfuy: An Ionic project", 5 | "dependencies": { 6 | "express": "~4.4.3", 7 | "gulp": "^3.5.6", 8 | "gulp-sass": "^1.3.3", 9 | "gulp-concat": "^2.2.0", 10 | "gulp-minify-css": "^0.3.0", 11 | "gulp-rename": "^1.2.0" 12 | }, 13 | "devDependencies": { 14 | "bower": "^1.3.3", 15 | "gulp-util": "^2.2.14", 16 | "shelljs": "^0.3.0" 17 | }, 18 | "cordovaPlugins": [ 19 | "org.apache.cordova.device", 20 | "org.apache.cordova.console", 21 | "com.ionic.keyboard" 22 | ], 23 | "cordovaPlatforms": [ 24 | "android" 25 | ] 26 | } -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-40.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-40@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-50.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-50@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-60.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-60@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-60@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-72.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-72@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-76.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-76@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-small.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-small@2x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon-small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon-small@3x.png -------------------------------------------------------------------------------- /resources/ios/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon.png -------------------------------------------------------------------------------- /resources/ios/icon/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/icon/icon@2x.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-568h@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-568h@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-667h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-667h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape-736h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-Landscape-736h.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-Landscape@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Landscape~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-Landscape~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-Portrait@2x~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default-Portrait~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default-Portrait~ipad.png -------------------------------------------------------------------------------- /resources/ios/splash/Default@2x~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default@2x~iphone.png -------------------------------------------------------------------------------- /resources/ios/splash/Default~iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/ios/splash/Default~iphone.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/resources/splash.png -------------------------------------------------------------------------------- /scss/event.scss: -------------------------------------------------------------------------------- 1 | .nav-bar-title{ 2 | text-transform: capitalize; 3 | } 4 | 5 | .icon.button.share-event::before 6 | { 7 | margin-top:0px !important; 8 | } 9 | 10 | .event-view{ 11 | background: $content-bg; 12 | 13 | .speaker-image{ 14 | height: 100vw; 15 | } 16 | 17 | .event-details{ 18 | min-height: 70px; 19 | padding: 22px; 20 | background-color: darken($content-color, 10); 21 | margin-top: -8px; 22 | 23 | .event-title{ 24 | color: $top-bar-color; 25 | font-size: 16px; 26 | @include cssCalc("font-size", "#{($font-size)} + 4px"); 27 | font-weight: 500; 28 | display:block; 29 | } 30 | .event-speakers{ 31 | color: $main-menu-bg; 32 | @include cssCalc("font-size", "#{($font-size)} + 2px"); 33 | font-weight: 400; 34 | display:block; 35 | 36 | 37 | .event-speaker{ 38 | color: inherit; 39 | font-weight: 600; 40 | } 41 | 42 | .event-speaker-concat{ 43 | color: inherit; 44 | font-weight: 400; 45 | } 46 | } 47 | } 48 | .event-description{ 49 | @include cssCalc("font-size", "#{($font-size)} + 2px"); 50 | padding:20px; 51 | 52 | ul{ 53 | list-style: inherit; 54 | // -webkit-padding-start: 40px; 55 | padding-left: 40px; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /scss/ionic.app.scss: -------------------------------------------------------------------------------- 1 | /* 2 | To customize the look and feel of Ionic, you can override the variables 3 | in ionic's _variables.scss file. 4 | 5 | For example, you might change some of the default colors: 6 | 7 | $light: #fff !default; 8 | $stable: #f8f8f8 !default; 9 | $positive: #387ef5 !default; 10 | $calm: #11c1f3 !default; 11 | $balanced: #33cd5f !default; 12 | $energized: #ffc900 !default; 13 | $assertive: #ef473a !default; 14 | $royal: #886aea !default; 15 | $dark: #444 !default; 16 | */ 17 | 18 | // The path for our ionicons font files, relative to the built CSS in www/css 19 | $ionicons-font-path: "../lib/ionic/fonts" !default; 20 | 21 | // Include all of Ionic 22 | @import "www/lib/ionic/scss/ionic"; 23 | 24 | // Include custom styles 25 | @import "scss/jsconfuy"; 26 | @import "scss/main-menu"; 27 | @import "scss/speakers"; 28 | @import "scss/venue"; 29 | @import "scss/agenda"; 30 | @import "scss/event"; 31 | -------------------------------------------------------------------------------- /scss/jsconfuy.scss: -------------------------------------------------------------------------------- 1 | @mixin cssCalc($property, $expression) { 2 | #{$property}: calc(#{$expression}); 3 | } 4 | 5 | @mixin flexbox() { 6 | display: -webkit-box; 7 | display: -moz-box; 8 | display: -ms-flexbox; 9 | display: -webkit-flex; 10 | display: flex; 11 | } 12 | 13 | @mixin flex-wrap($value) { 14 | flex-wrap: $value; 15 | -webkit-flex-wrap: $value; 16 | } 17 | 18 | 19 | $content-bg: #EAEAEA; 20 | $content-color: #444444; 21 | 22 | $top-bar-bg: #254164; 23 | $top-bar-color: #FFFFFF; 24 | 25 | $loading-color: #FFFFFF; 26 | 27 | $main-menu-bg: #FFC900; 28 | $main-menu-color: #FFFFFF; 29 | 30 | $loading-color: #FFFFFF; 31 | 32 | $speaker-actions-bg: #FFFFFF; 33 | 34 | $workshop-bg-color: #00B454; 35 | $talk-bg-color: #FF7C00; 36 | $keynote-bg-color: #FF3900; 37 | $global-bg-color: #DDDDDD; 38 | $event-color: #FFFFFF; 39 | 40 | $get-directions-btn-bg: #419e61; 41 | $get-directions-btn-color: #FFFFFF; 42 | 43 | //App settings 44 | $category-margin: 20px; 45 | $font-size:12px; 46 | $menu-title-font-size: 30px; 47 | $venue-map-porcentage: 65; 48 | 49 | *{ 50 | color: $content-color; 51 | } 52 | 53 | .bar.app-top-bar 54 | { 55 | background-color: $top-bar-bg; 56 | 57 | .title 58 | { 59 | color: $top-bar-color !important; 60 | * 61 | { 62 | color: $top-bar-color !important; 63 | } 64 | } 65 | 66 | .button 67 | { 68 | color: $top-bar-color !important; 69 | * 70 | { 71 | color: $top-bar-color !important; 72 | } 73 | } 74 | } 75 | 76 | .menu-header-bar{ 77 | background-color: $top-bar-bg; 78 | 79 | .menu-header-bar-title{ 80 | color: $top-bar-color; 81 | } 82 | } 83 | 84 | .loading-container .loading 85 | { 86 | * 87 | { 88 | color: $loading-color; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /scss/main-menu.scss: -------------------------------------------------------------------------------- 1 | .platform-ios 2 | { 3 | ion-list .list 4 | { 5 | margin-top: $ios-statusbar-height; 6 | } 7 | } 8 | 9 | .main-menu 10 | { 11 | ion-content 12 | { 13 | background-color: $main-menu-bg; 14 | } 15 | 16 | .menu-header-bar-title 17 | { 18 | font-size: $menu-title-font-size; 19 | font-weight: 500; 20 | color: $main-menu-color; 21 | position: absolute; 22 | bottom: $category-margin/2; 23 | right: $category-margin; 24 | margin:0px; 25 | 26 | .uy 27 | { 28 | color: $top-bar-bg; 29 | font-weight: 600; 30 | } 31 | } 32 | 33 | ion-item.item 34 | { 35 | border-right:none; 36 | border-left:none; 37 | border-color: rgba(darken($main-menu-color, 30), .2); 38 | background-color: $main-menu-bg; 39 | 40 | .item-content 41 | { 42 | background-color: $main-menu-bg; 43 | padding: $category-margin; 44 | padding-right: $category-margin * 3; 45 | text-align:right; 46 | 47 | .icon 48 | { 49 | width: ($category-margin * 3)/2; 50 | right: $category-margin; 51 | left: initial; 52 | } 53 | 54 | .icon:before 55 | { 56 | color: $top-bar-bg; 57 | @include cssCalc("font-size", "#{($menu-title-font-size)} - 4px"); 58 | } 59 | } 60 | 61 | .item-content.activated 62 | { 63 | background-color: lighten($main-menu-bg, 10); 64 | } 65 | 66 | .menu-text 67 | { 68 | color: $main-menu-color; 69 | font-weight:500; 70 | } 71 | } 72 | 73 | ion-item.item:first-child 74 | { 75 | border-top:none; 76 | } 77 | 78 | ion-item.item:last-child 79 | { 80 | border-bottom:none; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /scss/speakers.scss: -------------------------------------------------------------------------------- 1 | .speakers-view{ 2 | background: $content-bg; 3 | 4 | .speaker 5 | { 6 | .item.title 7 | { 8 | background-color: $main-menu-bg; 9 | } 10 | 11 | .item-image 12 | { 13 | border-top: none; 14 | } 15 | } 16 | 17 | .speaker-name{ 18 | text-align: center; 19 | text-transform: uppercase; 20 | color: $top-bar-bg; 21 | font-weight: bold; 22 | // font-size: 18px; 23 | @include cssCalc("font-size", "#{($font-size)} + 6px"); 24 | } 25 | .speaker-bio{ 26 | margin-top:0px; 27 | } 28 | 29 | .speaker-tags 30 | { 31 | margin-bottom: 10px; 32 | 33 | .speaker-tags-list 34 | { 35 | @include flexbox(); 36 | @include flex-wrap(wrap); 37 | } 38 | 39 | .badge 40 | { 41 | position: initial; 42 | margin: 4px 2px; 43 | background-color: $main-menu-bg; 44 | } 45 | 46 | .speaker-tag-item 47 | { 48 | text-align:center; 49 | } 50 | } 51 | 52 | .speaker-buttons 53 | { 54 | background-color: $speaker-actions-bg; 55 | 56 | .row, 57 | .col 58 | { 59 | padding:0px; 60 | } 61 | 62 | .button 63 | { 64 | margin:0px; 65 | border-color: $top-bar-bg; 66 | color: $top-bar-bg; 67 | 68 | &.activated{ 69 | background-color: $top-bar-bg; 70 | color: $top-bar-color; 71 | } 72 | } 73 | 74 | 75 | 76 | .col:first-child 77 | { 78 | margin-right:8px; 79 | } 80 | 81 | .col:last-child 82 | { 83 | margin-left:8px; 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /scss/venue.scss: -------------------------------------------------------------------------------- 1 | .venue-view 2 | { 3 | .map 4 | { 5 | @include cssCalc("height", "(((100vh - #{($bar-height)}) * #{($venue-map-porcentage)}) /100)"); 6 | } 7 | 8 | .venue-location 9 | { 10 | @include cssCalc("height", "(((100vh - #{($bar-height)}) * (100 - #{($venue-map-porcentage)})) /100)"); 11 | border-bottom: none; 12 | 13 | .row 14 | { 15 | height: 50%; 16 | margin:0px; 17 | } 18 | 19 | .venue-name 20 | { 21 | margin-bottom:5px; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | app = express(); 3 | 4 | app.use(express.static('www')); 5 | 6 | // CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests 7 | app.all('*', function(req, res, next) { 8 | res.header("Access-Control-Allow-Origin", "*"); 9 | res.header("Access-Control-Allow-Headers", "X-Requested-With"); 10 | next(); 11 | }); 12 | 13 | // API Routes 14 | // app.get('/blah', routeHandler); 15 | 16 | app.set('port', process.env.PORT || 5000); 17 | 18 | app.listen(app.get('port'), function () { 19 | console.log('Express server listening on port ' + app.get('port')); 20 | }); 21 | -------------------------------------------------------------------------------- /www/css/style.css: -------------------------------------------------------------------------------- 1 | /* Empty. Add your own CSS if you like */ 2 | -------------------------------------------------------------------------------- /www/img/ember.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/ember.png -------------------------------------------------------------------------------- /www/img/ionic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/ionic.png -------------------------------------------------------------------------------- /www/img/speakers/adolfo_builes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/adolfo_builes.jpg -------------------------------------------------------------------------------- /www/img/speakers/adrian_mugnolo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/adrian_mugnolo.png -------------------------------------------------------------------------------- /www/img/speakers/agustin_haller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/agustin_haller.jpg -------------------------------------------------------------------------------- /www/img/speakers/alex_sexton.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/alex_sexton.jpg -------------------------------------------------------------------------------- /www/img/speakers/angelina_fabbro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/angelina_fabbro.jpg -------------------------------------------------------------------------------- /www/img/speakers/chris_miller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/chris_miller.jpg -------------------------------------------------------------------------------- /www/img/speakers/ciro_nunes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/ciro_nunes.jpg -------------------------------------------------------------------------------- /www/img/speakers/damian_schenkelman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/damian_schenkelman.jpg -------------------------------------------------------------------------------- /www/img/speakers/dayana_jabif.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/dayana_jabif.jpg -------------------------------------------------------------------------------- /www/img/speakers/eric_schoffstall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/eric_schoffstall.jpg -------------------------------------------------------------------------------- /www/img/speakers/guillermo_paz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/guillermo_paz.jpg -------------------------------------------------------------------------------- /www/img/speakers/james_halliday.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/james_halliday.jpg -------------------------------------------------------------------------------- /www/img/speakers/jaydson_gomes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/jaydson_gomes.jpg -------------------------------------------------------------------------------- /www/img/speakers/jean_charles_sisk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/jean_charles_sisk.jpg -------------------------------------------------------------------------------- /www/img/speakers/jeremy_morrell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/jeremy_morrell.png -------------------------------------------------------------------------------- /www/img/speakers/julian_duque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/julian_duque.jpg -------------------------------------------------------------------------------- /www/img/speakers/leonardo_garcia_crespo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/leonardo_garcia_crespo.jpg -------------------------------------------------------------------------------- /www/img/speakers/lourdes_montano.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/lourdes_montano.jpg -------------------------------------------------------------------------------- /www/img/speakers/martin_gontovnikas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/martin_gontovnikas.jpg -------------------------------------------------------------------------------- /www/img/speakers/martin_naumann.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/martin_naumann.jpg -------------------------------------------------------------------------------- /www/img/speakers/mathias_bynens.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/mathias_bynens.jpg -------------------------------------------------------------------------------- /www/img/speakers/mathias_rodriguez.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/mathias_rodriguez.png -------------------------------------------------------------------------------- /www/img/speakers/matias_volpe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/matias_volpe.jpg -------------------------------------------------------------------------------- /www/img/speakers/matthew_podwysocki.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/matthew_podwysocki.jpg -------------------------------------------------------------------------------- /www/img/speakers/maximiliano_fierro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/maximiliano_fierro.jpg -------------------------------------------------------------------------------- /www/img/speakers/michael_cetrulo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/michael_cetrulo.jpg -------------------------------------------------------------------------------- /www/img/speakers/nicolas_bevacqua.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/nicolas_bevacqua.jpg -------------------------------------------------------------------------------- /www/img/speakers/pablo_chiappetti.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/pablo_chiappetti.jpg -------------------------------------------------------------------------------- /www/img/speakers/rafael_specht.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/rafael_specht.jpg -------------------------------------------------------------------------------- /www/img/speakers/sam_saccone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/sam_saccone.jpg -------------------------------------------------------------------------------- /www/img/speakers/santiago_ferreira.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/santiago_ferreira.png -------------------------------------------------------------------------------- /www/img/speakers/sergio_gianazza.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/sergio_gianazza.jpg -------------------------------------------------------------------------------- /www/img/speakers/valeri_karpov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/img/speakers/valeri_karpov.png -------------------------------------------------------------------------------- /www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /www/js/directives.js: -------------------------------------------------------------------------------- 1 | angular.module('jsconfuy.directives', []) 2 | 3 | .directive('agendaEvent', function() { 4 | return { 5 | templateUrl: 'templates/partials/agenda-event.html' 6 | }; 7 | }) 8 | ; 9 | -------------------------------------------------------------------------------- /www/js/filters.js: -------------------------------------------------------------------------------- 1 | angular.module('jsconfuy.filters', []) 2 | 3 | .filter('rawHtml', ['$sce', function($sce){ 4 | return function(val) { 5 | return $sce.trustAsHtml(val); 6 | }; 7 | }]); 8 | -------------------------------------------------------------------------------- /www/js/services.js: -------------------------------------------------------------------------------- 1 | angular.module('jsconfuy.services', []) 2 | 3 | .service('Speakers', function ($http, $q){ 4 | 5 | this.get = function() { 6 | var dfd = $q.defer(); 7 | 8 | $http.get('speakers.json') 9 | .success(function(data) { 10 | dfd.resolve(data); 11 | }) 12 | .error(function(data) { 13 | dfd.reject(data); 14 | }); 15 | 16 | return dfd.promise; 17 | }; 18 | }) 19 | 20 | .service('Agenda', function ($http, $q){ 21 | 22 | this.get = function() { 23 | var dfd = $q.defer(); 24 | 25 | $http.get('agenda.json') 26 | .success(function(data) { 27 | 28 | var day1 = _.filter(data, function(event){ return event.date =="day1" }), 29 | day2 = _.filter(data, function(event){ return event.date =="day2" }); 30 | 31 | dfd.resolve({ 32 | "day1": day1, 33 | "day2": day2 34 | }); 35 | }) 36 | .error(function(data) { 37 | dfd.reject(data); 38 | }); 39 | 40 | return dfd.promise; 41 | }; 42 | 43 | this.getEvent = function(eventId){ 44 | var dfd = $q.defer(); 45 | 46 | $http.get('agenda.json') 47 | .success(function(data) { 48 | var event = _.find(data, {id: eventId}); 49 | dfd.resolve(event); 50 | }) 51 | .error(function(data) { 52 | dfd.reject(data); 53 | }); 54 | 55 | return dfd.promise; 56 | }; 57 | }) 58 | 59 | ; 60 | -------------------------------------------------------------------------------- /www/lib/angular-animate/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.3.13", 4 | "main": "./angular-animate.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.3.13" 8 | }, 9 | "homepage": "https://github.com/angular/bower-angular-animate", 10 | "_release": "1.3.13", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "v1.3.13", 14 | "commit": "f18cb98590471ad9c1e5ae0e57178e9ecb8d384c" 15 | }, 16 | "_source": "git://github.com/angular/bower-angular-animate.git", 17 | "_target": "1.3.13", 18 | "_originalSource": "angular-animate" 19 | } -------------------------------------------------------------------------------- /www/lib/angular-animate/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.3.13", 4 | "main": "./angular-animate.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.3.13" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /www/lib/angular-animate/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-animate", 3 | "version": "1.3.13", 4 | "description": "AngularJS module for animations", 5 | "main": "angular-animate.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "animation", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /www/lib/angular-sanitize/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.3.13", 4 | "main": "./angular-sanitize.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.3.13" 8 | }, 9 | "homepage": "https://github.com/angular/bower-angular-sanitize", 10 | "_release": "1.3.13", 11 | "_resolution": { 12 | "type": "version", 13 | "tag": "v1.3.13", 14 | "commit": "ee7a595d32ae566701da29873eb1dfb466e3cfef" 15 | }, 16 | "_source": "git://github.com/angular/bower-angular-sanitize.git", 17 | "_target": "1.3.13", 18 | "_originalSource": "angular-sanitize" 19 | } -------------------------------------------------------------------------------- /www/lib/angular-sanitize/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.3.13", 4 | "main": "./angular-sanitize.js", 5 | "ignore": [], 6 | "dependencies": { 7 | "angular": "1.3.13" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /www/lib/angular-sanitize/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-sanitize", 3 | "version": "1.3.13", 4 | "description": "AngularJS module for sanitizing HTML", 5 | "main": "angular-sanitize.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "html", 18 | "client-side" 19 | ], 20 | "author": "Angular Core Team ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/angular/angular.js/issues" 24 | }, 25 | "homepage": "http://angularjs.org" 26 | } 27 | -------------------------------------------------------------------------------- /www/lib/angular-ui-router/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-ui-router", 3 | "version": "0.2.13", 4 | "main": "./release/angular-ui-router.js", 5 | "dependencies": { 6 | "angular": ">= 1.0.8" 7 | }, 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "component.json", 13 | "package.json", 14 | "lib", 15 | "config", 16 | "sample", 17 | "test", 18 | "tests", 19 | "ngdoc_assets", 20 | "Gruntfile.js", 21 | "files.js" 22 | ], 23 | "homepage": "https://github.com/angular-ui/ui-router", 24 | "_release": "0.2.13", 25 | "_resolution": { 26 | "type": "version", 27 | "tag": "0.2.13", 28 | "commit": "c3d543aae43d4600512520a0d70723ac31f2cb62" 29 | }, 30 | "_source": "git://github.com/angular-ui/ui-router.git", 31 | "_target": "0.2.13", 32 | "_originalSource": "angular-ui-router" 33 | } -------------------------------------------------------------------------------- /www/lib/angular-ui-router/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2014 The AngularUI Team, Karsten Sperling 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /www/lib/angular-ui-router/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-ui-router", 3 | "version": "0.2.13", 4 | "main": "./release/angular-ui-router.js", 5 | "dependencies": { 6 | "angular": ">= 1.0.8" 7 | }, 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "component.json", 13 | "package.json", 14 | "lib", 15 | "config", 16 | "sample", 17 | "test", 18 | "tests", 19 | "ngdoc_assets", 20 | "Gruntfile.js", 21 | "files.js" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /www/lib/angular-ui-router/src/stateFilters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc filter 3 | * @name ui.router.state.filter:isState 4 | * 5 | * @requires ui.router.state.$state 6 | * 7 | * @description 8 | * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}. 9 | */ 10 | $IsStateFilter.$inject = ['$state']; 11 | function $IsStateFilter($state) { 12 | var isFilter = function (state) { 13 | return $state.is(state); 14 | }; 15 | isFilter.$stateful = true; 16 | return isFilter; 17 | } 18 | 19 | /** 20 | * @ngdoc filter 21 | * @name ui.router.state.filter:includedByState 22 | * 23 | * @requires ui.router.state.$state 24 | * 25 | * @description 26 | * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}. 27 | */ 28 | $IncludedByStateFilter.$inject = ['$state']; 29 | function $IncludedByStateFilter($state) { 30 | var includesFilter = function (state) { 31 | return $state.includes(state); 32 | }; 33 | includesFilter.$stateful = true; 34 | return includesFilter; 35 | } 36 | 37 | angular.module('ui.router.state') 38 | .filter('isState', $IsStateFilter) 39 | .filter('includedByState', $IncludedByStateFilter); 40 | -------------------------------------------------------------------------------- /www/lib/angular-ui-router/src/viewScroll.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc object 3 | * @name ui.router.state.$uiViewScrollProvider 4 | * 5 | * @description 6 | * Provider that returns the {@link ui.router.state.$uiViewScroll} service function. 7 | */ 8 | function $ViewScrollProvider() { 9 | 10 | var useAnchorScroll = false; 11 | 12 | /** 13 | * @ngdoc function 14 | * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll 15 | * @methodOf ui.router.state.$uiViewScrollProvider 16 | * 17 | * @description 18 | * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for 19 | * scrolling based on the url anchor. 20 | */ 21 | this.useAnchorScroll = function () { 22 | useAnchorScroll = true; 23 | }; 24 | 25 | /** 26 | * @ngdoc object 27 | * @name ui.router.state.$uiViewScroll 28 | * 29 | * @requires $anchorScroll 30 | * @requires $timeout 31 | * 32 | * @description 33 | * When called with a jqLite element, it scrolls the element into view (after a 34 | * `$timeout` so the DOM has time to refresh). 35 | * 36 | * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor, 37 | * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}. 38 | */ 39 | this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) { 40 | if (useAnchorScroll) { 41 | return $anchorScroll; 42 | } 43 | 44 | return function ($element) { 45 | $timeout(function () { 46 | $element[0].scrollIntoView(); 47 | }, 0, false); 48 | }; 49 | }]; 50 | } 51 | 52 | angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); 53 | -------------------------------------------------------------------------------- /www/lib/angular/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.3.13", 4 | "main": "./angular.js", 5 | "ignore": [], 6 | "dependencies": {}, 7 | "homepage": "https://github.com/angular/bower-angular", 8 | "_release": "1.3.13", 9 | "_resolution": { 10 | "type": "version", 11 | "tag": "v1.3.13", 12 | "commit": "ad68cfecb69ff7cacb27813377ce9d95e072529b" 13 | }, 14 | "_source": "git://github.com/angular/bower-angular.git", 15 | "_target": "1.3.13", 16 | "_originalSource": "angular" 17 | } -------------------------------------------------------------------------------- /www/lib/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /www/lib/angular/angular.min.js.gzip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/angular/angular.min.js.gzip -------------------------------------------------------------------------------- /www/lib/angular/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.3.13", 4 | "main": "./angular.js", 5 | "ignore": [], 6 | "dependencies": { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /www/lib/angular/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular", 3 | "version": "1.3.13", 4 | "description": "HTML enhanced for web apps", 5 | "main": "angular.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/angular/angular.js.git" 12 | }, 13 | "keywords": [ 14 | "angular", 15 | "framework", 16 | "browser", 17 | "client-side" 18 | ], 19 | "author": "Angular Core Team ", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/angular/angular.js/issues" 23 | }, 24 | "homepage": "http://angularjs.org" 25 | } 26 | -------------------------------------------------------------------------------- /www/lib/ionic/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic", 3 | "version": "1.0.0-rc.3", 4 | "codename": "radium-raccoon", 5 | "homepage": "https://github.com/driftyco/ionic", 6 | "authors": [ 7 | "Max Lynch ", 8 | "Adam Bradley ", 9 | "Ben Sperry " 10 | ], 11 | "description": "Advanced HTML5 hybrid mobile app development framework.", 12 | "main": [ 13 | "css/ionic.css", 14 | "fonts/*", 15 | "js/ionic.js", 16 | "js/ionic-angular.js" 17 | ], 18 | "keywords": [ 19 | "mobile", 20 | "html5", 21 | "ionic", 22 | "cordova", 23 | "phonegap", 24 | "trigger", 25 | "triggerio", 26 | "angularjs", 27 | "angular" 28 | ], 29 | "license": "MIT", 30 | "private": false, 31 | "dependencies": { 32 | "angular": "1.3.13", 33 | "angular-animate": "1.3.13", 34 | "angular-sanitize": "1.3.13", 35 | "angular-ui-router": "0.2.13" 36 | }, 37 | "_release": "1.0.0-rc.3", 38 | "_resolution": { 39 | "type": "version", 40 | "tag": "v1.0.0-rc.3", 41 | "commit": "c55723a8fe5f13c9d5dc6a1844f4459c1d6e5adf" 42 | }, 43 | "_source": "git://github.com/driftyco/ionic-bower.git", 44 | "_target": "1.0.0-rc.3", 45 | "_originalSource": "driftyco/ionic-bower" 46 | } -------------------------------------------------------------------------------- /www/lib/ionic/README.md: -------------------------------------------------------------------------------- 1 | # ionic-bower 2 | 3 | Bower repository for [Ionic Framework](http://github.com/driftyco/ionic) 4 | 5 | ### Usage 6 | 7 | Include `js/ionic.bundle.js` to get ionic and all of its dependencies. 8 | 9 | Alternatively, include the individual ionic files with the dependencies separately. 10 | 11 | ### Versions 12 | 13 | To install the latest stable version, `bower install driftyco/ionic-bower#v1.0.0-beta.13` 14 | 15 | To install the latest nightly release, `bower install driftyco/ionic-bower#master` 16 | -------------------------------------------------------------------------------- /www/lib/ionic/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ionic", 3 | "version": "1.0.0-rc.3", 4 | "codename": "radium-raccoon", 5 | "homepage": "https://github.com/driftyco/ionic", 6 | "authors": [ 7 | "Max Lynch ", 8 | "Adam Bradley ", 9 | "Ben Sperry " 10 | ], 11 | "description": "Advanced HTML5 hybrid mobile app development framework.", 12 | "main": [ 13 | "css/ionic.css", 14 | "fonts/*", 15 | "js/ionic.js", 16 | "js/ionic-angular.js" 17 | ], 18 | "keywords": [ 19 | "mobile", 20 | "html5", 21 | "ionic", 22 | "cordova", 23 | "phonegap", 24 | "trigger", 25 | "triggerio", 26 | "angularjs", 27 | "angular" 28 | ], 29 | "license": "MIT", 30 | "private": false, 31 | "dependencies": { 32 | "angular": "1.3.13", 33 | "angular-animate": "1.3.13", 34 | "angular-sanitize": "1.3.13", 35 | "angular-ui-router": "0.2.13" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /www/lib/ionic/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ionic/fonts/ionicons.eot -------------------------------------------------------------------------------- /www/lib/ionic/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ionic/fonts/ionicons.ttf -------------------------------------------------------------------------------- /www/lib/ionic/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ionic/fonts/ionicons.woff -------------------------------------------------------------------------------- /www/lib/ionic/scss/_animations.scss: -------------------------------------------------------------------------------- 1 | 2 | // Slide up from the bottom, used for modals 3 | // ------------------------------- 4 | 5 | .slide-in-up { 6 | @include translate3d(0, 100%, 0); 7 | } 8 | .slide-in-up.ng-enter, 9 | .slide-in-up > .ng-enter { 10 | @include transition(all cubic-bezier(.1, .7, .1, 1) 400ms); 11 | } 12 | .slide-in-up.ng-enter-active, 13 | .slide-in-up > .ng-enter-active { 14 | @include translate3d(0, 0, 0); 15 | } 16 | 17 | .slide-in-up.ng-leave, 18 | .slide-in-up > .ng-leave { 19 | @include transition(all ease-in-out 250ms); 20 | } 21 | 22 | 23 | // Scale Out 24 | // Scale from hero (1 in this case) to zero 25 | // ------------------------------- 26 | 27 | @-webkit-keyframes scaleOut { 28 | from { -webkit-transform: scale(1); opacity: 1; } 29 | to { -webkit-transform: scale(0.8); opacity: 0; } 30 | } 31 | @keyframes scaleOut { 32 | from { transform: scale(1); opacity: 1; } 33 | to { transform: scale(0.8); opacity: 0; } 34 | } 35 | 36 | 37 | // Super Scale In 38 | // Scale from super (1.x) to duper (1 in this case) 39 | // ------------------------------- 40 | 41 | @-webkit-keyframes superScaleIn { 42 | from { -webkit-transform: scale(1.2); opacity: 0; } 43 | to { -webkit-transform: scale(1); opacity: 1 } 44 | } 45 | @keyframes superScaleIn { 46 | from { transform: scale(1.2); opacity: 0; } 47 | to { transform: scale(1); opacity: 1; } 48 | } 49 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_backdrop.scss: -------------------------------------------------------------------------------- 1 | 2 | .backdrop { 3 | position: fixed; 4 | top: 0; 5 | left: 0; 6 | z-index: $z-index-backdrop; 7 | 8 | width: 100%; 9 | height: 100%; 10 | 11 | background-color: $loading-backdrop-bg-color; 12 | 13 | visibility: hidden; 14 | opacity: 0; 15 | 16 | &.visible { 17 | visibility: visible; 18 | } 19 | &.active { 20 | opacity: 1; 21 | } 22 | 23 | @include transition($loading-backdrop-fadein-duration opacity linear); 24 | } 25 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_badge.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Badges 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .badge { 8 | @include badge-style($badge-default-bg, $badge-default-text); 9 | z-index: $z-index-badge; 10 | display: inline-block; 11 | padding: 3px 8px; 12 | min-width: 10px; 13 | border-radius: $badge-border-radius; 14 | vertical-align: baseline; 15 | text-align: center; 16 | white-space: nowrap; 17 | font-weight: $badge-font-weight; 18 | font-size: $badge-font-size; 19 | line-height: $badge-line-height; 20 | 21 | &:empty { 22 | display: none; 23 | } 24 | } 25 | 26 | //Be sure to override specificity of rule that 'badge color matches tab color by default' 27 | .tabs .tab-item .badge, 28 | .badge { 29 | &.badge-light { 30 | @include badge-style($badge-light-bg, $badge-light-text); 31 | } 32 | &.badge-stable { 33 | @include badge-style($badge-stable-bg, $badge-stable-text); 34 | } 35 | &.badge-positive { 36 | @include badge-style($badge-positive-bg, $badge-positive-text); 37 | } 38 | &.badge-calm { 39 | @include badge-style($badge-calm-bg, $badge-calm-text); 40 | } 41 | &.badge-assertive { 42 | @include badge-style($badge-assertive-bg, $badge-assertive-text); 43 | } 44 | &.badge-balanced { 45 | @include badge-style($badge-balanced-bg, $badge-balanced-text); 46 | } 47 | &.badge-energized { 48 | @include badge-style($badge-energized-bg, $badge-energized-text); 49 | } 50 | &.badge-royal { 51 | @include badge-style($badge-royal-bg, $badge-royal-text); 52 | } 53 | &.badge-dark { 54 | @include badge-style($badge-dark-bg, $badge-dark-text); 55 | } 56 | } 57 | 58 | // Quick fix for labels/badges in buttons 59 | .button .badge { 60 | position: relative; 61 | top: -1px; 62 | } 63 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_button-bar.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Button Bar 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .button-bar { 8 | @include display-flex(); 9 | @include flex(1); 10 | width: 100%; 11 | 12 | &.button-bar-inline { 13 | display: block; 14 | width: auto; 15 | 16 | @include clearfix(); 17 | 18 | > .button { 19 | width: auto; 20 | display: inline-block; 21 | float: left; 22 | } 23 | } 24 | } 25 | 26 | .button-bar > .button { 27 | @include flex(1); 28 | display: block; 29 | 30 | overflow: hidden; 31 | 32 | padding: 0 16px; 33 | 34 | width: 0; 35 | 36 | border-width: 1px 0px 1px 1px; 37 | border-radius: 0; 38 | text-align: center; 39 | text-overflow: ellipsis; 40 | white-space: nowrap; 41 | 42 | &:before, 43 | .icon:before { 44 | line-height: 44px; 45 | } 46 | 47 | &:first-child { 48 | border-radius: $button-border-radius 0px 0px $button-border-radius; 49 | } 50 | &:last-child { 51 | border-right-width: 1px; 52 | border-radius: 0px $button-border-radius $button-border-radius 0px; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_loaders.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Loaders (Spinners) 3 | * -------------------------------------------------- 4 | */ 5 | 6 | svg.loader { 7 | width: 28px; 8 | height: 28px; 9 | stroke: #333; 10 | fill: #333; 11 | } 12 | 13 | .loader-ios, 14 | .loader-ios-small { 15 | 16 | line { 17 | stroke: #69717d; 18 | } 19 | 20 | } 21 | 22 | .loader-android { 23 | 24 | circle { 25 | stroke: #4b8bf4; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_loading.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Loading 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .loading-container { 8 | position: absolute; 9 | left: 0; 10 | top: 0; 11 | right: 0; 12 | bottom: 0; 13 | 14 | z-index: $z-index-loading; 15 | 16 | @include display-flex(); 17 | @include justify-content(center); 18 | @include align-items(center); 19 | 20 | @include transition(0.2s opacity linear); 21 | visibility: hidden; 22 | opacity: 0; 23 | 24 | &:not(.visible) .icon { 25 | display: none; 26 | } 27 | &.visible { 28 | visibility: visible; 29 | } 30 | &.active { 31 | opacity: 1; 32 | } 33 | 34 | .loading { 35 | padding: $loading-padding; 36 | 37 | border-radius: $loading-border-radius; 38 | background-color: $loading-bg-color; 39 | 40 | color: $loading-text-color; 41 | 42 | text-align: center; 43 | text-overflow: ellipsis; 44 | font-size: $loading-font-size; 45 | 46 | h1, h2, h3, h4, h5, h6 { 47 | color: $loading-text-color; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_menu.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Menus 4 | * -------------------------------------------------- 5 | * Side panel structure 6 | */ 7 | 8 | .menu { 9 | position: absolute; 10 | top: 0; 11 | bottom: 0; 12 | z-index: $z-index-menu; 13 | overflow: hidden; 14 | 15 | min-height: 100%; 16 | max-height: 100%; 17 | width: $menu-width; 18 | 19 | background-color: $menu-bg; 20 | 21 | .scroll-content { 22 | z-index: $z-index-menu-scroll-content; 23 | } 24 | 25 | .bar-header { 26 | z-index: $z-index-menu-bar-header; 27 | } 28 | } 29 | 30 | .menu-content { 31 | @include transform(none); 32 | box-shadow: $menu-side-shadow; 33 | } 34 | 35 | .menu-open .menu-content .pane, 36 | .menu-open .menu-content .scroll-content { 37 | pointer-events: none; 38 | } 39 | 40 | .grade-b .menu-content, 41 | .grade-c .menu-content { 42 | @include box-sizing(content-box); 43 | right: -1px; 44 | left: -1px; 45 | border-right: 1px solid #ccc; 46 | border-left: 1px solid #ccc; 47 | box-shadow: none; 48 | } 49 | 50 | .menu-left { 51 | left: 0; 52 | } 53 | 54 | .menu-right { 55 | right: 0; 56 | } 57 | 58 | .aside-open.aside-resizing .menu-right { 59 | display: none; 60 | } 61 | 62 | .menu-animated { 63 | @include transition-transform($menu-animation-speed ease); 64 | } 65 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_progress.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Progress 4 | * -------------------------------------------------- 5 | */ 6 | 7 | progress { 8 | display: block; 9 | margin: $progress-margin; 10 | width: $progress-width; 11 | } 12 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_radio.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Radio Button Inputs 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .item-radio { 8 | padding: 0; 9 | 10 | &:hover { 11 | cursor: pointer; 12 | } 13 | } 14 | 15 | .item-radio .item-content { 16 | /* give some room to the right for the checkmark icon */ 17 | padding-right: $item-padding * 4; 18 | } 19 | 20 | .item-radio .radio-icon { 21 | /* checkmark icon will be hidden by default */ 22 | position: absolute; 23 | top: 0; 24 | right: 0; 25 | z-index: $z-index-item-radio; 26 | visibility: hidden; 27 | padding: $item-padding - 2; 28 | height: 100%; 29 | font-size: 24px; 30 | } 31 | 32 | .item-radio input { 33 | /* hide any radio button inputs elements (the ugly circles) */ 34 | position: absolute; 35 | left: -9999px; 36 | 37 | &:checked ~ .item-content { 38 | /* style the item content when its checked */ 39 | background: #f7f7f7; 40 | } 41 | 42 | &:checked ~ .radio-icon { 43 | /* show the checkmark icon when its checked */ 44 | visibility: visible; 45 | } 46 | } 47 | 48 | // Hack for Android to correctly display the checked item 49 | // http://timpietrusky.com/advanced-checkbox-hack 50 | .platform-android.grade-b .item-radio, 51 | .platform-android.grade-c .item-radio { 52 | -webkit-animation: androidCheckedbugfix infinite 1s; 53 | } 54 | @-webkit-keyframes androidCheckedbugfix { 55 | from { padding: 0; } 56 | to { padding: 0; } 57 | } 58 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_slide-box.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Slide Box 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .slider { 8 | position: relative; 9 | visibility: hidden; 10 | // Make sure items don't scroll over ever 11 | overflow: hidden; 12 | } 13 | 14 | .slider-slides { 15 | position: relative; 16 | height: 100%; 17 | } 18 | 19 | .slider-slide { 20 | position: relative; 21 | display: block; 22 | float: left; 23 | width: 100%; 24 | height: 100%; 25 | vertical-align: top; 26 | } 27 | 28 | .slider-slide-image { 29 | > img { 30 | width: 100%; 31 | } 32 | } 33 | 34 | .slider-pager { 35 | position: absolute; 36 | bottom: 20px; 37 | z-index: $z-index-slider-pager; 38 | width: 100%; 39 | height: 15px; 40 | text-align: center; 41 | 42 | .slider-pager-page { 43 | display: inline-block; 44 | margin: 0px 3px; 45 | width: 15px; 46 | color: #000; 47 | text-decoration: none; 48 | 49 | opacity: 0.3; 50 | 51 | &.active { 52 | @include transition(opacity 0.4s ease-in); 53 | opacity: 1; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_spinner.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Spinners 3 | * -------------------------------------------------- 4 | */ 5 | 6 | .spinner { 7 | svg { 8 | width: $spinner-width; 9 | height: $spinner-height; 10 | } 11 | 12 | stroke: $spinner-default-stroke; 13 | fill: $spinner-default-fill; 14 | 15 | &.spinner-light { 16 | stroke: $spinner-light-stroke; 17 | fill: $spinner-light-fill; 18 | } 19 | &.spinner-stable { 20 | stroke: $spinner-stable-stroke; 21 | fill: $spinner-stable-fill; 22 | } 23 | &.spinner-positive { 24 | stroke: $spinner-positive-stroke; 25 | fill: $spinner-positive-fill; 26 | } 27 | &.spinner-calm { 28 | stroke: $spinner-calm-stroke; 29 | fill: $spinner-calm-fill; 30 | } 31 | &.spinner-balanced { 32 | stroke: $spinner-balanced-stroke; 33 | fill: $spinner-balanced-fill; 34 | } 35 | &.spinner-assertive { 36 | stroke: $spinner-assertive-stroke; 37 | fill: $spinner-assertive-fill; 38 | } 39 | &.spinner-energized { 40 | stroke: $spinner-energized-stroke; 41 | fill: $spinner-energized-fill; 42 | } 43 | &.spinner-royal { 44 | stroke: $spinner-royal-stroke; 45 | fill: $spinner-royal-fill; 46 | } 47 | &.spinner-dark { 48 | stroke: $spinner-dark-stroke; 49 | fill: $spinner-dark-fill; 50 | } 51 | } 52 | 53 | .spinner-android { 54 | stroke: #4b8bf4; 55 | } 56 | 57 | .spinner-ios, 58 | .spinner-ios-small { 59 | stroke: #69717d; 60 | } 61 | 62 | .spinner-spiral { 63 | .stop1 { 64 | stop-color: $spinner-light-fill; 65 | stop-opacity: 0; 66 | } 67 | 68 | &.spinner-light { 69 | .stop1 { 70 | stop-color: $spinner-default-fill; 71 | } 72 | .stop2 { 73 | stop-color: $spinner-light-fill; 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/_split-pane.scss: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Split Pane 4 | * -------------------------------------------------- 5 | */ 6 | 7 | .split-pane { 8 | @include display-flex(); 9 | @include align-items(stretch); 10 | width: 100%; 11 | height: 100%; 12 | } 13 | 14 | .split-pane-menu { 15 | @include flex(0, 0, $split-pane-menu-width); 16 | 17 | overflow-y: auto; 18 | width: $split-pane-menu-width; 19 | height: 100%; 20 | border-right: 1px solid $split-pane-menu-border-color; 21 | 22 | @media all and (max-width: 568px) { 23 | border-right: none; 24 | } 25 | } 26 | 27 | .split-pane-content { 28 | @include flex(1, 0, auto); 29 | } 30 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/ionic.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | @import 4 | // Ionicons 5 | "ionicons/ionicons.scss", 6 | 7 | // Variables 8 | "mixins", 9 | "variables", 10 | 11 | // Base 12 | "reset", 13 | "scaffolding", 14 | "type", 15 | 16 | // Components 17 | "action-sheet", 18 | "backdrop", 19 | "bar", 20 | "tabs", 21 | "menu", 22 | "modal", 23 | "popover", 24 | "popup", 25 | "loading", 26 | "items", 27 | "list", 28 | "badge", 29 | "slide-box", 30 | "refresher", 31 | "spinner", 32 | 33 | // Forms 34 | "form", 35 | "checkbox", 36 | "toggle", 37 | "radio", 38 | "range", 39 | "select", 40 | "progress", 41 | 42 | // Buttons 43 | "button", 44 | "button-bar", 45 | 46 | // Util 47 | "grid", 48 | "util", 49 | "platform", 50 | 51 | // Animations 52 | "animations", 53 | "transitions"; 54 | -------------------------------------------------------------------------------- /www/lib/ionic/scss/ionicons/_ionicons-font.scss: -------------------------------------------------------------------------------- 1 | // Ionicons Font Path 2 | // -------------------------- 3 | 4 | @font-face { 5 | font-family: $ionicons-font-family; 6 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}"); 7 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}#iefix") format("embedded-opentype"), 8 | url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype"), 9 | url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"), 10 | url("#{$ionicons-font-path}/ionicons.svg?v=#{$ionicons-version}#Ionicons") format("svg"); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | 15 | .ion { 16 | display: inline-block; 17 | font-family: $ionicons-font-family; 18 | speak: none; 19 | font-style: normal; 20 | font-weight: normal; 21 | font-variant: normal; 22 | text-transform: none; 23 | text-rendering: auto; 24 | line-height: 1; 25 | -webkit-font-smoothing: antialiased; 26 | -moz-osx-font-smoothing: grayscale; 27 | } -------------------------------------------------------------------------------- /www/lib/ionic/scss/ionicons/ionicons.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | @import "ionicons-variables"; 3 | /*! 4 | Ionicons, v2.0.1 5 | Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ 6 | https://twitter.com/benjsperry https://twitter.com/ionicframework 7 | MIT License: https://github.com/driftyco/ionicons 8 | 9 | Android-style icons originally built by Google’s 10 | Material Design Icons: https://github.com/google/material-design-icons 11 | used under CC BY http://creativecommons.org/licenses/by/4.0/ 12 | Modified icons to fit ionicon’s grid from original. 13 | */ 14 | 15 | @import "ionicons-font"; 16 | @import "ionicons-icons"; 17 | -------------------------------------------------------------------------------- /www/lib/ngmap/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngmap", 3 | "version": "1.7.7", 4 | "main": "./build/scripts/ng-map.js", 5 | "homepage": "https://github.com/allenhwkim/angularjs-google-maps", 6 | "authors": [ 7 | "Allen Kim " 8 | ], 9 | "description": "The Simplest AngularJs Google Maps V3 Directive Module", 10 | "keywords": [ 11 | "angularjs", 12 | "angularjs-directive", 13 | "google-maps" 14 | ], 15 | "license": "MIT", 16 | "_release": "1.7.7", 17 | "_resolution": { 18 | "type": "version", 19 | "tag": "v1.7.7", 20 | "commit": "b5c956ee46c3f26e73312a4f7c607cb897dc54cc" 21 | }, 22 | "_source": "git://github.com/allenhwkim/angularjs-google-maps.git", 23 | "_target": "~1.7.7", 24 | "_originalSource": "ngmap", 25 | "_direct": true 26 | } -------------------------------------------------------------------------------- /www/lib/ngmap/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /www/lib/ngmap/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | nohup.out 3 | node_modules 4 | tmp 5 | *.log 6 | gh-pages 7 | -------------------------------------------------------------------------------- /www/lib/ngmap/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | script: 5 | - "gulp test" 6 | -------------------------------------------------------------------------------- /www/lib/ngmap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Allen Kim 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/.buildignore: -------------------------------------------------------------------------------- 1 | *.coffee -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef" : ["google", "MarkerCluster" ], 3 | "forin" : false, 4 | "-W089" : true 5 | } 6 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/app.js: -------------------------------------------------------------------------------- 1 | var ngMap = angular.module('ngMap', []); 2 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef" : [ "ngMap", "google", "MarkerCluster" ], 3 | "forin" : true 4 | } 5 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/bicycling-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name bicycling-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('bicyclingLayer', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | var getLayer = function(options, events) { 21 | var layer = new google.maps.BicyclingLayer(options); 22 | for (var eventName in events) { 23 | google.maps.event.addListener(layer, eventName, events[eventName]); 24 | } 25 | return layer; 26 | }; 27 | 28 | return { 29 | restrict: 'E', 30 | require: '^map', 31 | 32 | link: function(scope, element, attrs, mapController) { 33 | var orgAttrs = parser.orgAttributes(element); 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered); 37 | 38 | console.log('bicycling-layer options', options, 'events', events); 39 | 40 | var layer = getLayer(options, events); 41 | mapController.addObject('bicyclingLayers', layer); 42 | mapController.observeAttrSetObj(orgAttrs, attrs, layer); //observers 43 | element.bind('$destroy', function() { 44 | mapController.deleteObject('bicyclingLayers', layer); 45 | }); 46 | } 47 | }; // return 48 | }]); 49 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/cloud-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name cloud-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('cloudLayer', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | var getLayer = function(options, events) { 21 | var layer = new google.maps.weather.CloudLayer(options); 22 | for (var eventName in events) { 23 | google.maps.event.addListener(layer, eventName, events[eventName]); 24 | } 25 | return layer; 26 | }; 27 | 28 | return { 29 | restrict: 'E', 30 | require: '^map', 31 | 32 | link: function(scope, element, attrs, mapController) { 33 | var orgAttrs = parser.orgAttributes(element); 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered); 37 | console.log('cloud-layer options', options, 'events', events); 38 | 39 | var layer = getLayer(options, events); 40 | mapController.addObject('cloudLayers', layer); 41 | mapController.observeAttrSetObj(orgAttrs, attrs, layer); //observers 42 | element.bind('$destroy', function() { 43 | mapController.deleteObject('cloudLayers', layer); 44 | }); 45 | } 46 | }; // return 47 | }]); 48 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/dynamic-maps-engine-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name dynamic-maps-engine-layer 4 | * @description 5 | * Requires: map directive 6 | * Restrict To: Element 7 | * 8 | * @example 9 | * Example: 10 | * 11 | * 12 | * 13 | */ 14 | /*jshint -W089*/ 15 | ngMap.directive('dynamicMapsEngineLayer', ['Attr2Options', function(Attr2Options) { 16 | var parser = Attr2Options; 17 | 18 | var getDynamicMapsEngineLayer = function(options, events) { 19 | var layer = new google.maps.visualization.DynamicMapsEngineLayer(options); 20 | 21 | for (var eventName in events) { 22 | google.maps.event.addListener(layer, eventName, events[eventName]); 23 | } 24 | 25 | return layer; 26 | }; 27 | 28 | 29 | return { 30 | restrict: 'E', 31 | require: '^map', 32 | 33 | link: function(scope, element, attrs, mapController) { 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered, events); 37 | console.log('dynamic-maps-engine-layer options', options, 'events', events); 38 | 39 | var layer = getDynamicMapsEngineLayer(options, events); 40 | mapController.addObject('mapsEngineLayers', layer); 41 | } 42 | }; // return 43 | }]); 44 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/fusion-tables-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name fusion-tables-layer 4 | * @description 5 | * Requires: map directive 6 | * Restrict To: Element 7 | * 8 | * @example 9 | * Example: 10 | * 11 | * 14 | * 15 | * 16 | */ 17 | /*jshint -W089*/ 18 | ngMap.directive('fusionTablesLayer', ['Attr2Options', function(Attr2Options) { 19 | var parser = Attr2Options; 20 | 21 | var getLayer = function(options, events) { 22 | var layer = new google.maps.FusionTablesLayer(options); 23 | 24 | for (var eventName in events) { 25 | google.maps.event.addListener(layer, eventName, events[eventName]); 26 | } 27 | 28 | return layer; 29 | }; 30 | 31 | 32 | return { 33 | restrict: 'E', 34 | require: '^map', 35 | 36 | link: function(scope, element, attrs, mapController) { 37 | var filtered = parser.filter(attrs); 38 | var options = parser.getOptions(filtered); 39 | var events = parser.getEvents(scope, filtered, events); 40 | console.log('fusion-tables-layer options', options, 'events', events); 41 | 42 | var layer = getLayer(options, events); 43 | mapController.addObject('fusionTablesLayers', layer); 44 | } 45 | }; // return 46 | }]); 47 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/heatmap-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name heatmap-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('heatmapLayer', ['Attr2Options', '$window', function(Attr2Options, $window) { 18 | var parser = Attr2Options; 19 | 20 | return { 21 | restrict: 'E', 22 | require: '^map', 23 | 24 | link: function(scope, element, attrs, mapController) { 25 | var filtered = parser.filter(attrs); 26 | 27 | /** 28 | * set options 29 | */ 30 | var options = parser.getOptions(filtered); 31 | options.data = $window[attrs.data] || scope[attrs.data]; 32 | if (options.data instanceof Array) { 33 | options.data = new google.maps.MVCArray(options.data); 34 | } else { 35 | throw "invalid heatmap data"; 36 | } 37 | var layer = new google.maps.visualization.HeatmapLayer(options); 38 | 39 | /** 40 | * set events 41 | */ 42 | var events = parser.getEvents(scope, filtered); 43 | console.log('heatmap-layer options', layer, 'events', events); 44 | 45 | mapController.addObject('heatmapLayers', layer); 46 | } 47 | }; // return 48 | }]); 49 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/map-data.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name map-data 4 | * @description 5 | * set map data 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @param {String} method-name, run map.data[method-name] with attribute value 10 | * @example 11 | * Example: 12 | * 13 | * 14 | * 15 | * 16 | */ 17 | ngMap.directive('mapData', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | return { 21 | restrict: 'E', 22 | require: '^map', 23 | 24 | link: function(scope, element, attrs, mapController) { 25 | var filtered = parser.filter(attrs); 26 | var options = parser.getOptions(filtered); 27 | var events = parser.getEvents(scope, filtered, events); 28 | 29 | console.log('map-data options', options); 30 | scope.$on('mapInitialized', function(event, map) { 31 | /** 32 | * options 33 | */ 34 | for (var key in options) { 35 | if (key) { 36 | var val = options[key]; 37 | if (typeof scope[val] === "function") { 38 | map.data[key](scope[val]); 39 | } else { 40 | map.data[key](val); 41 | } 42 | } // if (key) 43 | } 44 | 45 | /** 46 | * events 47 | */ 48 | for (var eventName in events) { 49 | if (events[eventName]) { 50 | map.data.addListener(eventName, events[eventName]); 51 | } 52 | } 53 | }); 54 | } 55 | }; // return 56 | }]); 57 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/map-type.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name map-type 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('mapType', ['Attr2Options', '$window', function(Attr2Options, $window) { 18 | var parser = Attr2Options; 19 | 20 | return { 21 | restrict: 'E', 22 | require: '^map', 23 | 24 | link: function(scope, element, attrs, mapController) { 25 | var mapTypeName = attrs.name, mapTypeObject; 26 | if (!mapTypeName) { 27 | throw "invalid map-type name"; 28 | } 29 | if (attrs.object) { 30 | var __scope = scope[attrs.object] ? scope : $window; 31 | mapTypeObject = __scope[attrs.object]; 32 | if (typeof mapTypeObject == "function") { 33 | mapTypeObject = new mapTypeObject(); 34 | } 35 | } 36 | if (!mapTypeObject) { 37 | throw "invalid map-type object"; 38 | } 39 | 40 | scope.$on('mapInitialized', function(evt, map) { 41 | map.mapTypes.set(mapTypeName, mapTypeObject); 42 | }); 43 | mapController.addObject('mapTypes', mapTypeObject); 44 | } 45 | }; // return 46 | }]); 47 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/maps-engine-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name maps-engine-layer 4 | * @description 5 | * Requires: map directive 6 | * Restrict To: Element 7 | * 8 | * @example 9 | * Example: 10 | * 11 | * 12 | * 13 | */ 14 | /*jshint -W089*/ 15 | ngMap.directive('mapsEngineLayer', ['Attr2Options', function(Attr2Options) { 16 | var parser = Attr2Options; 17 | 18 | var getMapsEngineLayer = function(options, events) { 19 | var layer = new google.maps.visualization.MapsEngineLayer(options); 20 | 21 | for (var eventName in events) { 22 | google.maps.event.addListener(layer, eventName, events[eventName]); 23 | } 24 | 25 | return layer; 26 | }; 27 | 28 | 29 | return { 30 | restrict: 'E', 31 | require: '^map', 32 | 33 | link: function(scope, element, attrs, mapController) { 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered, events); 37 | console.log('maps-engine-layer options', options, 'events', events); 38 | 39 | var layer = getMapsEngineLayer(options, events); 40 | mapController.addObject('mapsEngineLayers', layer); 41 | } 42 | }; // return 43 | }]); 44 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/overlay-map-type.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name overlay-map-type 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('overlayMapType', ['Attr2Options', '$window', function(Attr2Options, $window) { 18 | var parser = Attr2Options; 19 | 20 | return { 21 | restrict: 'E', 22 | require: '^map', 23 | 24 | link: function(scope, element, attrs, mapController) { 25 | var overlayMapTypeObject; 26 | var initMethod = attrs.initMethod || "insertAt"; 27 | if (attrs.object) { 28 | var __scope = scope[attrs.object] ? scope : $window; 29 | overlayMapTypeObject = __scope[attrs.object]; 30 | if (typeof overlayMapTypeObject == "function") { 31 | overlayMapTypeObject = new overlayMapTypeObject(); 32 | } 33 | } 34 | if (!overlayMapTypeObject) { 35 | throw "invalid map-type object"; 36 | } 37 | 38 | scope.$on('mapInitialized', function(evt, map) { 39 | if (initMethod == "insertAt") { 40 | var index = parseInt(attrs.index, 10); 41 | map.overlayMapTypes.insertAt(index, overlayMapTypeObject); 42 | } else if (initMethod == "push") { 43 | map.overlayMapTypes.push(overlayMapTypeObject); 44 | } 45 | }); 46 | mapController.addObject('overlayMapTypes', overlayMapTypeObject); 47 | } 48 | }; // return 49 | }]); 50 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/traffic-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name traffic-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('trafficLayer', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | var getLayer = function(options, events) { 21 | var layer = new google.maps.TrafficLayer(options); 22 | for (var eventName in events) { 23 | google.maps.event.addListener(layer, eventName, events[eventName]); 24 | } 25 | return layer; 26 | }; 27 | 28 | return { 29 | restrict: 'E', 30 | require: '^map', 31 | 32 | link: function(scope, element, attrs, mapController) { 33 | var orgAttrs = parser.orgAttributes(element); 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered); 37 | console.log('traffic-layer options', options, 'events', events); 38 | 39 | var layer = getLayer(options, events); 40 | mapController.addObject('trafficLayers', layer); 41 | mapController.observeAttrSetObj(orgAttrs, attrs, layer); //observers 42 | element.bind('$destroy', function() { 43 | mapController.deleteObject('trafficLayers', layer); 44 | }); 45 | } 46 | }; // return 47 | }]); 48 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/transit-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name transit-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('transitLayer', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | var getLayer = function(options, events) { 21 | var layer = new google.maps.TransitLayer(options); 22 | for (var eventName in events) { 23 | google.maps.event.addListener(layer, eventName, events[eventName]); 24 | } 25 | return layer; 26 | }; 27 | 28 | return { 29 | restrict: 'E', 30 | require: '^map', 31 | 32 | link: function(scope, element, attrs, mapController) { 33 | var orgAttrs = parser.orgAttributes(element); 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered); 37 | console.log('transit-layer options', options, 'events', events); 38 | 39 | var layer = getLayer(options, events); 40 | mapController.addObject('transitLayers', layer); 41 | mapController.observeAttrSetObj(orgAttrs, attrs, layer); //observers 42 | element.bind('$destroy', function() { 43 | mapController.deleteObject('transitLayers', layer); 44 | }); 45 | } 46 | }; // return 47 | }]); 48 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/directives/weather-layer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc directive 3 | * @name weather-layer 4 | * @requires Attr2Options 5 | * @description 6 | * Requires: map directive 7 | * Restrict To: Element 8 | * 9 | * @example 10 | * Example: 11 | * 12 | * 13 | * 14 | * 15 | */ 16 | /*jshint -W089*/ 17 | ngMap.directive('weatherLayer', ['Attr2Options', function(Attr2Options) { 18 | var parser = Attr2Options; 19 | 20 | var getLayer = function(options, events) { 21 | var layer = new google.maps.weather.WeatherLayer(options); 22 | for (var eventName in events) { 23 | google.maps.event.addListener(layer, eventName, events[eventName]); 24 | } 25 | return layer; 26 | }; 27 | 28 | return { 29 | restrict: 'E', 30 | require: '^map', 31 | 32 | link: function(scope, element, attrs, mapController) { 33 | var orgAttrs = parser.orgAttributes(element); 34 | var filtered = parser.filter(attrs); 35 | var options = parser.getOptions(filtered); 36 | var events = parser.getEvents(scope, filtered); 37 | 38 | console.log('weather-layer options', options, 'events', events); 39 | 40 | var layer = getLayer(options, events); 41 | mapController.addObject('weatherLayers', layer); 42 | mapController.observeAttrSetObj(orgAttrs, attrs, layer); //observers 43 | element.bind('$destroy', function() { 44 | mapController.deleteObject('weatherLayers', layer); 45 | }); 46 | } 47 | }; // return 48 | }]); 49 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/services/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "predef" : [ "ngMap", "google", "MarkerCluster" ], 3 | "forin" : true 4 | } 5 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/services/geo_coder.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc service 3 | * @name GeoCoder 4 | * @description 5 | * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q) service for Google Geocoder service 6 | */ 7 | /* global google */ 8 | (function() { 9 | 'use strict'; 10 | var GeoCoder = function($q) { 11 | return { 12 | /** 13 | * @memberof GeoCoder 14 | * @param {Hash} options https://developers.google.com/maps/documentation/geocoding/#geocoding 15 | * @example 16 | * ``` 17 | * GeoCoder.geocode({address: 'the cn tower'}).then(function(result) { 18 | * //... do something with result 19 | * }); 20 | * ``` 21 | * @returns {HttpPromise} Future object 22 | */ 23 | geocode : function(options) { 24 | var deferred = $q.defer(); 25 | var geocoder = new google.maps.Geocoder(); 26 | geocoder.geocode(options, function (results, status) { 27 | if (status == google.maps.GeocoderStatus.OK) { 28 | deferred.resolve(results); 29 | } else { 30 | deferred.reject('Geocoder failed due to: '+ status); 31 | } 32 | }); 33 | return deferred.promise; 34 | } 35 | } 36 | }; 37 | 38 | angular.module('ngMap').service('GeoCoder', ['$q', GeoCoder]); 39 | })(); 40 | -------------------------------------------------------------------------------- /www/lib/ngmap/app/scripts/services/navigator_geolocation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @ngdoc service 3 | * @name NavigatorGeolocation 4 | * @description 5 | * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q) service for navigator.geolocation methods 6 | */ 7 | /* global google */ 8 | (function() { 9 | 'use strict'; 10 | 11 | var NavigatorGeolocation = function($q) { 12 | return { 13 | /** 14 | * @memberof NavigatorGeolocation 15 | * @param {function} success success callback function 16 | * @param {function} failure failure callback function 17 | * @example 18 | * ``` 19 | * NavigatorGeolocation.getCurrentPosition() 20 | * .then(function(position) { 21 | * var lat = position.coords.latitude, lng = position.coords.longitude; 22 | * .. do something lat and lng 23 | * }); 24 | * ``` 25 | * @returns {HttpPromise} Future object 26 | */ 27 | getCurrentPosition: function() { 28 | var deferred = $q.defer(); 29 | if (navigator.geolocation) { 30 | navigator.geolocation.getCurrentPosition( 31 | function(position) { 32 | deferred.resolve(position); 33 | }, function(evt) { 34 | console.error(evt); 35 | deferred.reject(evt); 36 | } 37 | ); 38 | } else { 39 | deferred.reject("Browser Geolocation service failed."); 40 | } 41 | return deferred.promise; 42 | }, 43 | 44 | watchPosition: function() { 45 | return "TODO"; 46 | }, 47 | 48 | clearWatch: function() { 49 | return "TODO"; 50 | } 51 | }; 52 | }; 53 | 54 | angular.module('ngMap').service('NavigatorGeolocation', ['$q', NavigatorGeolocation]); 55 | })(); 56 | -------------------------------------------------------------------------------- /www/lib/ngmap/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngmap", 3 | "version": "1.7.7", 4 | "main": "./build/scripts/ng-map.js", 5 | "homepage": "https://github.com/allenhwkim/angularjs-google-maps", 6 | "authors": [ 7 | "Allen Kim " 8 | ], 9 | "description": "The Simplest AngularJs Google Maps V3 Directive Module", 10 | "keywords": [ 11 | "angularjs", 12 | "angularjs-directive", 13 | "google-maps" 14 | ], 15 | "license": "MIT" 16 | } 17 | -------------------------------------------------------------------------------- /www/lib/ngmap/build/docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/build/docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/README.md: -------------------------------------------------------------------------------- 1 | The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://documentcloud.github.com/underscore/#template). 2 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/static/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/static/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/example.tmpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/examples.tmpl: -------------------------------------------------------------------------------- 1 | 8 |

9 | 10 |
11 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/exceptions.tmpl: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 | 9 |
10 |
11 |
12 |
13 |
14 | Type 15 |
16 |
17 | 18 |
19 |
20 |
21 |
22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/layout.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: <?js= title ?> 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

21 | 22 | 23 |
24 | 25 | 28 | 29 |
30 | 31 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/mainpage.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

8 | 9 | 10 | 11 |
12 |
13 |
14 | 15 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/members.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
6 |

7 | 8 | 9 |

10 | 11 |
12 |
13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 |
Type:
21 |
    22 |
  • 23 | 24 |
  • 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Fires:
32 |
    33 |
  • 34 |
35 | 36 | 37 | 38 |
Example 1? 's':'' ?>
39 | 40 | 41 |
42 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/returns.tmpl: -------------------------------------------------------------------------------- 1 | 5 |
6 | 7 |
8 | 9 | 10 | 11 |
12 |
13 | Type 14 |
15 |
16 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/source.tmpl: -------------------------------------------------------------------------------- 1 | 4 |
5 |
6 |
7 |
8 |
-------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/tutorial.tmpl: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 0) { ?> 5 |
    8 |
  • 9 |
10 | 11 | 12 |

13 |
14 | 15 |
16 | 17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/jsdoc/template/tmpl/type.tmpl: -------------------------------------------------------------------------------- 1 | 5 | 6 | | 7 | -------------------------------------------------------------------------------- /www/lib/ngmap/config/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // The main suite of Protractor tests. 2 | exports.config = { 3 | seleniumServerJar: __dirname + 4 | '/../node_modules/gulp-protractor' + 5 | '/node_modules/protractor/selenium/selenium-server-standalone-2.45.0.jar', 6 | 7 | browserName: 'chrome', 8 | 9 | // Exclude patterns are relative to this directory. 10 | // exclude: [], 11 | 12 | jasmineNodeOpts: { 13 | showColors: true, 14 | isVerbose: true, // List all tests in the console 15 | includeStackTrace: true, 16 | defaultTimeoutInterval: 30000 17 | } 18 | 19 | //baseUrl: 'http://localhost:8081' 20 | }; 21 | -------------------------------------------------------------------------------- /www/lib/ngmap/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngmap", 3 | "version": "1.7.7", 4 | "main": "build/scripts/ng-map.js", 5 | "dependencies": { 6 | "glob": "~4.0.2", 7 | "gulp": "^3.8.0" 8 | }, 9 | "engines": { 10 | "node": ">=0.8.0" 11 | }, 12 | "scripts": { 13 | "test": "gulp test" 14 | }, 15 | "devDependencies": { 16 | "angular-jsdoc": "^0.3.3", 17 | "compression": "~1.0.6", 18 | "express": "~4.4.1", 19 | "gulp-bump": "~0.1.9", 20 | "gulp-clean": "~0.3.0", 21 | "gulp-concat": "~2.2.0", 22 | "gulp-connect": "^2.2.0", 23 | "gulp-debug": "~0.3.0", 24 | "gulp-html-replace": "~1.1.0", 25 | "gulp-protractor": "0.0.12", 26 | "gulp-rename": "~1.2.0", 27 | "gulp-replace": "~0.3.0", 28 | "gulp-rev": "~0.4.0", 29 | "gulp-shell": "~0.2.7", 30 | "gulp-strip-debug": "~0.3.0", 31 | "gulp-tap": "~0.1.1", 32 | "gulp-uglify": "~0.3.0", 33 | "gulp-util": "~2.2.16", 34 | "jsdoc": "~3.3.0-alpha8", 35 | "karma-chrome-launcher": "~0.1.4", 36 | "karma-jasmine": "~0.1.5", 37 | "karma-ng-html2js-preprocessor": "~0.1.0", 38 | "karma-phantomjs-launcher": "~0.1.4", 39 | "run-sequence": "~0.3.6", 40 | "selenium-webdriver": "^2.45.1", 41 | "through2": "~0.5.1", 42 | "zeparser": "0.0.7" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /www/lib/ngmap/spec/directives/street_view_panorama_spec.js: -------------------------------------------------------------------------------- 1 | /* global google, waitsFor */ 2 | 3 | describe('street-view-panorama', function() { 4 | var elm, scope; 5 | 6 | /* mock Attr2Options, knowns as parser */ 7 | var MockAttr2Options = function() { 8 | var hashFilter = function(hash) { 9 | var newHash = {}; 10 | for (var key in hash) { 11 | if (hash[key].match(regexp)) { 12 | newHash[key] = hash[key]; 13 | } 14 | }; 15 | return newHash; 16 | }; 17 | return { 18 | filter: function(attrs) {return attrs;}, 19 | getOptions: function(attrs) {return attrs;}, 20 | getControlOptions: function(attrs) {return hashFilter(attrs, /ControlOptions$/);}, 21 | getEvents: function(attrs) {return hashFilter(attrs, /^on[A-E]/);} 22 | }; 23 | }; 24 | 25 | // load the marker code 26 | beforeEach(function() { 27 | module(function($provide) { 28 | $provide.value('Attr2Options', MockAttr2Options); 29 | }); 30 | module('ngMap'); 31 | inject(function($rootScope, $compile) { 32 | elm = angular.element( 33 | '' + 34 | ' ' + 35 | ' ' + 36 | ''); 37 | scope = $rootScope; 38 | $compile(elm)(scope); 39 | scope.$digest(); 40 | waitsFor(function() { 41 | return scope.map.getStreetView().getPosition(); 42 | }); 43 | }); 44 | }); 45 | 46 | it('should set map streetview with options ', function() { 47 | var svp = scope.map.getStreetView(); 48 | expect(svp instanceof google.maps.StreetViewPanorama).toBe(true); 49 | expect(svp.getPosition().lat()).toEqual(40.688738); 50 | }); 51 | 52 | }); 53 | -------------------------------------------------------------------------------- /www/lib/ngmap/spec/services/street_view_spec.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ngmap/spec/services/street_view_spec.js -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/aerial-rotate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 32 | 33 | 34 | 35 |
36 | 37 | 42 | 43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/aerial-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/control-custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 27 | 28 | 29 | 30 |
31 | Custom Control
32 | This custom control simply returns the user to Chicago when clicked 33 |
34 | 35 | 36 |
Home1
37 |
38 |
39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/control-disableUI.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Disabling the default UI 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/control-options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Control options 22 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/control-positioning.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Control options 22 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/control-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Adding controls to the map 22 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/event-arguments.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 30 | 31 | 32 | 33 |
34 | Assigning arguments in UI events 35 |
36 | Click map to place markers 37 | 38 | 39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/event-domlistener.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 25 | 26 | 27 | 28 | We add a DOM event here to show an alert if the DIV containing the map is clicked. 29 |
30 |
31 | Click the map to see the alert. 32 | 33 | 34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/groundoverlay-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/hello_map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/icon-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/images/beachflag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ngmap/testapp/images/beachflag.png -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ionicthemes/building-a-complete-mobile-app-with-ionic-framework/9a227b5f3f47ba3d1941224b55ce9293655f9ed5/www/lib/ngmap/testapp/images/spinner.gif -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/infowindow_geolookup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | Hi, I am here.
25 | Hi, I am here.
26 | Hi, I am here.
27 | Hi, I am here.
28 | Hi, I am here.
29 | Hi, I am here.
30 | Hi, I am here.
31 |
32 |
33 |
34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-bicycling.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-data-quakes-default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-data-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-data-style.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 25 | 26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-fusiontables-heatmap.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-fusiontables-query.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 28 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-fusiontables-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 27 | 28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-georss.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-kml-features.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 27 | 28 | 29 |
30 | 31 | 33 | 34 | {{description}} 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-kml.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-mapsengine.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-traffic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-transit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/layer-weather.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map-geolocation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | Showing current location with infoWindow
23 | Note: This example requires that you consent to location sharing when 24 | prompted by your browser. If you see a blank space instead of the map, this 25 | is probably because you have denied permission for location sharing. 26 |
27 | 28 | 29 | Loation found using HTML5. 30 | 31 | 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_fit_bounds.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_geo_fallback_center.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_lazy_init.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 26 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | As defined at, https://developers.google.com/maps/documentation/javascript/reference#MapOptions, you can add any attributes except control-related to map attributes. 22 | 23 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_with_current_position.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 26 | 27 | 28 | 29 | NOTE: open console, then see the message from callback 30 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_with_dynamic_address.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 |
Address : 28 | 29 | 30 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/map_with_dynamic_center.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 |
27 | 28 |
Latigude : 29 |
Longitude : 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/mapsenginelayer-noauth-layerid.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Circle Simple
23 | This example creates circles on the map, representing 24 | populations in North America. 25 | 26 | 30 | 31 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/mapsenginelayer-noauth-layerkey.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 28 | 29 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/maptype-styled-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker-symbol-custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Marker Symbol Custom
22 | This example uses SVG path notation to add a vector-based symbol 23 | as the icon for a marker. The resulting icon is a star-shaped symbol 24 | with a pale yellow fill and a thick yellow border. 25 | 26 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker-symbol-predefined.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Marker Symbol Predefined
22 | This example uses a symbol to add a vector-based icon to a marker. 23 | The symbol uses one of the predefined vector paths ('CIRCLE') supplied by the 24 | Google Maps JavaScript API. 25 | 26 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_icon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_on_street_view.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_with_address.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_with_current_position.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_with_dynamic_address.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Address : 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_with_dynamic_position.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Latigude : 31 |
Longitude : 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/marker_with_info_window.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 33 | 34 | 35 | 36 |
37 | 38 | 39 | 40 |
41 | 42 | 43 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/multiple_maps_on_a_page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/overlay-symbol-arrow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 |
28 | 29 | 37 | 38 | 39 |
40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/overlay-symbol-dashed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/polygon-autoclose.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/polygon-draggable.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 31 | 32 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/polygon-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/polyline-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/rectangle-simple.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/rectangle-zoom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 26 | 27 | 28 | 29 |
30 | 34 | 40 | 41 | 42 |
43 | 44 | 45 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/scripts/app.js: -------------------------------------------------------------------------------- 1 | var app = angular.module("myApp", ["ngMap", "plunkr"]); 2 | app.run(function($window, $rootScope) { 3 | /* collect the javascript errors */ 4 | $rootScope.jsErrors = []; 5 | $window.onerror = function (message, url, lineNo) { 6 | $rootScope.jsErrors.push({ 7 | error:message, 8 | url: url, 9 | lineNumber: lineNo 10 | }); 11 | return true; 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/scripts/get-starbucks.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This is to generate startbucks.json, locations of all starbucks world wide 3 | */ 4 | var request = require("request"); 5 | 6 | var base = "http://opendata.socrata.com/resource/92ua-293q.json"; 7 | var stores = []; 8 | 9 | for (var i=0; i<21000; i+=1000) { 10 | var url = base + "?$offset=" + i; 11 | request({ url: url, json: true }, function (error, response, body) { 12 | if (!error && response.statusCode === 200) { 13 | stores = stores.concat(body); 14 | } 15 | if (stores.length > 20000) { 16 | console.log(JSON.stringify(stores)); 17 | } 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/shape_circle_with_current_position.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/shape_circle_with_dynamic_address.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 |
27 | 28 | 32 | 36 | 37 | 38 |
Address : 39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/street-view-panorama.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 33 | 34 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/street-view-panorama_container.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 23 | 24 | 25 | 27 | 28 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /www/lib/ngmap/testapp/user-editable-shapes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /www/lib/underscore/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.8.3", 4 | "main": "underscore.js", 5 | "keywords": [ 6 | "util", 7 | "functional", 8 | "server", 9 | "client", 10 | "browser" 11 | ], 12 | "ignore": [ 13 | "docs", 14 | "test", 15 | "*.yml", 16 | "CNAME", 17 | "index.html", 18 | "favicon.ico", 19 | "CONTRIBUTING.md", 20 | ".*", 21 | "component.json", 22 | "package.json", 23 | "karma.*" 24 | ], 25 | "homepage": "https://github.com/jashkenas/underscore", 26 | "_release": "1.8.3", 27 | "_resolution": { 28 | "type": "version", 29 | "tag": "1.8.3", 30 | "commit": "e4743ab712b8ab42ad4ccb48b155034d02394e4d" 31 | }, 32 | "_source": "git://github.com/jashkenas/underscore.git", 33 | "_target": "~1.8.3", 34 | "_originalSource": "underscore", 35 | "_direct": true 36 | } -------------------------------------------------------------------------------- /www/lib/underscore/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative 2 | Reporters & Editors 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /www/lib/underscore/README.md: -------------------------------------------------------------------------------- 1 | __ 2 | /\ \ __ 3 | __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ 4 | /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ 5 | \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ 6 | \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ 7 | \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ 8 | \ \____/ 9 | \/___/ 10 | 11 | Underscore.js is a utility-belt library for JavaScript that provides 12 | support for the usual functional suspects (each, map, reduce, filter...) 13 | without extending any core JavaScript objects. 14 | 15 | For Docs, License, Tests, and pre-packed downloads, see: 16 | http://underscorejs.org 17 | 18 | Underscore is an open-sourced component of DocumentCloud: 19 | https://github.com/documentcloud 20 | 21 | Many thanks to our contributors: 22 | https://github.com/jashkenas/underscore/contributors 23 | -------------------------------------------------------------------------------- /www/lib/underscore/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "underscore", 3 | "version": "1.8.3", 4 | "main": "underscore.js", 5 | "keywords": ["util", "functional", "server", "client", "browser"], 6 | "ignore" : ["docs", "test", "*.yml", "CNAME", "index.html", "favicon.ico", "CONTRIBUTING.md", ".*", "component.json", "package.json", "karma.*"] 7 | } 8 | -------------------------------------------------------------------------------- /www/templates/agenda.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Agenda 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |
23 | 24 |
25 |
26 | -------------------------------------------------------------------------------- /www/templates/event.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{event.type}} 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 | By 21 | {{speaker.name}}{{$last ? '' : ' & '}} 22 | 23 |
24 |
25 |

26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /www/templates/menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /www/templates/partials/agenda-event.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{event.time_from}} 4 | to {{event.time_to}} 5 |
6 | 7 |

8 |

9 | {{speaker.name}}{{$last ? '' : ', '}} 10 |

11 |

{{event.room}}

12 |
{{event.type}}
13 |
14 |
15 |

16 |

{{event.room}}

17 |
18 |
19 | -------------------------------------------------------------------------------- /www/templates/speakers.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Speakers 4 | 5 | 6 |
7 |
8 |

{{speaker.name}}

9 |
10 |
11 | 12 |
13 |
14 |
15 |
    16 |
  • 17 | {{tag}} 18 |
  • 19 |
20 |
21 |

22 |

23 |
24 |
25 | 28 |
29 | My talk 30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /www/templates/venue.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Venue 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 |
12 |

Antel Auditorium

13 |

Guatemala 1075
Montevideo, Uruguay

14 |
15 |
16 |
17 |
18 |
19 | --------------------------------------------------------------------------------