Commit 66ee5529fa54890e5aed7d863edda0c7d69f2851
0 parents
Exists in
master
initial commit
Showing
65 changed files
with
2413 additions
and
0 deletions
Show diff stats
bower.json
File was created | 1 | { | |
2 | "name": "imigrationcrm-ui", | ||
3 | "description": "Smart-Office", | ||
4 | "homepage": "https://github.com/micrum/angular-material-admin", | ||
5 | "license": "MIT", | ||
6 | "version": "1.2.0", | ||
7 | "dependencies": { | ||
8 | "AngularJS-Toaster": "angularjs-toaster#~1.2.0", | ||
9 | "angular": "1.4.9", | ||
10 | "angular-animate": "~1.4.9", | ||
11 | "angular-cookies": "~1.4.9", | ||
12 | "angular-material": "1.0.0", | ||
13 | "angular-material-data-table": "~0.9.14", | ||
14 | "angular-messages": "~1.5.2", | ||
15 | "angular-nvd3": "1.0.0-rc.2", | ||
16 | "angular-resource": "~1.5.0", | ||
17 | "angular-sanitize": "~1.4.9", | ||
18 | "angular-touch": "~1.4.9", | ||
19 | "angular-ui-router": "~0.2.17", | ||
20 | "components-font-awesome": "~4.5.0", | ||
21 | "jquery": "~2.1.1", | ||
22 | "angular-chart.js": "^1.0.3", | ||
23 | "alasql": "0.2.7", | ||
24 | "angular-web-notification": "^1.2.7", | ||
25 | "angular-live-set": "*" | ||
26 | }, | ||
27 | "devDependencies": { | ||
28 | "angular-mocks": "~1.4.9" | ||
29 | }, | ||
30 | "resolutions": { | ||
31 | "angular": "~1.4.9" | ||
32 | } | ||
33 | } | ||
34 |
e2e/main.po.js
File was created | 1 | /** | |
2 | * This file uses the Page Object pattern to define the main page for tests | ||
3 | * https://docs.google.com/presentation/d/1B6manhG0zEXkC-H-tPo2vwU06JhL8w9-XCF9oehXzAQ | ||
4 | */ | ||
5 | |||
6 | 'use strict'; | ||
7 | |||
8 | var MainPage = function() { | ||
9 | }; | ||
10 | |||
11 | module.exports = new MainPage(); | ||
12 |
e2e/main.spec.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | describe('The main view', function () { | ||
4 | var page; | ||
5 | |||
6 | beforeEach(function () { | ||
7 | browser.get('http://localhost:3000/index.html'); | ||
8 | page = require('./main.po'); | ||
9 | }); | ||
10 | |||
11 | }); | ||
12 |
gulp/build.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var paths = gulp.paths; | ||
6 | |||
7 | var $ = require('gulp-load-plugins')({ | ||
8 | pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del'] | ||
9 | }); | ||
10 | |||
11 | gulp.task('partials', function () { | ||
12 | return gulp.src([ | ||
13 | paths.src + '/{app,components}/**/*.html', | ||
14 | paths.tmp + '/{app,components}/**/*.html' | ||
15 | ]) | ||
16 | .pipe($.minifyHtml({ | ||
17 | empty: true, | ||
18 | spare: true, | ||
19 | quotes: true | ||
20 | })) | ||
21 | .pipe($.angularTemplatecache('templateCacheHtml.js', { | ||
22 | module: 'didPanelApp' | ||
23 | })) | ||
24 | .pipe(gulp.dest(paths.tmp + '/partials/')) | ||
25 | }); | ||
26 | |||
27 | gulp.task('html', ['inject', 'partials'], function () { | ||
28 | var partialsInjectFile = gulp.src(paths.tmp + '/partials/templateCacheHtml.js', { read: false }); | ||
29 | var partialsInjectOptions = { | ||
30 | starttag: '<!-- inject:partials -->', | ||
31 | ignorePath: paths.tmp + '/partials', | ||
32 | addRootSlash: false | ||
33 | }; | ||
34 | |||
35 | var htmlFilter = $.filter('*.html'); | ||
36 | var jsFilter = $.filter('**/*.js'); | ||
37 | var cssFilter = $.filter('**/*.css'); | ||
38 | var assets; | ||
39 | |||
40 | return gulp.src(paths.tmp + '/serve/*.html') | ||
41 | .pipe($.inject(partialsInjectFile, partialsInjectOptions)) | ||
42 | .pipe(assets = $.useref.assets()) | ||
43 | .pipe($.rev()) | ||
44 | .pipe(jsFilter) | ||
45 | .pipe($.ngAnnotate()) | ||
46 | .pipe($.uglify({preserveComments: $.uglifySaveLicense})) | ||
47 | .pipe(jsFilter.restore()) | ||
48 | .pipe(cssFilter) | ||
49 | .pipe($.csso()) | ||
50 | .pipe(cssFilter.restore()) | ||
51 | .pipe(assets.restore()) | ||
52 | .pipe($.useref()) | ||
53 | .pipe($.revReplace()) | ||
54 | .pipe(htmlFilter) | ||
55 | .pipe($.minifyHtml({ | ||
56 | empty: true, | ||
57 | spare: true, | ||
58 | quotes: true | ||
59 | })) | ||
60 | .pipe(htmlFilter.restore()) | ||
61 | .pipe(gulp.dest(paths.dist + '/')) | ||
62 | .pipe($.size({ title: paths.dist + '/', showFiles: true })); | ||
63 | }); | ||
64 | |||
65 | gulp.task('images', function () { | ||
66 | return gulp.src(paths.src + '/assets/images/**/*') | ||
67 | .pipe(gulp.dest(paths.dist + '/assets/images/')); | ||
68 | }); | ||
69 | |||
70 | gulp.task('fonts', function () { | ||
71 | return gulp.src($.mainBowerFiles()) | ||
72 | .pipe($.filter('**/*.{eot,svg,ttf,woff}')) | ||
73 | .pipe($.flatten()) | ||
74 | .pipe(gulp.dest(paths.dist + '/fonts/')); | ||
75 | }); | ||
76 | |||
77 | gulp.task('misc', function () { | ||
78 | return gulp.src(paths.src + '/**/*.ico') | ||
79 | .pipe(gulp.dest(paths.dist + '/')); | ||
80 | }); | ||
81 | |||
82 | gulp.task('clean', function (done) { | ||
83 | $.del([paths.dist + '/', paths.tmp + '/'], done); | ||
84 | }); | ||
85 | |||
86 | gulp.task('build', ['html', 'images', 'fonts', 'misc']); | ||
87 |
gulp/deploy.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | var ghPages = require('gulp-gh-pages'); | ||
5 | |||
6 | gulp.task('deploy', function() { | ||
7 | return gulp.src('./dist/**/*') | ||
8 | .pipe(ghPages()); | ||
9 | }); | ||
10 |
gulp/e2e-tests.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var $ = require('gulp-load-plugins')(); | ||
6 | |||
7 | var browserSync = require('browser-sync'); | ||
8 | |||
9 | var paths = gulp.paths; | ||
10 | |||
11 | // Downloads the selenium webdriver | ||
12 | gulp.task('webdriver-update', $.protractor.webdriver_update); | ||
13 | |||
14 | gulp.task('webdriver-standalone', $.protractor.webdriver_standalone); | ||
15 | |||
16 | function runProtractor (done) { | ||
17 | |||
18 | gulp.src(paths.e2e + '/**/*.js') | ||
19 | .pipe($.protractor.protractor({ | ||
20 | configFile: 'protractor.conf.js', | ||
21 | })) | ||
22 | .on('error', function (err) { | ||
23 | // Make sure failed tests cause gulp to exit non-zero | ||
24 | throw err; | ||
25 | }) | ||
26 | .on('end', function () { | ||
27 | // Close browser sync server | ||
28 | browserSync.exit(); | ||
29 | done(); | ||
30 | }); | ||
31 | } | ||
32 | |||
33 | gulp.task('protractor', ['protractor:src']); | ||
34 | gulp.task('protractor:src', ['serve:e2e', 'webdriver-update'], runProtractor); | ||
35 | gulp.task('protractor:dist', ['serve:e2e-dist', 'webdriver-update'], runProtractor); | ||
36 |
gulp/inject.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var paths = gulp.paths; | ||
6 | |||
7 | var $ = require('gulp-load-plugins')(); | ||
8 | |||
9 | var wiredep = require('wiredep').stream; | ||
10 | |||
11 | gulp.task('inject', ['styles'], function () { | ||
12 | |||
13 | var injectStyles = gulp.src([ | ||
14 | paths.tmp + '/serve/{app,components}/**/*.css', | ||
15 | '!' + paths.tmp + '/serve/app/vendor.css' | ||
16 | ], { read: false }); | ||
17 | |||
18 | var injectScripts = gulp.src([ | ||
19 | paths.src + '/{app,components}/**/*.js', | ||
20 | '!' + paths.src + '/{app,components}/**/*.spec.js', | ||
21 | '!' + paths.src + '/{app,components}/**/*.mock.js' | ||
22 | ]).pipe($.angularFilesort()); | ||
23 | |||
24 | var injectOptions = { | ||
25 | ignorePath: [paths.src, paths.tmp + '/serve'], | ||
26 | addRootSlash: false | ||
27 | }; | ||
28 | |||
29 | var wiredepOptions = { | ||
30 | directory: 'bower_components', | ||
31 | exclude: [/bootstrap\.css/, /foundation\.css/] | ||
32 | }; | ||
33 | |||
34 | return gulp.src(paths.src + '/*.html') | ||
35 | .pipe($.inject(injectStyles, injectOptions)) | ||
36 | .pipe($.inject(injectScripts, injectOptions)) | ||
37 | .pipe(wiredep(wiredepOptions)) | ||
38 | .pipe(gulp.dest(paths.tmp + '/serve')); | ||
39 | |||
40 | }); | ||
41 |
gulp/proxy.js
File was created | 1 | /*jshint unused:false */ | |
2 | |||
3 | /*************** | ||
4 | |||
5 | This file allow to configure a proxy system plugged into BrowserSync | ||
6 | in order to redirect backend requests while still serving and watching | ||
7 | files from the web project | ||
8 | |||
9 | IMPORTANT: The proxy is disabled by default. | ||
10 | |||
11 | If you want to enable it, watch at the configuration options and finally | ||
12 | change the `module.exports` at the end of the file | ||
13 | |||
14 | ***************/ | ||
15 | |||
16 | 'use strict'; | ||
17 | |||
18 | var httpProxy = require('http-proxy'); | ||
19 | var chalk = require('chalk'); | ||
20 | |||
21 | /* | ||
22 | * Location of your backend server | ||
23 | */ | ||
24 | var proxyTarget = 'http://server/context/'; | ||
25 | |||
26 | var proxy = httpProxy.createProxyServer({ | ||
27 | target: proxyTarget | ||
28 | }); | ||
29 | |||
30 | proxy.on('error', function(error, req, res) { | ||
31 | res.writeHead(500, { | ||
32 | 'Content-Type': 'text/plain' | ||
33 | }); | ||
34 | |||
35 | console.error(chalk.red('[Proxy]'), error); | ||
36 | }); | ||
37 | |||
38 | /* | ||
39 | * The proxy middleware is an Express middleware added to BrowserSync to | ||
40 | * handle backend request and proxy them to your backend. | ||
41 | */ | ||
42 | function proxyMiddleware(req, res, next) { | ||
43 | /* | ||
44 | * This test is the switch of each request to determine if the request is | ||
45 | * for a static file to be handled by BrowserSync or a backend request to proxy. | ||
46 | * | ||
47 | * The existing test is a standard check on the files extensions but it may fail | ||
48 | * for your needs. If you can, you could also check on a context in the url which | ||
49 | * may be more reliable but can't be generic. | ||
50 | */ | ||
51 | if (/\.(html|css|js|png|jpg|jpeg|gif|ico|xml|rss|txt|eot|svg|ttf|woff|cur)(\?((r|v|rel|rev)=[\-\.\w]*)?)?$/.test(req.url)) { | ||
52 | next(); | ||
53 | } else { | ||
54 | proxy.web(req, res); | ||
55 | } | ||
56 | } | ||
57 | |||
58 | /* | ||
59 | * This is where you activate or not your proxy. | ||
60 | * | ||
61 | * The first line activate if and the second one ignored it | ||
62 | */ | ||
63 | |||
64 | //module.exports = [proxyMiddleware]; | ||
65 | module.exports = []; | ||
66 |
gulp/server.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var paths = gulp.paths; | ||
6 | |||
7 | var util = require('util'); | ||
8 | |||
9 | var browserSync = require('browser-sync'); | ||
10 | |||
11 | var middleware = require('./proxy'); | ||
12 | |||
13 | function browserSyncInit(baseDir, files, browser) { | ||
14 | browser = browser === undefined ? 'default' : browser; | ||
15 | |||
16 | var routes = null; | ||
17 | if(baseDir === paths.src || (util.isArray(baseDir) && baseDir.indexOf(paths.src) !== -1)) { | ||
18 | routes = { | ||
19 | '/bower_components': 'bower_components' | ||
20 | }; | ||
21 | } | ||
22 | |||
23 | browserSync.instance = browserSync.init(files, { | ||
24 | startPath: '/', | ||
25 | server: { | ||
26 | baseDir: baseDir, | ||
27 | middleware: middleware, | ||
28 | routes: routes | ||
29 | }, | ||
30 | browser: browser | ||
31 | }); | ||
32 | } | ||
33 | |||
34 | gulp.task('serve', ['watch'], function () { | ||
35 | browserSyncInit([ | ||
36 | paths.tmp + '/serve', | ||
37 | paths.src | ||
38 | ], [ | ||
39 | paths.tmp + '/serve/{app,components}/**/*.css', | ||
40 | paths.src + '/{app,components}/**/*.js', | ||
41 | paths.src + 'src/assets/images/**/*', | ||
42 | paths.tmp + '/serve/*.html', | ||
43 | paths.tmp + '/serve/{app,components}/**/*.html', | ||
44 | paths.src + '/{app,components}/**/*.html' | ||
45 | ]); | ||
46 | }); | ||
47 | |||
48 | gulp.task('serve:dist', ['build'], function () { | ||
49 | browserSyncInit(paths.dist); | ||
50 | }); | ||
51 | |||
52 | gulp.task('serve:e2e', ['inject'], function () { | ||
53 | browserSyncInit([paths.tmp + '/serve', paths.src], null, []); | ||
54 | }); | ||
55 | |||
56 | gulp.task('serve:e2e-dist', ['build'], function () { | ||
57 | browserSyncInit(paths.dist, null, []); | ||
58 | }); | ||
59 |
gulp/styles.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var paths = gulp.paths; | ||
6 | |||
7 | var $ = require('gulp-load-plugins')(); | ||
8 | |||
9 | gulp.task('styles', function () { | ||
10 | |||
11 | var sassOptions = { | ||
12 | style: 'expanded' | ||
13 | }; | ||
14 | |||
15 | var injectFiles = gulp.src([ | ||
16 | paths.src + '/{app,components}/**/*.scss', | ||
17 | '!' + paths.src + '/app/index.scss', | ||
18 | '!' + paths.src + '/app/vendor.scss' | ||
19 | ], { read: false }); | ||
20 | |||
21 | var injectOptions = { | ||
22 | transform: function(filePath) { | ||
23 | filePath = filePath.replace(paths.src + '/app/', ''); | ||
24 | filePath = filePath.replace(paths.src + '/components/', '../components/'); | ||
25 | return '@import \'' + filePath + '\';'; | ||
26 | }, | ||
27 | starttag: '// injector', | ||
28 | endtag: '// endinjector', | ||
29 | addRootSlash: false | ||
30 | }; | ||
31 | |||
32 | var indexFilter = $.filter('index.scss'); | ||
33 | |||
34 | return gulp.src([ | ||
35 | paths.src + '/app/index.scss', | ||
36 | paths.src + '/app/vendor.scss' | ||
37 | ]) | ||
38 | .pipe(indexFilter) | ||
39 | .pipe($.inject(injectFiles, injectOptions)) | ||
40 | .pipe(indexFilter.restore()) | ||
41 | .pipe($.rubySass(sassOptions) | ||
42 | .on('error', function (err) { | ||
43 | console.error('Error!', err.message); | ||
44 | }) | ||
45 | ) | ||
46 | |||
47 | .pipe($.autoprefixer()) | ||
48 | .on('error', function handleError(err) { | ||
49 | console.error(err.toString()); | ||
50 | this.emit('end'); | ||
51 | }) | ||
52 | .pipe(gulp.dest(paths.tmp + '/serve/app/')); | ||
53 | }); | ||
54 |
gulp/unit-tests.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var $ = require('gulp-load-plugins')(); | ||
6 | |||
7 | var wiredep = require('wiredep'); | ||
8 | |||
9 | var paths = gulp.paths; | ||
10 | |||
11 | function runTests (singleRun, done) { | ||
12 | var bowerDeps = wiredep({ | ||
13 | directory: 'bower_components', | ||
14 | exclude: ['bootstrap-sass-official'], | ||
15 | dependencies: true, | ||
16 | devDependencies: true | ||
17 | }); | ||
18 | |||
19 | var testFiles = bowerDeps.js.concat([ | ||
20 | paths.src + '/{app,components}/**/*.js' | ||
21 | ]); | ||
22 | |||
23 | gulp.src(testFiles) | ||
24 | .pipe($.karma({ | ||
25 | configFile: 'karma.conf.js', | ||
26 | action: (singleRun)? 'run': 'watch' | ||
27 | })) | ||
28 | .on('error', function (err) { | ||
29 | // Make sure failed tests cause gulp to exit non-zero | ||
30 | throw err; | ||
31 | }); | ||
32 | } | ||
33 | |||
34 | gulp.task('test', function (done) { runTests(true /* singleRun */, done) }); | ||
35 | gulp.task('test:auto', function (done) { runTests(false /* singleRun */, done) }); | ||
36 |
gulp/watch.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | var paths = gulp.paths; | ||
6 | |||
7 | gulp.task('watch', ['inject'], function () { | ||
8 | gulp.watch([ | ||
9 | paths.src + '/*.html', | ||
10 | paths.src + '/{app,components}/**/*.scss', | ||
11 | paths.src + '/{app,components}/**/*.js', | ||
12 | 'bower.json' | ||
13 | ], ['inject']); | ||
14 | }); | ||
15 |
gulpfile.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var gulp = require('gulp'); | ||
4 | |||
5 | gulp.paths = { | ||
6 | src: 'src', | ||
7 | dist: 'dist', | ||
8 | tmp: '.tmp', | ||
9 | e2e: 'e2e' | ||
10 | }; | ||
11 | |||
12 | require('require-dir')('./gulp'); | ||
13 | |||
14 | gulp.task('default', ['clean'], function () { | ||
15 | gulp.start('build'); | ||
16 | }); | ||
17 |
karma.conf.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | module.exports = function(config) { | ||
4 | |||
5 | config.set({ | ||
6 | autoWatch : false, | ||
7 | |||
8 | frameworks: ['jasmine'], | ||
9 | |||
10 | browsers : ['PhantomJS'], | ||
11 | |||
12 | plugins : [ | ||
13 | 'karma-phantomjs-launcher', | ||
14 | 'karma-jasmine' | ||
15 | ] | ||
16 | }); | ||
17 | }; | ||
18 |
package.json
File was created | 1 | { | |
2 | "name": "imigrationCrm-ui", | ||
3 | "version": "1.2.0", | ||
4 | "dependencies": { | ||
5 | "angular-chart.js": "^1.0.3", | ||
6 | "lodash": "~4.6.1" | ||
7 | }, | ||
8 | "devDependencies": { | ||
9 | "browser-sync": "~1.7.1", | ||
10 | "chalk": "~0.5.1", | ||
11 | "del": "~0.1.3", | ||
12 | "gulp": "~3.9.0", | ||
13 | "gulp-angular-filesort": "~1.0.4", | ||
14 | "gulp-angular-templatecache": "~1.4.2", | ||
15 | "gulp-autoprefixer": "~2.0.0", | ||
16 | "gulp-consolidate": "~0.1.2", | ||
17 | "gulp-csso": "~0.2.9", | ||
18 | "gulp-filter": "~1.0.2", | ||
19 | "gulp-flatten": "~0.0.4", | ||
20 | "gulp-gh-pages": "^0.5.4", | ||
21 | "gulp-inject": "~1.0.2", | ||
22 | "gulp-jshint": "~1.9.0", | ||
23 | "gulp-karma": "~0.0.4", | ||
24 | "gulp-load-plugins": "~0.7.1", | ||
25 | "gulp-minify-html": "~0.1.7", | ||
26 | "gulp-ng-annotate": "~1.0.0", | ||
27 | "gulp-protractor": "~0.0.11", | ||
28 | "gulp-rename": "~1.2.0", | ||
29 | "gulp-replace": "~0.5.0", | ||
30 | "gulp-rev": "~2.0.1", | ||
31 | "gulp-rev-replace": "~0.3.1", | ||
32 | "gulp-ruby-sass": "~0.7.1", | ||
33 | "gulp-size": "~1.1.0", | ||
34 | "gulp-uglify": "~1.0.1", | ||
35 | "gulp-useref": "~1.0.2", | ||
36 | "http-proxy": "~1.7.0", | ||
37 | "jshint-stylish": "~1.0.0", | ||
38 | "karma-jasmine": "~0.3.1", | ||
39 | "karma-phantomjs-launcher": "~0.1.4", | ||
40 | "main-bower-files": "~2.4.0", | ||
41 | "protractor": "~1.4.0", | ||
42 | "require-dir": "~0.1.0", | ||
43 | "uglify-save-license": "~0.4.1", | ||
44 | "wiredep": "~2.2.0" | ||
45 | }, | ||
46 | "engines": { | ||
47 | "node": ">=0.10.0" | ||
48 | }, | ||
49 | "scripts": { | ||
50 | "init": "npm install", | ||
51 | "install": "bower install" | ||
52 | } | ||
53 | } | ||
54 |
protractor.conf.js
File was created | 1 | 'use strict'; | |
2 | |||
3 | var paths = require('./.yo-rc.json')['generator-gulp-angular'].props.paths; | ||
4 | |||
5 | // An example configuration file. | ||
6 | exports.config = { | ||
7 | // The address of a running selenium server. | ||
8 | //seleniumAddress: 'http://localhost:4444/wd/hub', | ||
9 | //seleniumServerJar: deprecated, this should be set on node_modules/protractor/config.json | ||
10 | |||
11 | // Capabilities to be passed to the webdriver instance. | ||
12 | capabilities: { | ||
13 | 'browserName': 'chrome' | ||
14 | }, | ||
15 | |||
16 | // Spec patterns are relative to the current working directly when | ||
17 | // protractor is called. | ||
18 | specs: [paths.e2e + '/**/*.js'], | ||
19 | |||
20 | // Options to be passed to Jasmine-node. | ||
21 | jasmineNodeOpts: { | ||
22 | showColors: true, | ||
23 | defaultTimeoutInterval: 30000 | ||
24 | } | ||
25 | }; | ||
26 |
src/404.html
File was created | 1 | <!DOCTYPE html> | |
2 | <html lang="en"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>Page Not Found :(</title> | ||
6 | <style> | ||
7 | ::-moz-selection { | ||
8 | background: #b3d4fc; | ||
9 | text-shadow: none; | ||
10 | } | ||
11 | |||
12 | ::selection { | ||
13 | background: #b3d4fc; | ||
14 | text-shadow: none; | ||
15 | } | ||
16 | |||
17 | html { | ||
18 | padding: 30px 10px; | ||
19 | font-size: 20px; | ||
20 | line-height: 1.4; | ||
21 | color: #737373; | ||
22 | background: #f0f0f0; | ||
23 | -webkit-text-size-adjust: 100%; | ||
24 | -ms-text-size-adjust: 100%; | ||
25 | } | ||
26 | |||
27 | html, | ||
28 | input { | ||
29 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; | ||
30 | } | ||
31 | |||
32 | body { | ||
33 | max-width: 500px; | ||
34 | _width: 500px; | ||
35 | padding: 30px 20px 50px; | ||
36 | border: 1px solid #b3b3b3; | ||
37 | border-radius: 4px; | ||
38 | margin: 0 auto; | ||
39 | box-shadow: 0 1px 10px #a7a7a7, inset 0 1px 0 #fff; | ||
40 | background: #fcfcfc; | ||
41 | } | ||
42 | |||
43 | h1 { | ||
44 | margin: 0 10px; | ||
45 | font-size: 50px; | ||
46 | text-align: center; | ||
47 | } | ||
48 | |||
49 | h1 span { | ||
50 | color: #bbb; | ||
51 | } | ||
52 | |||
53 | h3 { | ||
54 | margin: 1.5em 0 0.5em; | ||
55 | } | ||
56 | |||
57 | p { | ||
58 | margin: 1em 0; | ||
59 | } | ||
60 | |||
61 | ul { | ||
62 | padding: 0 0 0 40px; | ||
63 | margin: 1em 0; | ||
64 | } | ||
65 | |||
66 | .container { | ||
67 | max-width: 380px; | ||
68 | _width: 380px; | ||
69 | margin: 0 auto; | ||
70 | } | ||
71 | |||
72 | /* google search */ | ||
73 | |||
74 | #goog-fixurl ul { | ||
75 | list-style: none; | ||
76 | padding: 0; | ||
77 | margin: 0; | ||
78 | } | ||
79 | |||
80 | #goog-fixurl form { | ||
81 | margin: 0; | ||
82 | } | ||
83 | |||
84 | #goog-wm-qt, | ||
85 | #goog-wm-sb { | ||
86 | border: 1px solid #bbb; | ||
87 | font-size: 16px; | ||
88 | line-height: normal; | ||
89 | vertical-align: top; | ||
90 | color: #444; | ||
91 | border-radius: 2px; | ||
92 | } | ||
93 | |||
94 | #goog-wm-qt { | ||
95 | width: 220px; | ||
96 | height: 20px; | ||
97 | padding: 5px; | ||
98 | margin: 5px 10px 0 0; | ||
99 | box-shadow: inset 0 1px 1px #ccc; | ||
100 | } | ||
101 | |||
102 | #goog-wm-sb { | ||
103 | display: inline-block; | ||
104 | height: 32px; | ||
105 | padding: 0 10px; | ||
106 | margin: 5px 0 0; | ||
107 | white-space: nowrap; | ||
108 | cursor: pointer; | ||
109 | background-color: #f5f5f5; | ||
110 | background-image: -webkit-linear-gradient(rgba(255,255,255,0), #f1f1f1); | ||
111 | background-image: -moz-linear-gradient(rgba(255,255,255,0), #f1f1f1); | ||
112 | background-image: -ms-linear-gradient(rgba(255,255,255,0), #f1f1f1); | ||
113 | background-image: -o-linear-gradient(rgba(255,255,255,0), #f1f1f1); | ||
114 | -webkit-appearance: none; | ||
115 | -moz-appearance: none; | ||
116 | appearance: none; | ||
117 | *overflow: visible; | ||
118 | *display: inline; | ||
119 | *zoom: 1; | ||
120 | } | ||
121 | |||
122 | #goog-wm-sb:hover, | ||
123 | #goog-wm-sb:focus { | ||
124 | border-color: #aaa; | ||
125 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); | ||
126 | background-color: #f8f8f8; | ||
127 | } | ||
128 | |||
129 | #goog-wm-qt:hover, | ||
130 | #goog-wm-qt:focus { | ||
131 | border-color: #105cb6; | ||
132 | outline: 0; | ||
133 | color: #222; | ||
134 | } | ||
135 | |||
136 | input::-moz-focus-inner { | ||
137 | padding: 0; | ||
138 | border: 0; | ||
139 | } | ||
140 | </style> | ||
141 | </head> | ||
142 | <body> | ||
143 | <div class="container"> | ||
144 | <h1>Not found <span>:(</span></h1> | ||
145 | <p>Sorry, but the page you were trying to view does not exist.</p> | ||
146 | <p>It looks like this was the result of either:</p> | ||
147 | <ul> | ||
148 | <li>a mistyped address</li> | ||
149 | <li>an out-of-date link</li> | ||
150 | </ul> | ||
151 | <script> | ||
152 | var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host; | ||
153 | </script> | ||
154 | <script src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script> | ||
155 | </div> | ||
156 | </body> | ||
157 | </html> | ||
158 |
src/app/app.config.js
File was created | 1 | (function (){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | |||
6 | .config(function ($mdThemingProvider, $mdIconProvider, $httpProvider, USER_ROLES, AUTH_EVENTS) { | ||
7 | |||
8 | $mdThemingProvider | ||
9 | .theme('default') | ||
10 | .primaryPalette('blue', { | ||
11 | 'default': '600' | ||
12 | }) | ||
13 | .accentPalette('teal', { | ||
14 | 'default': '500' | ||
15 | }) | ||
16 | .warnPalette('defaultPrimary'); | ||
17 | |||
18 | $mdThemingProvider | ||
19 | .theme('dark', 'default') | ||
20 | .primaryPalette('defaultPrimary') | ||
21 | .dark(); | ||
22 | |||
23 | $mdThemingProvider | ||
24 | .theme('grey', 'default') | ||
25 | .primaryPalette('grey'); | ||
26 | |||
27 | $mdThemingProvider | ||
28 | .theme('custom', 'default') | ||
29 | .primaryPalette('defaultPrimary', { | ||
30 | 'hue-1': '50' | ||
31 | }); | ||
32 | |||
33 | $mdThemingProvider | ||
34 | .definePalette('defaultPrimary', { | ||
35 | '50': '#FFFFFF', | ||
36 | '100': 'rgb(255, 198, 197)', | ||
37 | '200': '#E75753', | ||
38 | '300': '#E75753', | ||
39 | '400': '#E75753', | ||
40 | '500': '#E75753', | ||
41 | '600': '#E75753', | ||
42 | '700': '#E75753', | ||
43 | '800': '#E75753', | ||
44 | '900': '#E75753', | ||
45 | 'A100': '#E75753', | ||
46 | 'A200': '#E75753', | ||
47 | 'A400': '#E75753', | ||
48 | 'A700': '#E75753' | ||
49 | }); | ||
50 | $mdIconProvider | ||
51 | .icon('user', 'assets/images/user.svg', 64); | ||
52 | }) | ||
53 | |||
54 | .run(['$rootScope', function($rootScope) { | ||
55 | $rootScope.userDetails = {}; | ||
56 | $rootScope.userDetails.partyDetail = {}; | ||
57 | if(localStorage.getItem("userDetails")){ | ||
58 | $rootScope.userDetails = JSON.parse(localStorage.getItem("userDetails")); | ||
59 | $rootScope.auth = localStorage.getItem("auth"); | ||
60 | } | ||
61 | }]) | ||
62 | |||
63 | .config(function ($httpProvider) { | ||
64 | $httpProvider.interceptors.push('httpRequestInterceptor'); | ||
65 | }) | ||
66 | |||
67 | .factory('httpRequestInterceptor', ['$q', '$rootScope', '$location', function($q, $rootScope, $location) { | ||
68 | return { | ||
69 | request: function($config) { | ||
70 | //$config.headers['Authorization'] = 'Basic ' + $rootScope.auth; | ||
71 | return $config; | ||
72 | }, | ||
73 | responseError: function(rejection) { | ||
74 | if (rejection.status === 401) { | ||
75 | //localStorage.clear(); | ||
76 | //window.location.reload(); | ||
77 | } | ||
78 | return $q.reject(rejection); | ||
79 | } | ||
80 | } | ||
81 | }]) | ||
82 | .run(function($rootScope, $window, $state, LoginService, AUTH_EVENTS) { | ||
83 | $rootScope.$on('$stateChangeStart', function (event, next, nextParams, fromState) { | ||
84 | if ('data' in next && 'authorizedRoles' in next.data) { | ||
85 | var authorizedRoles = next.data.authorizedRoles; | ||
86 | if (!LoginService.isAuthorized(authorizedRoles)) { | ||
87 | event.preventDefault(); | ||
88 | if($state.current.name.length == 0) { | ||
89 | $state.go('login') | ||
90 | } else { | ||
91 | $state.go($state.current, {}, {reload: true}); | ||
92 | $rootScope.$broadcast(AUTH_EVENTS.notAuthorized); | ||
93 | $("background").remove(); | ||
94 | } | ||
95 | } | ||
96 | } | ||
97 | if (LoginService.isAuthenticated()) { | ||
98 | if (next.name == 'login') { | ||
99 | event.preventDefault(); | ||
100 | if($state.current.name.length == 0) { | ||
101 | $state.go('app.user'); | ||
102 | } else { | ||
103 | $state.go($state.current, {}, {reload: true}); | ||
104 | $rootScope.$broadcast(AUTH_EVENTS.notAuthorized); | ||
105 | } | ||
106 | } | ||
107 | } | ||
108 | }); | ||
109 | }) | ||
110 | |||
111 | // .directive('apsUploadFile', apsUploadFile); | ||
112 | |||
113 | // function apsUploadFile() { | ||
114 | // var directive = { | ||
115 | // restrict: 'E', | ||
116 | // template: '<input id="fileInput" type="file" class="ng-hide"> <md-icon class="material-icons" id="uploadButton">attach_file</md-icon> </md-button><md-input-container flex="100" md-no-float> <input id="textInput" ng-model="fileName" type="text" placeholder="choose file" ng-readonly="true"></md-input-container>', | ||
117 | // link: apsUploadFileLink | ||
118 | // }; | ||
119 | // return directive; | ||
120 | // } | ||
121 | |||
122 | // function apsUploadFileLink(scope, element, attrs) { | ||
123 | // var input = $(element[0].querySelector('#fileInput')); | ||
124 | // var button = $(element[0].querySelector('#uploadButton')); | ||
125 | // var textInput = $(element[0].querySelector('#textInput')); | ||
126 | |||
127 | // if (input.length && button.length && textInput.length) { | ||
128 | // button.click(function(e) { | ||
129 | // input.click(); | ||
130 | // }); | ||
131 | // textInput.click(function(e) { | ||
132 | // input.click(); | ||
133 | // }); | ||
134 | // } | ||
135 | |||
136 | // input.on('change', function(e) { | ||
137 | // var files = e.target.files; | ||
138 | // if (files[0]) { | ||
139 | // scope.fileName = files[0].name; | ||
140 | // } else { | ||
141 | // scope.fileName = null; | ||
142 | // } | ||
143 | // scope.$apply(); | ||
144 | // }); | ||
145 | // } | ||
146 | |||
147 | })(); |
src/app/app.constant.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | |||
6 | .constant("BASE_URL", "http://localhost:3002/api") | ||
7 | //.constant("BASE_URL", "http://192.168.1.131:4000/api") | ||
8 | |||
9 | .constant('AUTH_EVENTS', { | ||
10 | updateUser: 'update-user', | ||
11 | notAuthorized: 'auth-not-authorized', | ||
12 | notAuthenticated: 'auth-not-authenticated' | ||
13 | }) | ||
14 | |||
15 | .constant('USER_ROLES', { | ||
16 | admin: 'ADMIN', | ||
17 | user: 'USER', | ||
18 | }); | ||
19 | |||
20 | })(); | ||
21 |
src/app/app.module.js
File was created | 1 | (function () { | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp', [ | ||
5 | |||
6 | //Angular module | ||
7 | 'ngAnimate', | ||
8 | 'ngCookies' | ||
9 | ,'ngSanitize' | ||
10 | ,'ngResource' | ||
11 | ,'ui.router' | ||
12 | ,'ngMaterial' | ||
13 | ,'nvd3' | ||
14 | ,'toaster' | ||
15 | ,'md.data.table' | ||
16 | ,'ngMessages' | ||
17 | ,'chart.js' | ||
18 | ,'ls.ChangeStream' | ||
19 | ,'angular-web-notification' | ||
20 | |||
21 | // Custom module | ||
22 | ,'sbAdminApp.authentication' | ||
23 | ,'sbAdminApp.navigation' | ||
24 | ,'sbAdminApp.user' | ||
25 | ]); | ||
26 | })(); |
src/app/app.route.js
File was created | 1 | (function (){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .config(function ($stateProvider, $urlRouterProvider, USER_ROLES){ | ||
6 | $urlRouterProvider.otherwise('/login'); | ||
7 | $stateProvider | ||
8 | .state('app', { | ||
9 | url: '/app', | ||
10 | abstract: true, | ||
11 | templateUrl: 'app/components/navigation/template/navigation.html', | ||
12 | controller: 'MainController', | ||
13 | controllerAs: 'vm' | ||
14 | }) | ||
15 | .state('login', { | ||
16 | url: '/login', | ||
17 | controller: 'LoginCtrl', | ||
18 | templateUrl: 'app/components/authentication/template/login.html', | ||
19 | data: { | ||
20 | title: 'Login' | ||
21 | } | ||
22 | }) | ||
23 | .state('app.user', { | ||
24 | url: '/user', | ||
25 | controller: 'userCtrl', | ||
26 | templateUrl: 'app/components/user/template/user.html', | ||
27 | data: { | ||
28 | title: 'user', | ||
29 | authorizedRoles: [USER_ROLES.admin , USER_ROLES.user], | ||
30 | } | ||
31 | }) | ||
32 | .state('app.startUp', { | ||
33 | url: '/startUp', | ||
34 | controller: 'userCtrl', | ||
35 | templateUrl: 'app/components/user/template/startUp.html', | ||
36 | data: { | ||
37 | title: 'user', | ||
38 | authorizedRoles: [USER_ROLES.admin , USER_ROLES.user], | ||
39 | } | ||
40 | }) | ||
41 | }) | ||
42 | })(); | ||
43 |
src/app/components/authentication/authentication.controller.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .controller('LoginCtrl', ['$scope', '$rootScope', '$state','$mdDialog','$log', 'AUTH_EVENTS', 'LoginService', 'toaster', loginCtrl]); | ||
6 | |||
7 | function loginCtrl($scope, $rootScope, $state, $mdDialog,$log, AUTH_EVENTS, LoginService ,toaster) { | ||
8 | $scope.doLogin = function() { | ||
9 | $rootScope.auth = window.btoa($scope.loginData.email + ':' + $scope.loginData.password); | ||
10 | LoginService.doLogin().save($scope.loginData).$promise.then(function(result) { | ||
11 | console.log("result",result); | ||
12 | if(result){ | ||
13 | $rootScope.$broadcast(AUTH_EVENTS.updateUser); | ||
14 | LoginService.setUser(result); | ||
15 | /*if(result.role === 'admin'){ | ||
16 | $state.go("app.user"); | ||
17 | } else { | ||
18 | $state.go("app."); | ||
19 | } */ | ||
20 | $state.go("app.user"); | ||
21 | } | ||
22 | if (Notification.permission !== 'denied') { | ||
23 | Notification.requestPermission(function(permission) { | ||
24 | // If the user accepts, let's create a notification | ||
25 | if (permission === "granted") { | ||
26 | /*var notification = new Notification("Hello!");*/ | ||
27 | } | ||
28 | }); | ||
29 | } | ||
30 | }, | ||
31 | function error(error) { | ||
32 | console.log("ererrorror",error); | ||
33 | if(error){ | ||
34 | toaster.error("server error"); | ||
35 | } | ||
36 | }); | ||
37 | |||
38 | } | ||
39 | $scope.signUp=function(){ | ||
40 | |||
41 | LoginService.signUp().save($scope.signupData).$promise.then(function(result) { | ||
42 | console.log("result",result); | ||
43 | // toaster.success("signed up successfully") | ||
44 | $mdDialog.show( | ||
45 | $mdDialog.alert() | ||
46 | .clickOutsideToClose(true) | ||
47 | .title() | ||
48 | .textContent("Please check your email and click on the verification link before logging in.") | ||
49 | .ariaLabel('Alert') | ||
50 | .ok('ok') | ||
51 | ); | ||
52 | |||
53 | }); | ||
54 | |||
55 | |||
56 | } | ||
57 | |||
58 | } | ||
59 | })(); |
src/app/components/authentication/authentication.module.js
File was created | 1 | (function () { | |
2 | |||
3 | angular.module('sbAdminApp.authentication', []); | ||
4 | |||
5 | })(); | ||
6 |
src/app/components/authentication/authentication.service.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .service('LoginService', ['$q', '$http', '$rootScope', '$resource', 'BASE_URL', 'USER_ROLES', LoginService]); | ||
6 | |||
7 | function LoginService($q, $http, $rootScope, $resource, BASE_URL, USER_ROLES) { | ||
8 | |||
9 | var authService = {}, | ||
10 | admin = '', | ||
11 | user = '', | ||
12 | role = '', | ||
13 | isAuthenticated = false; | ||
14 | |||
15 | if (window.localStorage.getItem("loginStatus")) { | ||
16 | isAuthenticated = true; | ||
17 | $rootScope.userDetails = JSON.parse(localStorage.getItem("userDetails")); | ||
18 | role = $rootScope.userDetails.role.toUpperCase(); | ||
19 | } | ||
20 | |||
21 | this.setUser = function (res) { | ||
22 | localStorage.setItem('loginStatus', true); | ||
23 | localStorage.setItem('userDetails', JSON.stringify(res)); | ||
24 | isAuthenticated = true; | ||
25 | $rootScope.userDetails = JSON.parse(localStorage.getItem("userDetails")); | ||
26 | role = $rootScope.userDetails.role.toUpperCase(); | ||
27 | } | ||
28 | |||
29 | this.isAuthenticated = function () { | ||
30 | return isAuthenticated; | ||
31 | }; | ||
32 | |||
33 | this.role = function () { | ||
34 | return role; | ||
35 | }; | ||
36 | |||
37 | this.getUser = function () { | ||
38 | return JSON.parse(window.localStorage.getItem("userDetails")); | ||
39 | } | ||
40 | |||
41 | this.isAuthorized = function (authorizedRoles) { | ||
42 | if (!angular.isArray(authorizedRoles)) { | ||
43 | authorizedRoles = [authorizedRoles]; | ||
44 | } | ||
45 | return (this.isAuthenticated() && authorizedRoles.indexOf(role) !== -1); | ||
46 | } | ||
47 | |||
48 | this.signUp = function() { | ||
49 | return $resource(BASE_URL+'/users/signUp'); | ||
50 | } | ||
51 | |||
52 | //Resource for REST APIs | ||
53 | this.doLogin = function() { | ||
54 | return $resource(BASE_URL+'/users/login'); | ||
55 | } | ||
56 | |||
57 | this.logOut = function(){ | ||
58 | return $resource(BASE_URL+'/users/logout', | ||
59 | {access_token:$rootScope.userDetails.id}) | ||
60 | } | ||
61 | |||
62 | this.deleteUser = function () { | ||
63 | isAuthenticated = false; | ||
64 | $rootScope.$loginStatus = false; | ||
65 | localStorage.clear(); | ||
66 | } | ||
67 | |||
68 | } | ||
69 | |||
70 | })(); |
src/app/components/authentication/template/login.html
File was created | 1 | <h1 class="heading" style="text-align:center;">Startup Jalsa</h1> | |
2 | <md-content class="md-padding" layout="row" layout-wrap layout-align="end center" style="width: 100%;background-color: #e0e0e0;"> | ||
3 | <md-card style="padding: 0px 20px;width:55%;margin-top: -180px;"> | ||
4 | <md-card-title> | ||
5 | <md-card-title-text style="text-align: center;color: dodgerblue;"> | ||
6 | <span class="md-headline">Login</span> | ||
7 | </md-card-title-text> | ||
8 | </md-card-title> | ||
9 | |||
10 | <form name="loginForm"> | ||
11 | <div layout="column"> | ||
12 | <md-input-container class="md-block md-icon-float"> | ||
13 | <label>Email</label> | ||
14 | <md-icon md-svg-src="assets/images/ic_email_black_24px.svg" class="name"></md-icon> | ||
15 | <input ng-model="loginData.email"> | ||
16 | </md-input-container> | ||
17 | <md-input-container class="md-block md-icon-float"> | ||
18 | <label>Password</label> | ||
19 | <md-icon md-svg-src="assets/images/ic_remove_red_eye_black_24px.svg" class="password"></md-icon> | ||
20 | <input type="password" ng-model="loginData.password"> | ||
21 | </md-input-container> | ||
22 | <section layout="column" layout-align="start"> | ||
23 | <md-button class="md-primary md-raised" ng-click="doLogin()">Login</md-button> | ||
24 | </section> | ||
25 | </div> | ||
26 | </form> | ||
27 | </md-card> | ||
28 | </md-content> | ||
29 | <md-content class="md-padding" layout="row" layout-wrap layout-align="start center" style="width: 100%;background-color:#e0e0e0;"> | ||
30 | <md-card style="padding: 0px 20px;width:60%;"> | ||
31 | <md-card-title> | ||
32 | <md-card-title-text style="text-align: center;color: dodgerblue;"> | ||
33 | <span class="md-headline">Sign Up</span> | ||
34 | </md-card-title-text> | ||
35 | </md-card-title> | ||
36 | <div layout="column"> | ||
37 | <md-input-container class="md-block md-icon-float"> | ||
38 | <label>Username</label> | ||
39 | <md-icon md-svg-src="assets/images/ic_person_black_24px.svg" class="name"></md-icon> | ||
40 | <input ng-model="signupData.username"> | ||
41 | </md-input-container> | ||
42 | <md-input-container class="md-block md-icon-float"> | ||
43 | <label>Email</label> | ||
44 | <md-icon md-svg-src="assets/images/ic_email_black_24px.svg" class="email"></md-icon> | ||
45 | <input ng-model="signupData.email"> | ||
46 | </md-input-container> | ||
47 | <md-input-container class="md-block md-icon-float"> | ||
48 | <label>Password</label> | ||
49 | <md-icon md-svg-src="assets/images/ic_remove_red_eye_black_24px.svg" class="password"></md-icon> | ||
50 | <input type="password" ng-model="signupData.password"> | ||
51 | </md-input-container> | ||
52 | <md-input-container class="md-block md-icon-float"> | ||
53 | <label>Confirm Password</label> | ||
54 | <md-icon md-svg-src="assets/images/ic_remove_red_eye_black_24px.svg" class="confirmPassword"></md-icon> | ||
55 | <input type="password" ng-model="signupData.confirmPassword"> | ||
56 | </md-input-container> | ||
57 | <section layout="column" layout-align="start"> | ||
58 | <md-button class="md-primary md-raised" ng-click="signUp()">sign up</md-button> | ||
59 | </section> | ||
60 | </div> | ||
61 | </form> | ||
62 | </md-card> | ||
63 | </md-content> | ||
64 | <toaster-container toaster-options="{'time-out': 2000, 'close-button':true, 'animation-class': 'toast-top-right'}"></toaster-container> |
src/app/components/navigation/navigation.controller.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .controller('con',['$scope',con]) | ||
6 | .controller('MainController', ['navService','$rootScope','$mdSidenav', '$mdBottomSheet', '$log', '$q', '$state', '$mdToast', '$scope', '$mdMedia', '$mdDialog','LoginService', 'toaster', MainController]); | ||
7 | |||
8 | function MainController(navService,$rootScope, $mdSidenav, $mdBottomSheet, $log, $q, $state, $mdToast, $scope, $mdMedia, $mdDialog, LoginService, toaster) { | ||
9 | var vm = this; | ||
10 | //vm.menuItems = [ ]; | ||
11 | vm.selectItem = selectItem; | ||
12 | vm.toggleItemsList = toggleItemsList; | ||
13 | vm.showActions = showActions; | ||
14 | vm.title = $state.current.data.title; | ||
15 | vm.showSimpleToast = showSimpleToast; | ||
16 | vm.toggleRightSidebar = toggleRightSidebar; | ||
17 | vm.autoFocusContent = false; | ||
18 | vm.isOpen = isOpen; | ||
19 | vm.toggleOpen = toggleOpen; | ||
20 | |||
21 | vm.menu = navService; | ||
22 | |||
23 | $scope.companyName = localStorage.getItem("companyName"); | ||
24 | |||
25 | /*navService.loadAllItems().then(function(menuItems) { | ||
26 | vm.menuItems = [].concat(menuItems); | ||
27 | });*/ | ||
28 | |||
29 | function toggleRightSidebar() { | ||
30 | $mdSidenav('right').toggle(); | ||
31 | } | ||
32 | |||
33 | function toggleItemsList() { | ||
34 | var pending = $mdBottomSheet.hide() || $q.when(true); | ||
35 | pending.then(function(){ | ||
36 | $mdSidenav('left').toggle(); | ||
37 | }); | ||
38 | } | ||
39 | |||
40 | function isOpen(section) { | ||
41 | return navService.isSectionSelected(section); | ||
42 | } | ||
43 | |||
44 | function toggleOpen(section) { | ||
45 | navService.toggleSelectSection(section); | ||
46 | } | ||
47 | |||
48 | function selectItem (item) { | ||
49 | /*$scope.searchDID = false; | ||
50 | if(item.name == 'DID'){ | ||
51 | $scope.searchDID = true; | ||
52 | }*/ | ||
53 | vm.title = item.name; | ||
54 | vm.toggleItemsList(); | ||
55 | vm.showSimpleToast(vm.title); | ||
56 | } | ||
57 | |||
58 | function showActions($event) { | ||
59 | $mdBottomSheet.show({ | ||
60 | parent: angular.element(document.getElementById('content')), | ||
61 | templateUrl: 'app/views/partials/bottomSheet.html', | ||
62 | controller: [ '$mdBottomSheet', SheetController], | ||
63 | controllerAs: "vm", | ||
64 | bindToController : true, | ||
65 | targetEvent: $event | ||
66 | }).then(function(clickedItem) { | ||
67 | clickedItem && $log.debug( clickedItem.name + ' clicked!'); | ||
68 | }); | ||
69 | |||
70 | function SheetController( $mdBottomSheet ) { | ||
71 | var vm = this; | ||
72 | |||
73 | vm.actions = [ | ||
74 | { name: 'Share', icon: 'share', url: 'https://twitter.com/intent/tweet?text=Angular%20Material%20Dashboard%20https://github.com/flatlogic/angular-material-dashboard%20via%20@flatlogicinc' }, | ||
75 | { name: 'Star', icon: 'star', url: 'https://github.com/flatlogic/angular-material-dashboard/stargazers' } | ||
76 | ]; | ||
77 | |||
78 | vm.performAction = function(action) { | ||
79 | $mdBottomSheet.hide(action); | ||
80 | }; | ||
81 | } | ||
82 | } | ||
83 | |||
84 | function showSimpleToast(title) { | ||
85 | $mdToast.show( | ||
86 | $mdToast.simple() | ||
87 | .content(title) | ||
88 | .hideDelay(2000) | ||
89 | .position('bottom right') | ||
90 | ); | ||
91 | } | ||
92 | |||
93 | $scope.logout = function() { | ||
94 | LoginService.logOut().save().$promise.then(function(result){ | ||
95 | window.location.reload(); | ||
96 | LoginService.deleteUser(); | ||
97 | $state.go("login"); | ||
98 | |||
99 | }, function(error){ | ||
100 | if(error){ | ||
101 | toaster.error("server error"); | ||
102 | } | ||
103 | }); | ||
104 | } | ||
105 | } | ||
106 | |||
107 | function con($scope){ | ||
108 | $scope.class = "sidebar-full"; | ||
109 | $scope.changeClass = function(){ | ||
110 | if ($scope.class === "sidebar-full"){ | ||
111 | $scope.class = "sidebar-mini"; | ||
112 | } | ||
113 | else{ | ||
114 | $scope.class = "sidebar-full"; | ||
115 | } | ||
116 | |||
117 | }; | ||
118 | } | ||
119 | })(); |
src/app/components/navigation/navigation.module.js
File was created | 1 | (function () { | |
2 | |||
3 | angular.module('sbAdminApp.navigation', []); | ||
4 | |||
5 | })(); | ||
6 |
src/app/components/navigation/navigation.service.js
File was created | 1 | (function(){ | |
2 | |||
3 | 'use strict'; | ||
4 | |||
5 | angular.module('sbAdminApp').factory('navService', [ '$location', '$rootScope', function ($location, $rootScope) { | ||
6 | |||
7 | |||
8 | var section = []; | ||
9 | |||
10 | section.push({ | ||
11 | name: 'Recommend a Startup', | ||
12 | type: 'link', | ||
13 | sref: '.user', | ||
14 | role: ['user'], | ||
15 | }); | ||
16 | |||
17 | section.push({ | ||
18 | name: 'Apply Late as Startup', | ||
19 | type: 'link', | ||
20 | sref: '.startUp', | ||
21 | role: ['user'], | ||
22 | }); | ||
23 | |||
24 | var sections = []; | ||
25 | for(var i = 0; i < section.length; i++) { | ||
26 | if(section[i].role.indexOf($rootScope.userDetails.role) !== -1){ | ||
27 | sections.push(section[i]); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | var self; | ||
32 | |||
33 | return self = { | ||
34 | sections: sections, | ||
35 | |||
36 | toggleSelectSection: function (section) { | ||
37 | self.openedSection = (self.openedSection === section ? null : section); | ||
38 | }, | ||
39 | isSectionSelected: function (section) { | ||
40 | return self.openedSection === section; | ||
41 | }, | ||
42 | |||
43 | selectPage: function (section, page) { | ||
44 | page && page.url && $location.path(page.url); | ||
45 | self.currentSection = section; | ||
46 | self.currentPage = page; | ||
47 | } | ||
48 | }; | ||
49 | |||
50 | function sortByHumanName(a, b) { | ||
51 | return (a.humanName < b.humanName) ? -1 : | ||
52 | (a.humanName > b.humanName) ? 1 : 0; | ||
53 | } | ||
54 | |||
55 | }]) | ||
56 | |||
57 | })(); |
src/app/components/navigation/template/navigation.html
File was created | 1 | <md-sidenav class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-sm')"> | |
2 | <md-toolbar md-theme="default" class="md-theme-indigo"> | ||
3 | <h1 class="md-toolbar-tools" style="white-space: pre; | ||
4 | font-size: 14px"> | ||
5 | WELCOME TO YC APPLY | ||
6 | </h1> | ||
7 | </md-toolbar> | ||
8 | |||
9 | <div class="navigation-container"> | ||
10 | <div class="toggle-box"> | ||
11 | <!-- <md-button hide-sm hide-xs ng-click="changeClass()" class="size-toggle toggle-left"> | ||
12 | <i class="material-icons">menu</i> | ||
13 | </md-button> --> | ||
14 | <!-- <md-button hide-sm hide-xs ng-click="logout()" class="size-toggle toggle-right"> | ||
15 | <i class="material-icons">power_settings_new</i> | ||
16 | </md-button> --> | ||
17 | </div> | ||
18 | </div> | ||
19 | |||
20 | <md-content class="custom-md-content" role="navigation"> | ||
21 | <ul class="side-menu"> | ||
22 | <li ng-repeat="item in vm.menu.sections" class="parent-list-item hover-link" ng-class="{'parentActive' : vm.isSectionSelected(item)}" ui-sref-active="md-warn"> | ||
23 | <h2 class="menu-heading" ng-if="item.type === 'heading'" id="heading_{{ item.name }}"> | ||
24 | {{item}} | ||
25 | </h2> | ||
26 | <menu-link section="item" ng-if="item.type === 'link'"></menu-link> | ||
27 | <menu-toggle section="item" ng-if="item.type === 'toggle'"></menu-toggle> | ||
28 | </li> | ||
29 | </ul> | ||
30 | </md-content> | ||
31 | </md-sidenav> | ||
32 | |||
33 | <div layout="column" flex> | ||
34 | <md-toolbar md-theme="default" layout="row" layout-align="end center"> | ||
35 | <!-- <i class="material-icons" style="cursor: pointer;" ng-click="c2c(customer.phone)">phone | ||
36 | <md-tooltip>Click To Call</md-tooltip> | ||
37 | </i>     --> | ||
38 | <md-menu md-position-mode="target-right target"> | ||
39 | <md-button aria-label="Open logout menu" class="md-icon-button" ng-click="$mdOpenMenu($event)"> | ||
40 | <md-icon md-menu-origin md-svg-src="assets/images/ic_person_white_24px.svg"></md-icon> | ||
41 | </md-button> | ||
42 | <md-menu-content width="3" style="background-color:#ffffff";> | ||
43 | <md-menu-item> | ||
44 | <md-button ui-sref="app.myProfile"> | ||
45 | <div layout="row" style="color:#000";> | ||
46 | <p flex>My Profile</p> | ||
47 | </div> | ||
48 | </md-button> | ||
49 | </md-menu-item> | ||
50 | <md-menu-item> | ||
51 | <md-button ui-sref="app.changePassword"> | ||
52 | <div layout="row" style="color:#000";> | ||
53 | <p flex>Change Password</p> | ||
54 | </div> | ||
55 | </md-button> | ||
56 | </md-menu-item> | ||
57 | <md-menu-item> | ||
58 | <md-button ng-click="logout();"> | ||
59 | <div layout="row" style="color:#000";> | ||
60 | <p flex>Logout</p> | ||
61 | </div> | ||
62 | </md-button> | ||
63 | </md-menu-item> | ||
64 | </md-menu-content> | ||
65 | </md-menu> | ||
66 | </md-toolbar> | ||
67 | |||
68 | <toaster-container toaster-options="{'time-out': 2000, 'close-button':true, 'animation-class': 'toast-top-right'}"></toaster-container> | ||
69 | |||
70 | <md-content flex class="md-padding page-content"> | ||
71 | <div ui-view></div> | ||
72 | </md-content> | ||
73 | </div> |
src/app/components/user/template/startUp.html
File was created | 1 | <h1 class="md-title headline">Startup Jalsa:</h1><br></br> | |
2 | <form name="awardsForm" novalidate> | ||
3 | <div> | ||
4 | <label>Company name:</label> | ||
5 | <input ng-model="data.heading" type="text" name="heading" required> | ||
6 | </div> | ||
7 | </form> | ||
8 |
src/app/components/user/template/user.html
File was created | 1 | <h3>YC Recommendations:</h3><br> | |
2 | <div>Do you know a startup founder who should apply to YC? Recommend them here and weโll send them an email encouraging them to apply.</div><br> | ||
3 | <div>You can recommend as many founders as you like, and then use this page to keep track of their applications.</div><br> | ||
4 | <div>Thank you!</div><br> | ||
5 | <div>Y Combinator</div> | ||
6 |
src/app/components/user/user.controller.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .controller('userCtrl', ['$scope', '$rootScope', '$state','$log', 'AUTH_EVENTS', 'userService', 'toaster', userCtrl]); | ||
6 | |||
7 | function userCtrl($scope, $rootScope, $state,$log, AUTH_EVENTS, userService ,toaster) { | ||
8 | |||
9 | |||
10 | } | ||
11 | |||
12 | })(); |
src/app/components/user/user.module.js
File was created | 1 | (function () { | |
2 | |||
3 | angular.module('sbAdminApp.user', []); | ||
4 | |||
5 | })(); | ||
6 |
src/app/components/user/user.service.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .service('userService', ['$q', '$http', '$rootScope', '$resource', 'BASE_URL', 'USER_ROLES', userService]); | ||
6 | |||
7 | function userService($q, $http, $rootScope, $resource, BASE_URL, USER_ROLES) { | ||
8 | |||
9 | } | ||
10 | |||
11 | })(); | ||
12 |
src/app/directive/menu_toggle.directive.js
File was created | 1 | angular.module('sbAdminApp') | |
2 | .run(['$templateCache', function ($templateCache) { | ||
3 | $templateCache.put('partials/menu-toggle.tmpl.html', | ||
4 | '<md-button class="md-button-toggle"\n' + | ||
5 | ' ng-click="toggle()"\n' + | ||
6 | ' aria-controls="docs-menu-{{section.name}}"\n' + | ||
7 | ' flex layout="row"\n' + | ||
8 | ' aria-expanded="{{isOpen()}}">\n' + | ||
9 | ' <i class="material-icons">{{section.icon}}</i>\n' + | ||
10 | ' {{section.name}}\n' + | ||
11 | ' <span aria-hidden="true" class=" pull-right fa fa-chevron-down md-toggle-icon"\n' + | ||
12 | ' ng-class="{\'toggled\' : isOpen()}"></span>\n' + | ||
13 | '</md-button>\n' + | ||
14 | '<ul ng-show="isOpen()" id="docs-menu-{{section.name}}" class="menu-toggle-list">\n' + | ||
15 | ' <li ng-repeat="page in section.pages">\n' + | ||
16 | ' <menu-link section="page"></menu-link>\n' + | ||
17 | ' </li>\n' + | ||
18 | '</ul>\n' + | ||
19 | ''); | ||
20 | }]) | ||
21 | .directive('menuToggle', ['$timeout', function ($timeout ) { | ||
22 | return { | ||
23 | scope: { | ||
24 | section: '=' | ||
25 | }, | ||
26 | templateUrl: 'partials/menu-toggle.tmpl.html', | ||
27 | link: function (scope, element) { | ||
28 | var controller = element.parent().controller(); | ||
29 | |||
30 | scope.isOpen = function () { | ||
31 | return controller.isOpen(scope.section); | ||
32 | }; | ||
33 | scope.toggle = function () { | ||
34 | controller.toggleOpen(scope.section); | ||
35 | }; | ||
36 | |||
37 | var parentNode = element[0].parentNode.parentNode.parentNode; | ||
38 | if (parentNode.classList.contains('parent-list-item')) { | ||
39 | var heading = parentNode.querySelector('h2'); | ||
40 | element[0].firstChild.setAttribute('aria-describedby', heading.id); | ||
41 | } | ||
42 | } | ||
43 | }; | ||
44 | }]) |
src/app/directive/menulink.directive.js
File was created | 1 | (function(){ | |
2 | 'use strict'; | ||
3 | |||
4 | angular.module('sbAdminApp') | ||
5 | .run(['$templateCache', function ($templateCache) { | ||
6 | $templateCache.put('partials/menu-link.tmpl.html', | ||
7 | '<md-button ng-class="{\'{{section.icon}}\' : true}" ui-sref-active="active" \n' + | ||
8 | ' ui-sref="{{section.sref}}" style=" text-transform: capitalize; " ng-click="focusSection()">\n' + | ||
9 | ' <i class="material-icons">{{section.icon}}</i>\n' + | ||
10 | ' {{section.name}}\n' + | ||
11 | ' <span class="md-visually-hidden "\n' + | ||
12 | ' ng-if="isSelected()">\n' + | ||
13 | ' current page\n' + | ||
14 | ' </span>\n' + | ||
15 | '</md-button>\n' + | ||
16 | ''); | ||
17 | }]) | ||
18 | .directive('menuLink', function () { | ||
19 | return { | ||
20 | scope: { | ||
21 | section: '=' | ||
22 | }, | ||
23 | templateUrl: 'partials/menu-link.tmpl.html', | ||
24 | link: function ($scope, $element) { | ||
25 | var controller = $element.parent().controller(); | ||
26 | |||
27 | $scope.focusSection = function () { | ||
28 | // set flag to be used later when | ||
29 | // $locationChangeSuccess calls openPage() | ||
30 | controller.autoFocusContent = true; | ||
31 | }; | ||
32 | } | ||
33 | }; | ||
34 | }) | ||
35 | })(); | ||
36 | |||
37 |
src/app/index.scss
File was created | 1 | // injector | |
2 | // endinjector | ||
3 | |||
4 | |||
5 | /* Custom CSS */ | ||
6 | |||
7 | |||
8 | body{ | ||
9 | color:#000; | ||
10 | } | ||
11 | |||
12 | .iframe{ | ||
13 | width:100% ; | ||
14 | height:800px ; | ||
15 | border:0; | ||
16 | } |
src/app/stylesheets/_custom.scss
File was created | 1 | // COLORS | |
2 | $main-bg-color: #ECECEC; | ||
3 | $text-color: #7A7A7A; | ||
4 | $accent-color: rgb(0, 150, 136); | ||
5 | $warning-color: #E75753; | ||
6 | |||
7 | |||
8 | // VARIABLES | ||
9 | $left-sidenav-width: 200px; | ||
10 | $widget-height: 310px; | ||
11 | $font-weight-bold: 600; | ||
12 | $font-size-large: 20px; | ||
13 | |||
14 | |||
15 | // LAYOUT | ||
16 | body { | ||
17 | color: $text-color; | ||
18 | } | ||
19 | |||
20 | .toolbar-button { | ||
21 | min-width: 20px; | ||
22 | } | ||
23 | |||
24 | .share-label { | ||
25 | vert-align: middle; | ||
26 | margin-left: 10px; | ||
27 | } | ||
28 | |||
29 | .page-content { | ||
30 | background-color: $main-bg-color; | ||
31 | } | ||
32 | |||
33 | .widget-progress { | ||
34 | width: 95% !important; | ||
35 | margin-left: 10px; | ||
36 | } | ||
37 | |||
38 | |||
39 | // UTILS | ||
40 | .capitalize { | ||
41 | text-transform: capitalize; | ||
42 | } | ||
43 | |||
44 | .img-circle { | ||
45 | height: 50px; | ||
46 | border-radius: 50%; | ||
47 | margin: 0 10px; | ||
48 | } | ||
49 | |||
50 | |||
51 | // COMPONENTS | ||
52 | .messages { | ||
53 | position: relative; | ||
54 | |||
55 | &-content { | ||
56 | height: 100vh; | ||
57 | } | ||
58 | } | ||
59 | |||
60 | .notifications-label { | ||
61 | width: 16px; | ||
62 | height: 16px; | ||
63 | line-height: 16px; | ||
64 | text-align: center; | ||
65 | border-radius: 50%; | ||
66 | position: absolute; | ||
67 | font-size: 12px; | ||
68 | top: 2px; | ||
69 | right: 2px; | ||
70 | background-color: $warning-color; | ||
71 | } | ||
72 | |||
73 | // panel-widget | ||
74 | .panel-widget { | ||
75 | background-color: white; | ||
76 | |||
77 | &-toolbar { | ||
78 | box-shadow: none; | ||
79 | } | ||
80 | |||
81 | &-tittle { | ||
82 | color: $text-color; | ||
83 | } | ||
84 | } | ||
85 | |||
86 | .options { | ||
87 | -webkit-transition:all linear 0.5s; | ||
88 | transition:all linear 0.5s; | ||
89 | } | ||
90 | |||
91 | .options.ng-hide { | ||
92 | opacity:0; | ||
93 | } | ||
94 | |||
95 | .fixed-height-widget { | ||
96 | height: $widget-height; | ||
97 | } | ||
98 | |||
99 | // charts | ||
100 | .donut-chart-title{ | ||
101 | text-align: center; | ||
102 | } | ||
103 | |||
104 | .custom-tooltip { | ||
105 | font-size: $font-size-large; | ||
106 | color: $text-color; | ||
107 | text-align: center; | ||
108 | } | ||
109 | |||
110 | |||
111 | // OVERRIDES | ||
112 | // angular material overrides | ||
113 | md-radio-group { | ||
114 | border: none; | ||
115 | } | ||
116 | |||
117 | md-icon { | ||
118 | height: auto; | ||
119 | } | ||
120 | |||
121 | md-sidenav.md-locked-open.md-sidenav-left { | ||
122 | width: $left-sidenav-width; | ||
123 | min-width: $left-sidenav-width; | ||
124 | max-width: $left-sidenav-width; | ||
125 | } | ||
126 | |||
127 | a.md-button.md-warn.md-raised, a.md-button.md-warn.md-fab, .md-button.md-warn.md-raised, .md-button.md-warn.md-fab { | ||
128 | color: white; | ||
129 | } | ||
130 | |||
131 | md-radio-button.md-accent.md-checked .md-label span { | ||
132 | color: $accent-color; | ||
133 | } | ||
134 | |||
135 | .md-toolbar-tools h1 { | ||
136 | font-size: $font-size-large; | ||
137 | } | ||
138 | |||
139 | |||
140 | md-backdrop.md-sidenav-backdrop { | ||
141 | position: fixed; | ||
142 | } | ||
143 | |||
144 | // libs overrides | ||
145 | .material-icons { | ||
146 | vertical-align: middle; | ||
147 | } | ||
148 | |||
149 | .material-icons.md-18 { font-size: 18px; } | ||
150 | .material-icons.md-24 { font-size: 24px; } | ||
151 | .material-icons.md-36 { font-size: 36px; } | ||
152 | .material-icons.md-48 { font-size: 48px; } | ||
153 | |||
154 | .nvd3.nv-pie .nv-pie-title { | ||
155 | fill: rgb(68, 68, 68); | ||
156 | font-weight: $font-weight-bold; | ||
157 | font-size: $font-size-large !important; | ||
158 | } | ||
159 | |||
160 | .nvtooltip { | ||
161 | background-color: transparent; | ||
162 | border: none; | ||
163 | font-weight: $font-weight-bold; | ||
164 | } | ||
165 | |||
166 | .orange .md-bar2 { | ||
167 | background-color: orange; | ||
168 | } | ||
169 | |||
170 | .orange .md-container { | ||
171 | background-color: rgb(255, 236, 201) | ||
172 | } | ||
173 | |||
174 | |||
175 | /* Custom by Anurag */ | ||
176 | |||
177 | //variables | ||
178 | $sidenav-mobile-width: 190px; | ||
179 | |||
180 | md-sidenav { | ||
181 | width: $sidenav-mobile-width; | ||
182 | } | ||
183 | |||
184 | .vertical { | ||
185 | padding-right: 5px; | ||
186 | border-right-style: groove; | ||
187 | } | ||
188 | |||
189 | md-toolbar .md-menu { | ||
190 | margin: 0 !important; | ||
191 | } | ||
192 | |||
193 | /*form validation*/ | ||
194 | |||
195 | .help-block { | ||
196 | color: red; | ||
197 | font-size: 11px; | ||
198 | } | ||
199 | |||
200 | |||
201 | |||
202 | |||
203 | |||
204 | /* Styles go here */ | ||
205 | |||
206 | body { | ||
207 | font-family: 'Ubuntu', sans-serif; | ||
208 | color: orangered; | ||
209 | } | ||
210 | |||
211 | .fill-height{ | ||
212 | display: flex; | ||
213 | flex: 1; | ||
214 | min-height: 100%; | ||
215 | } | ||
216 | |||
217 | .fill-height > div{ | ||
218 | min-height: 100%; | ||
219 | display: flex; | ||
220 | } | ||
221 | |||
222 | md-sidenav { | ||
223 | overflow: visible; | ||
224 | |||
225 | } | ||
226 | .side-menu, .side-menu ul { | ||
227 | list-style: none; | ||
228 | padding: 0; | ||
229 | margin-top: 0; | ||
230 | } | ||
231 | |||
232 | .side-menu .md-button.active { | ||
233 | color: rgb(30,136,229); | ||
234 | } | ||
235 | |||
236 | .side-menu .menu-toggle-list a.md-button { | ||
237 | display: block; | ||
238 | padding: 0 16px 0 32px; | ||
239 | text-transform: none; | ||
240 | text-rendering: optimizeLegibility; | ||
241 | font-weight: 500; | ||
242 | } | ||
243 | |||
244 | .side-menu .menu-toggle-list .md-button { | ||
245 | display: block; | ||
246 | padding: 0 16px 0 32px; | ||
247 | text-transform: none; | ||
248 | } | ||
249 | |||
250 | .side-menu > li { | ||
251 | border-top: 1px solid rgba(0, 0, 0, 0.12); | ||
252 | } | ||
253 | |||
254 | .md-button-toggle .md-toggle-icon.toggled { | ||
255 | transform: rotateZ(180deg); | ||
256 | -webkit-transform: rotateZ(180deg); | ||
257 | } | ||
258 | |||
259 | .side-menu .md-button-toggle .md-toggle-icon { | ||
260 | background-size: 100% auto; | ||
261 | display: inline-block; | ||
262 | margin: auto 0 auto auto; | ||
263 | width: 15px; | ||
264 | color: darkgray; | ||
265 | transition: transform .3s ease-in-out; | ||
266 | -webkit-transition: -webkit-transform .3s ease-in-out; | ||
267 | } | ||
268 | |||
269 | .menu-toggle-list.ng-hide { | ||
270 | max-height: 0; | ||
271 | } | ||
272 | |||
273 | .side-menu .md-button { | ||
274 | border-radius: 0; | ||
275 | color: inherit; | ||
276 | cursor: pointer; | ||
277 | font-weight: 400; | ||
278 | line-height: 40px; | ||
279 | margin: 0; | ||
280 | max-height: 40px; | ||
281 | overflow: hidden; | ||
282 | padding: 0px 16px; | ||
283 | text-align: left; | ||
284 | text-decoration: none; | ||
285 | white-space: normal; | ||
286 | width: 100%; | ||
287 | } | ||
288 | |||
289 | .menu-toggle-list { | ||
290 | background: #fff; | ||
291 | max-height: 1300px; | ||
292 | overflow: hidden; | ||
293 | position: relative; | ||
294 | z-index: 1; | ||
295 | -webkit-transition: 0.75s cubic-bezier(0.35, 0, 0.25, 1); | ||
296 | -webkit-transition-property: max-height; | ||
297 | -moz-transition: 0.75s cubic-bezier(0.35, 0, 0.25, 1); | ||
298 | -moz-transition-property: max-height; | ||
299 | transition: 0.75s cubic-bezier(0.35, 0, 0.25, 1); | ||
300 | transition-property: max-height; | ||
301 | } | ||
302 | |||
303 | |||
304 | .side-menu menu-toggle span{ | ||
305 | padding-top: 12px; | ||
306 | padding-bottom: 12px; | ||
307 | } | ||
308 | |||
309 | |||
310 | |||
311 | |||
312 | |||
313 | .noShadow{ | ||
314 | box-shadow:none; | ||
315 | } | ||
316 | .borderNew{ | ||
317 | border-bottom:1px solid; | ||
318 | border-color:rgba(128, 128, 128, 0.25); | ||
319 | } | ||
320 | .noMargin{ | ||
321 | margin:0px; | ||
322 | } | ||
323 | .height25{ | ||
324 | height:25px; | ||
325 | } | ||
326 | .carrierBtn{ | ||
327 | width:300px; | ||
328 | height:200px; | ||
329 | background-color:#fff; | ||
330 | box-shadow:0px 0px 10px #666; | ||
331 | text-align:center; | ||
332 | line-height:200px; | ||
333 | font-size:30px; | ||
334 | float:left; | ||
335 | cursor:pointer; | ||
336 | -webkit-transition:0.2s; | ||
337 | } | ||
338 | .carrierBtn:first-child{ | ||
339 | margin-right:50px; | ||
340 | } | ||
341 | .carrierBtn:hover{ | ||
342 | background-color:rgb(30,136,229); | ||
343 | color:#fff; | ||
344 | } | ||
345 | .carrierBtnSelected{ | ||
346 | background-color:rgb(30,136,229); | ||
347 | color:#fff; | ||
348 | } | ||
349 | .myWrapper{ | ||
350 | min-height:500px; | ||
351 | } | ||
352 | .popWrapper{ | ||
353 | padding:20px; | ||
354 | } | ||
355 | .popTitle{ | ||
356 | color:#333; | ||
357 | } | ||
358 | .popContent{ | ||
359 | color:#333; | ||
360 | font-weight:normal; | ||
361 | } | ||
362 | .myBtnPrimary{ | ||
363 | box-shadow:0 2px 5px 0 rgba(0,0,0,.26); | ||
364 | color: rgba(255,255,255,0.87); | ||
365 | background-color: rgb(16,108,200); | ||
366 | float:left; | ||
367 | } | ||
368 | .myBtnPrimary:hover{ | ||
369 | box-shadow:0 2px 5px 0 rgba(0,0,0,.26); | ||
370 | color: rgba(255,255,255,0.87); | ||
371 | background-color: rgb(16,108,200) !important; | ||
372 | float:left; | ||
373 | } | ||
374 | .myBtnDefault{ | ||
375 | box-shadow:0 2px 5px 0 rgba(0,0,0,.26); | ||
376 | color:#333; | ||
377 | } | ||
378 | .cl{clear:both;} | ||
379 | |||
380 | .widthstyle{ | ||
381 | width: 400px !important; | ||
382 | height:200px !important; | ||
383 | } | ||
384 | .panel-green { | ||
385 | border-color: #5cb85c; | ||
386 | } | ||
387 | |||
388 | .panel-green .panel-heading { | ||
389 | border-color: #5cb85c; | ||
390 | color: #fff; | ||
391 | background-color: #5cb85c; | ||
392 | } | ||
393 | |||
394 | .panel-green a { | ||
395 | color: #5cb85c; | ||
396 | } | ||
397 | |||
398 | .panel-green a:hover { | ||
399 | color: #3d8b3d; | ||
400 | } | ||
401 | |||
402 | .panel-red { | ||
403 | border-color: #d9534f; | ||
404 | } | ||
405 | |||
406 | .panel-red .panel-heading { | ||
407 | border-color: #d9534f; | ||
408 | color: #fff; | ||
409 | background-color: #d9534f; | ||
410 | } | ||
411 | |||
412 | .panel-red a { | ||
413 | color: #d9534f; | ||
414 | } | ||
415 | |||
416 | .panel-red a:hover { | ||
417 | color: #b52b27; | ||
418 | } | ||
419 | |||
420 | .panel-yellow { | ||
421 | border-color: #f0ad4e; | ||
422 | } | ||
423 | |||
424 | .panel-yellow .panel-heading { | ||
425 | border-color: #f0ad4e; | ||
426 | color: #fff; | ||
427 | background-color: #f0ad4e; | ||
428 | } | ||
429 | |||
430 | .panel-yellow a { | ||
431 | color: #f0ad4e; | ||
432 | } | ||
433 | |||
434 | .panel-yellow a:hover { | ||
435 | color: #df8a13; | ||
436 | } | ||
437 | |||
438 | .camelCase { | ||
439 | text-transform: none; | ||
440 | } | ||
441 | |||
442 | background{ | ||
443 | z-index: 0; | ||
444 | position:absolute; | ||
445 | left:0px; | ||
446 | right:0px; | ||
447 | top:-21px; | ||
448 | bottom:0px; | ||
449 | background-size: cover; | ||
450 | } | ||
451 | |||
452 | .panel-Content { | ||
453 | padding:0px | ||
454 | } | ||
455 | |||
456 | .gridListdemoBasicUsage md-grid-list { | ||
457 | margin: 8px; } | ||
458 | |||
459 | .gridListdemoBasicUsage .orangered { | ||
460 | background: #A66866; } | ||
461 | |||
462 | .gridListdemoBasicUsage .green { | ||
463 | background: #337ab7; } | ||
464 | |||
465 | .gridListdemoBasicUsage .yellow { | ||
466 | background: #f0ad4e; } | ||
467 | |||
468 | .gridListdemoBasicUsage .blue { | ||
469 | background: #84ffff; } | ||
470 | |||
471 | .gridListdemoBasicUsage .purple { | ||
472 | background: #b388ff; } | ||
473 | |||
474 | .gridListdemoBasicUsage .red { | ||
475 | background: #ff8a80; } | ||
476 | |||
477 | .gridListdemoBasicUsage md-grid-tile { | ||
478 | transition: all 400ms ease-out 50ms; } | ||
479 | |||
480 | /* Custom css */ | ||
481 | |||
482 | .gridContent{ | ||
483 | width:100%; | ||
484 | height:auto; | ||
485 | padding:10%; | ||
486 | color:#fff; | ||
487 | } | ||
488 | .fl{ | ||
489 | float:left; | ||
490 | } | ||
491 | .fr{ | ||
492 | float:right; | ||
493 | } | ||
494 | .cl{ | ||
495 | clear:both; | ||
496 | } | ||
497 | |||
498 | .selectFont{ | ||
499 | font-size: 17px; | ||
500 | } | ||
501 | |||
502 | .heading{ | ||
503 | color:#757575; | ||
504 | position:absolute; | ||
505 | z-index:9; | ||
506 | left:0; | ||
507 | right:0; | ||
508 | top:0; | ||
509 | } |
src/app/stylesheets/_table.scss
File was created | 1 | // This file based on http://codepen.io/zavoloklom/pen/IGkDz | |
2 | |||
3 | // VARIABLES | ||
4 | $table-header-font-weight: 400; | ||
5 | $table-header-font-color: #757575; | ||
6 | |||
7 | $table-cell-padding: 1.2rem; | ||
8 | |||
9 | $table-bg: #fff; | ||
10 | $table-bg-accent: #f5f5f5; | ||
11 | $table-bg-hover: rgba(0,0,0,.12); | ||
12 | $table-bg-active: $table-bg-hover; | ||
13 | $table-border-color: #e0e0e0; | ||
14 | |||
15 | |||
16 | // MIXINS | ||
17 | @mixin transition($transition-property, $transition-time, $method) { | ||
18 | -webkit-transition: $transition-property $transition-time $method; | ||
19 | -moz-transition: $transition-property $transition-time $method; | ||
20 | -ms-transition: $transition-property $transition-time $method; | ||
21 | -o-transition: $transition-property $transition-time $method; | ||
22 | transition: $transition-property $transition-time $method; | ||
23 | } | ||
24 | |||
25 | |||
26 | //TABLES | ||
27 | .table { | ||
28 | border-spacing: 0; | ||
29 | width: 100%; | ||
30 | max-width: 100%; | ||
31 | margin-bottom: 2rem; | ||
32 | background-color: $table-bg; | ||
33 | > thead, | ||
34 | > tbody, | ||
35 | > tfoot { | ||
36 | > tr { | ||
37 | @include transition(all, 0.3s, ease); | ||
38 | > th, | ||
39 | > td { | ||
40 | text-align: left; | ||
41 | padding: $table-cell-padding; | ||
42 | vertical-align: top; | ||
43 | border-top: 0; | ||
44 | @include transition(all, 0.3s, ease); | ||
45 | } | ||
46 | } | ||
47 | } | ||
48 | > thead > tr > th { | ||
49 | font-weight: $table-header-font-weight; | ||
50 | color: $table-header-font-color; | ||
51 | vertical-align: bottom; | ||
52 | border-bottom: 1px solid rgba(0,0,0,.12); | ||
53 | } | ||
54 | > caption + thead, | ||
55 | > colgroup + thead, | ||
56 | > thead:first-child { | ||
57 | > tr:first-child { | ||
58 | > th, | ||
59 | > td { | ||
60 | border-top: 0; | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | > tbody + tbody { | ||
65 | border-top: 1px solid rgba(0,0,0,.12); | ||
66 | } | ||
67 | |||
68 | // Nesting | ||
69 | .table { | ||
70 | background-color: $table-bg; | ||
71 | } | ||
72 | |||
73 | // Remove border | ||
74 | .no-border { | ||
75 | border: 0; | ||
76 | } | ||
77 | } | ||
78 | |||
79 | // Bordered version | ||
80 | // | ||
81 | // Add horizontal borders between columns. | ||
82 | .table-bordered { | ||
83 | border: 0; | ||
84 | > thead, | ||
85 | > tbody, | ||
86 | > tfoot { | ||
87 | > tr { | ||
88 | > th, | ||
89 | > td { | ||
90 | border: 0; | ||
91 | border-bottom: 1px solid $table-border-color; | ||
92 | } | ||
93 | } | ||
94 | } | ||
95 | > thead > tr { | ||
96 | > th, | ||
97 | > td { | ||
98 | border-bottom-width: 2px; | ||
99 | } | ||
100 | } | ||
101 | } | ||
102 | |||
103 | |||
104 | // Hover effect | ||
105 | // | ||
106 | .table-hover { | ||
107 | > tbody > tr:hover { | ||
108 | > td, | ||
109 | > th { | ||
110 | background-color: $table-bg-hover; | ||
111 | } | ||
112 | } | ||
113 | } | ||
114 | |||
115 | // Responsive tables (vertical) | ||
116 | // | ||
117 | // Wrap your tables in `.table-responsive-vertical` and we'll make them mobile friendly | ||
118 | // by vertical table-cell display. Only applies <768px. Everything above that will display normally. | ||
119 | // For correct display you must add 'data-title' to each 'td' | ||
120 | .table-responsive-vertical { | ||
121 | |||
122 | @media screen and (max-width: 768px) { | ||
123 | |||
124 | // Tighten up spacing | ||
125 | > .table { | ||
126 | margin-bottom: 0; | ||
127 | background-color: transparent; | ||
128 | > thead, | ||
129 | > tfoot { | ||
130 | display: none; | ||
131 | } | ||
132 | |||
133 | > tbody { | ||
134 | display: block; | ||
135 | |||
136 | > tr { | ||
137 | display: block; | ||
138 | border: 1px solid $table-border-color; | ||
139 | border-radius: 2px; | ||
140 | margin-bottom: $table-cell-padding; | ||
141 | |||
142 | > td { | ||
143 | background-color: $table-bg; | ||
144 | display: block; | ||
145 | vertical-align: middle; | ||
146 | text-align: right; | ||
147 | } | ||
148 | > td[data-title]:before { | ||
149 | content: attr(data-title); | ||
150 | float: left; | ||
151 | font-size: inherit; | ||
152 | font-weight: $table-header-font-weight; | ||
153 | color: $table-header-font-color; | ||
154 | padding-right: 10px; | ||
155 | } | ||
156 | } | ||
157 | } | ||
158 | } | ||
159 | |||
160 | // Special overrides for shadows | ||
161 | &.shadow-z-1 { | ||
162 | -webkit-box-shadow: none; | ||
163 | -moz-box-shadow: none; | ||
164 | box-shadow: none; | ||
165 | > .table > tbody > tr { | ||
166 | border: none; | ||
167 | } | ||
168 | } | ||
169 | |||
170 | // Special overrides for the bordered tables | ||
171 | > .table-bordered { | ||
172 | border: 0; | ||
173 | |||
174 | // Nuke the appropriate borders so that the parent can handle them | ||
175 | > tbody { | ||
176 | > tr { | ||
177 | > td { | ||
178 | border: 0; | ||
179 | border-bottom: 1px solid $table-border-color; | ||
180 | } | ||
181 | > td:last-child { | ||
182 | border-bottom: 0; | ||
183 | } | ||
184 | } | ||
185 | } | ||
186 | } | ||
187 | |||
188 | // Special overrides for the striped tables | ||
189 | > .table-striped { | ||
190 | > tbody > tr > td, | ||
191 | > tbody > tr:nth-child(odd) { | ||
192 | background-color: $table-bg; | ||
193 | } | ||
194 | > tbody > tr > td:nth-child(odd) { | ||
195 | background-color: $table-bg-accent; | ||
196 | } | ||
197 | } | ||
198 | |||
199 | // Special overrides for hover tables | ||
200 | > .table-hover { | ||
201 | > tbody { | ||
202 | > tr:hover > td, | ||
203 | > tr:hover { | ||
204 | background-color: $table-bg; | ||
205 | } | ||
206 | > tr > td:hover { | ||
207 | background-color: $table-bg-hover; | ||
208 | } | ||
209 | } | ||
210 | } | ||
211 | } | ||
212 | } | ||
213 |
src/assets/images/cart.png
273 Bytes
src/assets/images/ic_business_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z"/> | ||
4 | </svg> |
src/assets/images/ic_clear_white_24px.svg
File was created | 1 | <svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_close_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_close_white_24px.svg
File was created | 1 | <svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_domain_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z"/> | ||
4 | </svg> |
src/assets/images/ic_done_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/> | ||
4 | </svg> |
src/assets/images/ic_email_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_extension_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/> | ||
4 | </svg> |
src/assets/images/ic_functions_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z"/> | ||
4 | </svg> |
src/assets/images/ic_home_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_location_city_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M15 11V5l-3-3-3 3v2H3v14h18V11h-6zm-8 8H5v-2h2v2zm0-4H5v-2h2v2zm0-4H5V9h2v2zm6 8h-2v-2h2v2zm0-4h-2v-2h2v2zm0-4h-2V9h2v2zm0-4h-2V5h2v2zm6 12h-2v-2h2v2zm0-4h-2v-2h2v2z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_open_in_new_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/> | ||
4 | </svg> |
src/assets/images/ic_person_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_person_white_18px.svg
File was created | 1 | <svg fill="#FFFFFF" height="18" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_person_white_24px.svg
File was created | 1 | <svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_phone_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z"/> | ||
4 | </svg> |
src/assets/images/ic_phone_missed_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M6.5 5.5L12 11l7-7-1-1-6 6-4.5-4.5H11V3H5v6h1.5V5.5zm17.21 11.17C20.66 13.78 16.54 12 12 12 7.46 12 3.34 13.78.29 16.67c-.18.18-.29.43-.29.71s.11.53.29.71l2.48 2.48c.18.18.43.29.71.29.27 0 .52-.11.7-.28.79-.74 1.69-1.36 2.66-1.85.33-.16.56-.5.56-.9v-3.1c1.45-.48 3-.73 4.6-.73 1.6 0 3.15.25 4.6.72v3.1c0 .39.23.74.56.9.98.49 1.87 1.12 2.67 1.85.18.18.43.28.7.28.28 0 .53-.11.71-.29l2.48-2.48c.18-.18.29-.43.29-.71s-.12-.52-.3-.7z"/> | ||
4 | </svg> |
src/assets/images/ic_pin_drop_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M18 8c0-3.31-2.69-6-6-6S6 4.69 6 8c0 4.5 6 11 6 11s6-6.5 6-11zm-8 0c0-1.1.9-2 2-2s2 .9 2 2-.89 2-2 2c-1.1 0-2-.9-2-2zM5 20v2h14v-2H5z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_public_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/> | ||
4 | </svg> |
src/assets/images/ic_remove_red_eye_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M0 0h24v24H0z" fill="none"/> | ||
3 | <path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/> | ||
4 | </svg> |
src/assets/images/ic_room_black_24px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/assets/images/ic_transfer_within_a_station_black_18px.svg
File was created | 1 | <svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <g> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | <path d="M16.49 15.5v-1.75L14 16.25l2.49 2.5V17H22v-1.5z"/> | ||
5 | <path d="M19.51 19.75H14v1.5h5.51V23L22 20.5 19.51 18z"/> | ||
6 | <g> | ||
7 | <path d="M9.5 5.5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM5.75 8.9L3 23h2.1l1.75-8L9 17v6h2v-7.55L8.95 13.4l.6-3C10.85 12 12.8 13 15 13v-2c-1.85 0-3.45-1-4.35-2.45l-.95-1.6C9.35 6.35 8.7 6 8 6c-.25 0-.5.05-.75.15L2 8.3V13h2V9.65l1.75-.75"/> | ||
8 | </g> | ||
9 | </g> | ||
10 | </svg> |
src/assets/images/ic_trending_flat_white_24px.svg
File was created | 1 | <svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M22 12l-4-4v3H3v2h15v3z"/> | ||
3 | <path d="M0 0h24v24H0z" fill="none"/> | ||
4 | </svg> |
src/favicon.ico
No preview for this file type
src/index.html
File was created | 1 | <!doctype html> | |
2 | <html class="no-js" ng-app="sbAdminApp"> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <title>Startup Jalsa</title> | ||
6 | <meta name="description" content="Startup Jalsa"> | ||
7 | <meta name="author" content="Shyam Kumar"> | ||
8 | <meta name="viewport" content="width=device-width"> | ||
9 | <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> | ||
10 | |||
11 | <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.min.js"></script> | ||
12 | <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> | ||
13 | |||
14 | <!-- build:css({.tmp/serve,src}) styles/vendor.css --> | ||
15 | <!-- bower:css --> | ||
16 | <!-- run `gulp wiredep` to automaticaly populate bower styles dependencies --> | ||
17 | <!-- endbower --> | ||
18 | <!-- endbuild --> | ||
19 | |||
20 | <!-- build:css({.tmp/serve,src}) styles/app.css --> | ||
21 | <!-- inject:css --> | ||
22 | <!-- css files will be automaticaly insert here --> | ||
23 | <!-- endinject --> | ||
24 | <!-- endbuild --> | ||
25 | </head> | ||
26 | <body> | ||
27 | <!--[if lt IE 10]> | ||
28 | <p>You are using an <strong>outdated</strong> browser. Please | ||
29 | <a href="http://browsehappy.com/">upgrade your browser</a> | ||
30 | to improve your experience.</p> | ||
31 | <![endif]--> | ||
32 | |||
33 | <div ui-view layout="row" layout-fill></div> | ||
34 | |||
35 | <!-- build:js(src) scripts/vendor.js --> | ||
36 | <!-- bower:js --> | ||
37 | <!-- run `gulp wiredep` to automaticaly populate bower script dependencies --> | ||
38 | <!-- endbower --> | ||
39 | <!-- endbuild --> | ||
40 | |||
41 | <!-- build:js({.tmp/serve,.tmp/partials,src}) scripts/app.js --> | ||
42 | <!-- inject:js --> | ||
43 | <!-- js files will be automaticaly insert here --> | ||
44 | <!-- endinject --> | ||
45 | |||
46 | <!-- inject:partials --> | ||
47 | <!-- angular templates will be automatically converted in js and inserted here --> | ||
48 | <!-- endinject --> | ||
49 | <!-- endbuild --> | ||
50 | |||
51 | </body> | ||
52 | </html> |