Commit 66ee5529fa54890e5aed7d863edda0c7d69f2851

Authored by Palak Handa
0 parents
Exists in master

initial commit

Showing 65 changed files with 2413 additions and 0 deletions   Show diff stats
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
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
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
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
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
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
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
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
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
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
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
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
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
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> &nbsp &nbsp -->
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>
No preview for this file type
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>