├── angular-stripped.html ├── api ├── login └── signup ├── bak ├── GruntFile.js ├── Readme first!.txt ├── bower.json ├── grunt │ ├── bower-install-simple.js │ ├── bump.js │ ├── changelog.js │ ├── clean.js │ ├── concat.js │ ├── copy.js │ ├── htmlmin.js │ ├── index.js │ ├── recess.js │ └── uglify.js ├── package.json ├── readme.txt └── update.txt ├── css ├── animate.css ├── app.css ├── bootstrap.css ├── font-awesome.min.css ├── font.css ├── less │ ├── app.arrow.less │ ├── app.butterbar.less │ ├── app.buttons.less │ ├── app.colors.less │ ├── app.components.less │ ├── app.item.less │ ├── app.layout.boxed.less │ ├── app.layout.less │ ├── app.less │ ├── app.mixins.less │ ├── app.nav.dock.less │ ├── app.nav.less │ ├── app.nav.offscreen.less │ ├── app.ng.less │ ├── app.plugin.less │ ├── app.reset.less │ ├── app.utilities.less │ ├── app.variables.less │ └── app.widgets.less └── simple-line-icons.css ├── fonts ├── FontAwesome.otf ├── Simple-Line-Icons.eot ├── Simple-Line-Icons.svg ├── Simple-Line-Icons.ttf ├── Simple-Line-Icons.woff ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf ├── fontawesome-webfont.woff ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── sourcesanspro │ ├── sourcesanspro-bold.woff │ ├── sourcesanspro-light.woff │ └── sourcesanspro.woff ├── img ├── a0.jpg ├── a1.jpg ├── a10.jpg ├── a2.jpg ├── a3.jpg ├── a4.jpg ├── a5.jpg ├── a6.jpg ├── a7.jpg ├── a8.jpg ├── a9.jpg ├── b0.jpg ├── b1.jpg ├── b10.jpg ├── b11.jpg ├── b12.jpg ├── b13.jpg ├── b14.jpg ├── b15.jpg ├── b16.jpg ├── b17.jpg ├── b18.jpg ├── b19.jpg ├── b2.jpg ├── b20.jpg ├── b3.jpg ├── b4.jpg ├── b5.jpg ├── b6.jpg ├── b7.jpg ├── b8.jpg ├── b9.jpg ├── bg.jpg ├── c0.jpg ├── c1.jpg ├── c2.jpg ├── c3.jpg ├── c4.jpg ├── c5.jpg ├── c6.jpg ├── c7.jpg ├── c8.jpg ├── c9.jpg ├── logo.png └── p0.jpg ├── index.html ├── index.min.html ├── js ├── app.js ├── app │ ├── calendar │ │ └── calendar.js │ ├── contact │ │ ├── contact.js │ │ └── contacts.json │ ├── mail │ │ ├── mail-service.js │ │ ├── mail.js │ │ └── mails.json │ ├── map │ │ ├── load-google-maps.js │ │ ├── map.js │ │ └── ui-map.js │ ├── music │ │ ├── ctrl.js │ │ ├── theme.css │ │ └── videogular.css │ ├── note │ │ ├── note.js │ │ └── notes.json │ └── weather │ │ ├── angular-skycons.js │ │ ├── ctrl.js │ │ └── skycons.js ├── config.js ├── config.lazyload.js ├── config.router.js ├── controllers │ ├── bootstrap.js │ ├── chart.js │ ├── editor.js │ ├── file-upload.js │ ├── form.js │ ├── grid.js │ ├── imgcrop.js │ ├── largeLoad.json │ ├── select.js │ ├── signin.js │ ├── signup.js │ ├── slider.js │ ├── tab.js │ ├── toaster.js │ ├── tree.js │ ├── upload.php │ └── vectormap.js ├── directives │ ├── setnganimate.js │ ├── ui-butterbar.js │ ├── ui-focus.js │ ├── ui-fullscreen.js │ ├── ui-jq.js │ ├── ui-module.js │ ├── ui-nav.js │ ├── ui-scroll.js │ ├── ui-shift.js │ ├── ui-toggleclass.js │ └── ui-validate.js ├── filters │ └── fromNow.js ├── main.js └── services │ └── ui-load.js ├── l10n ├── de_DE.js ├── en.js └── it_IT.js ├── tpl ├── app.html ├── app_calendar.html ├── app_dashboard_v1.html ├── app_dashboard_v2.html ├── apps_contact.html ├── apps_note.html ├── apps_weather.html ├── blank.html ├── blocks │ ├── aside.html │ ├── aside.music.html │ ├── header.html │ ├── header.music.html │ ├── nav.html │ ├── page_footer.html │ └── settings.html ├── docs.html ├── form_editor.html ├── form_elements.html ├── form_fileupload.html ├── form_imagecrop.html ├── form_select.html ├── form_slider.html ├── form_validation.html ├── form_wizard.html ├── layout.html ├── layout_app.html ├── layout_footer_fullwidth.html ├── layout_footer_mobile.html ├── layout_fullwidth.html ├── layout_mobile.html ├── mail.detail.html ├── mail.html ├── mail.list.html ├── mail.new.html ├── modal.form.html ├── modal.html ├── music.detail.html ├── music.genres.html ├── music.home.html ├── music.html ├── music.mtv.detail.html ├── music.mtv.html ├── music.player.html ├── music.playlist.html ├── page_404.html ├── page_forgotpwd.html ├── page_invoice.html ├── page_lockme.html ├── page_post.html ├── page_price.html ├── page_profile.html ├── page_search.html ├── page_signin.html ├── page_signup.html ├── table_datatable.html ├── table_footable.html ├── table_grid.html ├── table_static.html ├── ui_bootstrap.html ├── ui_buttons.html ├── ui_chart.html ├── ui_googlemap.html ├── ui_grid.html ├── ui_icons.html ├── ui_jvectormap.html ├── ui_portlet.html ├── ui_sortable.html ├── ui_timeline.html ├── ui_toaster.html ├── ui_tree.html └── ui_widgets.html └── vendor ├── angular ├── angular-animate │ └── angular-animate.js ├── angular-bootstrap │ └── ui-bootstrap-tpls.js ├── angular-cookies │ └── angular-cookies.js ├── angular-resource │ └── angular-resource.js ├── angular-sanitize │ └── angular-sanitize.js ├── angular-touch │ └── angular-touch.js ├── angular-translate │ ├── angular-translate.js │ ├── loader-static-files.js │ ├── storage-cookie.js │ └── storage-local.js ├── angular-ui-router │ └── angular-ui-router.js ├── angular-ui-utils │ └── ui-utils.js ├── angular.js ├── ngstorage │ └── ngStorage.js └── oclazyload │ └── ocLazyLoad.js ├── jquery ├── bootstrap.js ├── charts │ ├── easypiechart │ │ └── jquery.easy-pie-chart.js │ ├── flot │ │ ├── jquery.flot.min.js │ │ ├── jquery.flot.orderBars.js │ │ ├── jquery.flot.pie.min.js │ │ ├── jquery.flot.resize.js │ │ ├── jquery.flot.spline.js │ │ └── jquery.flot.tooltip.min.js │ └── sparkline │ │ └── jquery.sparkline.min.js ├── chosen │ ├── chosen-sprite.png │ ├── chosen-sprite@2x.png │ ├── chosen.css │ └── chosen.jquery.min.js ├── datatables │ ├── dataTables.bootstrap.css │ ├── dataTables.bootstrap.js │ ├── datatable.json │ └── jquery.dataTables.min.js ├── file │ └── bootstrap-filestyle.min.js ├── footable │ ├── fonts │ │ ├── footable.eot │ │ ├── footable.svg │ │ ├── footable.ttf │ │ └── footable.woff │ ├── footable.all.min.js │ └── footable.core.css ├── fullcalendar │ ├── fullcalendar.css │ ├── fullcalendar.min.js │ └── theme.css ├── jquery-ui-1.10.3.custom.min.js ├── jquery.min.js ├── jquery.ui.touch-punch.min.js ├── jvectormap │ ├── jquery-jvectormap-us-aea-en.js │ ├── jquery-jvectormap-world-mill-en.js │ ├── jquery-jvectormap.css │ └── jquery-jvectormap.min.js ├── nestable │ ├── jquery.nestable.js │ └── nestable.css ├── select2 │ ├── select2-bootstrap.css │ ├── select2-spinner.gif │ ├── select2.css │ ├── select2.min.js │ ├── select2.png │ └── select2x2.png ├── slider │ ├── bootstrap-slider.js │ └── slider.css ├── slimscroll │ └── jquery.slimscroll.min.js ├── sortable │ └── jquery.sortable.js ├── spinner │ ├── jquery.bootstrap-touchspin.css │ └── jquery.bootstrap-touchspin.min.js └── wysiwyg │ ├── bootstrap-wysiwyg.js │ └── jquery.hotkeys.js ├── libs ├── moment.min.js └── screenfull.min.js └── modules ├── angular-bootstrap-nav-tree ├── abn_tree.css └── abn_tree_directive.js ├── angular-file-upload └── angular-file-upload.min.js ├── angular-slider ├── angular-slider.css └── angular-slider.min.js ├── angular-ui-calendar └── calendar.js ├── angular-ui-select ├── select.min.css └── select.min.js ├── angularjs-toaster ├── toaster.css └── toaster.js ├── ng-grid ├── ng-grid.min.css ├── ng-grid.min.js └── theme.css ├── ngImgCrop ├── ng-img-crop.css └── ng-img-crop.js ├── textAngular ├── textAngular-sanitize.min.js └── textAngular.min.js └── videogular ├── plugins ├── buffering.min.js ├── controls.min.js ├── ima-ads.min.js ├── overlay-play.min.js └── poster.min.js └── videogular.min.js /api/login: -------------------------------------------------------------------------------- 1 | { 2 | "user" : { 3 | "name" : "Bossi", 4 | "email": "bossi@g.com" 5 | } 6 | } -------------------------------------------------------------------------------- /api/signup: -------------------------------------------------------------------------------- 1 | { 2 | "user" : { 3 | "name" : "Bossi", 4 | "email": "bossi@g.com" 5 | } 6 | } -------------------------------------------------------------------------------- /bak/GruntFile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | var gtx = require('gruntfile-gtx').wrap(grunt); 3 | 4 | gtx.loadAuto(); 5 | 6 | var gruntConfig = require('./grunt'); 7 | gruntConfig.package = require('./package.json'); 8 | 9 | gtx.config(gruntConfig); 10 | 11 | // We need our bower components in order to develop 12 | gtx.alias('build:dev', ['recess:app', 'copy:dev']); 13 | gtx.alias('build:dist', ['clean:dist', 'copy:dist', 'clean:dists', 'recess:min', 'concat:dist', 'uglify:dist']); 14 | 15 | gtx.alias('release', ['bower-install-simple', 'build:dev', 'bump-commit']); 16 | gtx.alias('release-patch', ['bump-only:patch', 'release']); 17 | gtx.alias('release-minor', ['bump-only:minor', 'release']); 18 | gtx.alias('release-major', ['bump-only:major', 'release']); 19 | gtx.alias('prerelease', ['bump-only:prerelease', 'release']); 20 | 21 | gtx.finalise(); 22 | } -------------------------------------------------------------------------------- /bak/Readme first!.txt: -------------------------------------------------------------------------------- 1 |  2 | --------------------------------------------------------------------------------- 3 | 4 | 唯艾迪网址:http://www.cssmoban.com 主题交易市场 http://ymb.me 5 | 6 | ================================================================================- 7 | ╔---------------------------------------------------------------------------╗ 8 | ┆ ┆ 9 | ┆ 高级商业 WordPress主题 joomla主题 magento主题 网站模板 免费分享下载平台 ┆ 10 | ┆ ┆ 11 | ╚---------------------------------------------------------------------------╝ 12 | ================================================================================ 13 | 14 | 您下载的文件来自于 唯艾迪 http://www.cssmoban.com 15 | 16 | This file shared on 17 | 18 | 主题交易市场 http://ymb.me 19 | 20 | ╔------------------------------------------------------╗ 21 | ┆ ┆ 22 | ┆ WordPress Joomla Magento Site template ┆ 23 | ┆ ┆ 24 | ╚------------------------------------------------------╝ 25 | 26 | ================================================================================ 27 | 28 | Premium WordPress, joomla, magento Themes and Web Templates Free Download 29 | 30 | ================================================================================ -------------------------------------------------------------------------------- /bak/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BootstrapAngularAdminWebApp", 3 | "version": "1.3.3", 4 | "authors": [ 5 | "Flatfull" 6 | ], 7 | "description": "Admin web application template with Bootstrap 3 and AngularJS.", 8 | "keywords": [ 9 | "AngularJS", 10 | "admin", 11 | "admin", 12 | "dashboard", 13 | "admin", 14 | "panel", 15 | "app", 16 | "charts", 17 | "components", 18 | "flat", 19 | "flat", 20 | "ui", 21 | "responsive", 22 | "responsive", 23 | "layout", 24 | "ui", 25 | "kit", 26 | "ui", 27 | "route", 28 | "web", 29 | "app", 30 | "widgets" 31 | ], 32 | "license": "Envato REGULAR LICENSE", 33 | "homepage": "http://themeforest.net/item/angulr-bootstrap-admin-web-app-with-angularjs/8437259", 34 | "private": true, 35 | "ignore": [ 36 | "**/.*", 37 | "node_modules", 38 | "bower_components", 39 | "test", 40 | "tests" 41 | ], 42 | "dependencies": { 43 | "font-awesome": "~4.2.0", 44 | "bootstrap": "3.3.0", 45 | "angular": "1.3.2", 46 | "angular-animate": "1.3.2", 47 | "angular-cookies": "1.3.2", 48 | "angular-resource": "1.3.2", 49 | "angular-touch": "1.3.2", 50 | "angular-sanitize": "1.3.2", 51 | "angular-translate": "~2.2.0", 52 | "angular-ui-router": "~0.2.11", 53 | "ngstorage": "~0.3.0", 54 | "oclazyload": "0.5.0", 55 | "angular-bootstrap": "0.12.0", 56 | "angular-ui-utils": "~0.1.1", 57 | "moment": "~2.8.3", 58 | "screenfull": "~1.2.1", 59 | "angular-bootstrap-nav-tree": "*", 60 | "angular-file-upload": "~1.1.1", 61 | "ngImgCrop": "~0.2.0", 62 | "angular-ui-select": "~0.8.3", 63 | "angular-ui-calendar": "latest", 64 | "angularjs-toaster": "~0.4.8", 65 | "ng-grid": "~2.0.13", 66 | "textAngular": "~1.2.2", 67 | "venturocket-angular-slider": "~0.3.2", 68 | "videogular": "0.7.0", 69 | "videogular-controls": "~0.7.0", 70 | "videogular-buffering": "~0.7.0", 71 | "videogular-overlay-play": "~0.7.0", 72 | "videogular-poster": "~0.7.0", 73 | "videogular-ima-ads": "~0.7.0" 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /bak/grunt/bower-install-simple.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | options: { 3 | color: false, 4 | production: false, 5 | directory: 'bower_components' 6 | } 7 | }; -------------------------------------------------------------------------------- /bak/grunt/bump.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | options: { 3 | files: ['package.json', 'bower.json'], 4 | updateConfigs: ['package'], 5 | commit: true, 6 | commitMessage: 'Release v%VERSION%', 7 | commitFiles: ['-a'], 8 | createTag: true, 9 | tagName: 'v%VERSION%', 10 | tagMessage: 'Version %VERSION%', 11 | push: true, 12 | pushTo: 'origin', 13 | gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' 14 | } 15 | } -------------------------------------------------------------------------------- /bak/grunt/changelog.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | release: { 3 | options: { 4 | insertType: "prepend", 5 | template: '## Release v<%= package.version %>:\n\n{{> features}}{{> fixes}}\n\n', 6 | partials: { 7 | features: '#### Features:\n\n{{#if features}}{{#each features}}{{> feature}}{{/each}}{{else}}{{> empty}}{{/if}}\n', 8 | fixes: '#### Bugfixes:\n\n{{#if fixes}}{{#each fixes}}{{> fix}}{{/each}}{{else}}{{> empty}}{{/if}}', 9 | empty: ' - (none)\n' 10 | }, 11 | dest: "update.txt" 12 | } 13 | } 14 | }; -------------------------------------------------------------------------------- /bak/grunt/clean.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dist: ['dist/*'], 3 | dists:[ 4 | 'dist/css/**', 5 | 'dist/js/*.js', 6 | 'dist/vendor/angular/', 7 | 'dist/js/directives', 8 | 'dist/js/services', 9 | 'dist/js/filters', 10 | 'dist/index.min.html' 11 | ] 12 | }; -------------------------------------------------------------------------------- /bak/grunt/concat.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dist:{ 3 | src:[ 4 | 'src/vendor/jquery/jquery.min.js', 5 | 'src/vendor/angular/angular.js', 6 | 'src/vendor/angular/**/*.js', 7 | 'src/js/*.js', 8 | 'src/js/directives/*.js', 9 | 'src/js/services/*.js', 10 | 'src/js/filters/*.js', 11 | 'src/js/controllers/bootstrap.js' 12 | ], 13 | dest:'dist/js/dist.js' 14 | } 15 | } -------------------------------------------------------------------------------- /bak/grunt/htmlmin.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | min: { 3 | files: [{ 4 | expand: true, 5 | cwd: 'src/tpl/', 6 | src: ['*.html', '**/*.html'], 7 | dest: 'dist/tpl/', 8 | ext: '.html', 9 | extDot: 'first' 10 | }] 11 | } 12 | } -------------------------------------------------------------------------------- /bak/grunt/index.js: -------------------------------------------------------------------------------- 1 | var requireDirectory = require('require-directory'); 2 | module.exports = requireDirectory(module); -------------------------------------------------------------------------------- /bak/grunt/recess.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | app: { 3 | files: { 4 | 'src/css/app.css': [ 5 | 'src/css/less/app.less' 6 | ] 7 | }, 8 | options: { 9 | compile: true 10 | } 11 | }, 12 | min: { 13 | files: { 14 | 'dist/css/app.min.css': [ 15 | 'src/css/bootstrap.css', 16 | 'src/css/*.css' 17 | ] 18 | }, 19 | options: { 20 | compress: true 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /bak/grunt/uglify.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dist:{ 3 | src:[ 4 | 'dist/js/dist.js' 5 | ], 6 | dest:'dist/js/app.min.js' 7 | } 8 | } -------------------------------------------------------------------------------- /bak/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BootstrapAngularAdminWebApp", 3 | "version": "1.3.3", 4 | "description": "Admin web application template with Bootstrap 3 and AngularJS.", 5 | "scripts": { 6 | "start": "node node_modules/http-server/bin/http-server src -o" 7 | }, 8 | "keywords": [ 9 | "AngularJS", 10 | "admin", 11 | "admin", 12 | "dashboard", 13 | "admin", 14 | "panel", 15 | "app", 16 | "charts", 17 | "components", 18 | "flat", 19 | "flat", 20 | "ui", 21 | "responsive", 22 | "responsive", 23 | "layout", 24 | "ui", 25 | "kit", 26 | "ui", 27 | "route", 28 | "web", 29 | "app", 30 | "widgets" 31 | ], 32 | "repository": "https://heyflat@bitbucket.org/heyflat/angulr.git", 33 | "author": "Flatfull", 34 | "license": "Envato REGULAR LICENSE", 35 | "dependencies": {}, 36 | "devDependencies": { 37 | "grunt": "^0.4.5", 38 | "grunt-bower-install-simple": "^0.9.3", 39 | "grunt-bump": "0.0.15", 40 | "grunt-changelog": "^0.2.2", 41 | "grunt-contrib-clean": "^0.6.0", 42 | "grunt-contrib-concat": "^0.5.0", 43 | "grunt-contrib-copy": "^0.5.0", 44 | "grunt-contrib-htmlmin": "^0.3.0", 45 | "grunt-contrib-uglify": "^0.5.1", 46 | "grunt-recess": "^1.0.0", 47 | "gruntfile-gtx": "^0.3.0", 48 | "http-server": "^0.6.1", 49 | "require-directory": "^2.0.0" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /bak/readme.txt: -------------------------------------------------------------------------------- 1 | 1: Please put the files on a server or local host to preview. 2 | eg: put the "/src" files under a localhost "src" folder 3 | 4 | looks like: 5 | "src/css" 6 | "src/fonts" 7 | "src/img" 8 | "src/js" 9 | "src/tpl" 10 | "src/l10n" 11 | "src/index.html" 12 | 13 | then preview: http://localhost/src/index.html in your browser. 14 | 15 | 2: Documents locate "tpl/docs.html" or "http://localhost/src/index.html#/app/docs" 16 | online: http://flatfull.com/themes/angulr/#/app/docs 17 | 18 | 3: Use Grunt and Bower 19 | 20 | install node.js 21 | go to the app root 22 | 23 | >npm install -g grunt-cli 24 | >npm install 25 | >grunt bower-install 26 | >grunt build:dev 27 | >grunt build:dist 28 | >npm start -------------------------------------------------------------------------------- /css/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | font-style: normal; 4 | font-weight: 300; 5 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../fonts/sourcesanspro/sourcesanspro-light.woff') format('woff'); 6 | } 7 | @font-face { 8 | font-family: 'Source Sans Pro'; 9 | font-style: normal; 10 | font-weight: 400; 11 | src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url('../fonts/sourcesanspro/sourcesanspro.woff') format('woff'); 12 | } 13 | @font-face { 14 | font-family: 'Source Sans Pro'; 15 | font-style: normal; 16 | font-weight: 700; 17 | src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../fonts/sourcesanspro/sourcesanspro-bold.woff') format('woff'); 18 | } -------------------------------------------------------------------------------- /css/less/app.butterbar.less: -------------------------------------------------------------------------------- 1 | .butterbar{ 2 | position: relative; 3 | margin-bottom: -@butterbar-height; 4 | height: @butterbar-height; 5 | .bar{ 6 | position: absolute; 7 | height: 0; 8 | width: 100%; 9 | text-indent: -9999px; 10 | background-color: @brand-info; 11 | &:before{ 12 | content: ""; 13 | height: @butterbar-height; 14 | position: absolute; 15 | left: 50%; 16 | right: 50%; 17 | background-color: inherit; 18 | } 19 | } 20 | } 21 | .butterbar.active{ 22 | -webkit-animation: changebar @butterbar-time*3 infinite @butterbar-time; 23 | -moz-animation: changebar @butterbar-time*3 infinite @butterbar-time; 24 | animation: changebar @butterbar-time*3 infinite @butterbar-time; 25 | .bar{ 26 | -webkit-animation: changebar @butterbar-time*3 infinite; 27 | -moz-animation: changebar @butterbar-time*3 infinite; 28 | animation: changebar @butterbar-time*3 infinite; 29 | &:before{ 30 | -webkit-animation: movingbar @butterbar-time infinite; 31 | -moz-animation: movingbar @butterbar-time infinite; 32 | animation: movingbar @butterbar-time infinite; 33 | } 34 | } 35 | } 36 | 37 | /* Moving bar */ 38 | @-webkit-keyframes movingbar{ 39 | 0% { left:50%; right:50% } 40 | 99.9% { left:0%; right:0% } 41 | 100% { left:50%; right:50%} 42 | } 43 | 44 | @-moz-keyframes movingbar{ 45 | 0% { left:50%; right:50% } 46 | 99.9% { left:0%; right:0% } 47 | 100% { left:50%; right:50%} 48 | } 49 | 50 | @keyframes movingbar{ 51 | 0% { left:50%; right:50% } 52 | 99.9% { left:0%; right:0% } 53 | 100% { left:50%; right:50%} 54 | } 55 | 56 | /* change bar */ 57 | @-webkit-keyframes changebar{ 58 | 0% { background-color: @brand-info } 59 | 33.3% { background-color: @brand-info } 60 | 33.33% { background-color: @brand-warning } 61 | 66.6% { background-color: @brand-warning } 62 | 66.66% { background-color: @brand-primary } 63 | 99.9% { background-color: @brand-primary } 64 | } 65 | 66 | @-moz-keyframes changebar{ 67 | 0% { background-color: @brand-info } 68 | 33.3% { background-color: @brand-info } 69 | 33.33% { background-color: @brand-warning } 70 | 66.6% { background-color: @brand-warning } 71 | 66.66% { background-color: @brand-primary } 72 | 99.9% { background-color: @brand-primary } 73 | } 74 | 75 | @keyframes changebar{ 76 | 0% { background-color: @brand-info } 77 | 33.3% { background-color: @brand-info } 78 | 33.33% { background-color: @brand-warning } 79 | 66.6% { background-color: @brand-warning } 80 | 66.66% { background-color: @brand-primary } 81 | 99.9% { background-color: @brand-primary } 82 | } -------------------------------------------------------------------------------- /css/less/app.buttons.less: -------------------------------------------------------------------------------- 1 | .btn{ 2 | font-weight: 500; 3 | border-radius: @btn-border-radius; 4 | outline: 0!important; 5 | } 6 | .btn-link{ 7 | color: @text-color; 8 | &.active{ 9 | webkit-box-shadow:none; 10 | box-shadow:none; 11 | } 12 | } 13 | 14 | .btn-default{ 15 | .button-variant(@text-color, @btn-default-bg, @btn-default-border); 16 | background-color: #fff; 17 | border-bottom-color: darken(@btn-default-border, 2%); 18 | .box-shadow(0 1px 1px rgba(90,90,90,0.1)); 19 | &.btn-bg{ 20 | border-color:rgba(0,0,0,0.1); 21 | background-clip: padding-box; 22 | } 23 | } 24 | 25 | .btn-primary{ 26 | .button-variant(#fff, @brand-primary, @brand-primary); 27 | } 28 | 29 | .btn-success{ 30 | .button-variant(#fff, @brand-success, @brand-success); 31 | } 32 | 33 | .btn-info{ 34 | .button-variant(#fff, @brand-info, @brand-info); 35 | } 36 | 37 | .btn-warning{ 38 | .button-variant(#fff, @brand-warning, @brand-warning); 39 | } 40 | 41 | .btn-danger{ 42 | .button-variant(#fff, @brand-danger, @brand-danger); 43 | } 44 | 45 | .btn-dark{ 46 | .button-variant(#fff, @brand-dark, @brand-dark); 47 | } 48 | 49 | .btn-black{ 50 | .button-variant(#fff, @brand-black, @brand-black); 51 | } 52 | 53 | .btn-icon{ 54 | padding: 0 !important; 55 | text-align: center; 56 | width:34px; 57 | height: 34px; 58 | i{ 59 | top: -1px; 60 | position: relative; 61 | line-height: 34px; 62 | } 63 | &.btn-sm{ 64 | width: 30px; 65 | height: 30px; 66 | i{ 67 | line-height: 30px; 68 | } 69 | } 70 | &.btn-lg{ 71 | width: 45px; 72 | height: 45px; 73 | i{ 74 | line-height: 45px; 75 | } 76 | } 77 | } 78 | 79 | .btn-rounded{ 80 | border-radius: 50px; 81 | padding-left: 15px; 82 | padding-right: 15px; 83 | &.btn-lg{ 84 | padding-left: 25px; 85 | padding-right: 25px; 86 | } 87 | } 88 | 89 | .btn{ 90 | > i{ 91 | &.pull-left, 92 | &.pull-right{ 93 | line-height: @line-height-base; 94 | } 95 | } 96 | } 97 | 98 | .btn-block { 99 | padding-left: 12px; 100 | padding-right: 12px; 101 | } 102 | 103 | .btn-group-vertical > .btn:first-child:not(:last-child){ 104 | border-top-right-radius: @border-radius-base; 105 | } 106 | 107 | .btn-group-vertical > .btn:last-child:not(:first-child){ 108 | border-bottom-left-radius: @border-radius-base; 109 | } 110 | 111 | .btn-addon { 112 | i{ 113 | margin: -7px -12px; 114 | margin-right: 12px; 115 | background-color: rgba(0, 0, 0, 0.1); 116 | width: 34px; 117 | height: 34px; 118 | line-height: 34px; 119 | text-align: center; 120 | float: left; 121 | position: relative; 122 | border-radius: @btn-border-radius 0 0 @btn-border-radius; 123 | &.pull-right{ 124 | margin-right: -12px; 125 | margin-left: 12px; 126 | border-radius: 0 @btn-border-radius @btn-border-radius 0; 127 | } 128 | } 129 | &.btn-sm{ 130 | i{ 131 | margin: -6px -10px; 132 | margin-right: 10px; 133 | width: 30px; 134 | height: 30px; 135 | line-height: 30px; 136 | &.pull-right{ 137 | margin-right: -10px; 138 | margin-left: 10px; 139 | } 140 | } 141 | } 142 | &.btn-lg{ 143 | i{ 144 | margin: -11px -16px; 145 | margin-right: 16px; 146 | width: 45px; 147 | height: 45px; 148 | line-height: 45px; 149 | &.pull-right{ 150 | margin-right: -16px; 151 | margin-left: 16px; 152 | } 153 | } 154 | } 155 | &.btn-default{ 156 | i{ 157 | background-color: transparent; 158 | border-right: 1px solid @border-color; 159 | } 160 | } 161 | } 162 | 163 | .btn-groups .btn{ 164 | margin-bottom: 5px; 165 | } -------------------------------------------------------------------------------- /css/less/app.colors.less: -------------------------------------------------------------------------------- 1 | .bg-gd{ 2 | #gradient > .vertical(rgba(40,50,60,0), rgba(40,50,60,0.075), 0, 100%); 3 | filter:none; 4 | } 5 | 6 | .bg-gd-dk{ 7 | #gradient > .vertical(rgba(40,50,60,0), rgba(40,50,60,0.5), 10%, 100%); 8 | filter:none; 9 | } 10 | 11 | .bg-light { 12 | .color-variant(@brand-light, 2%, 3%, 3%, 5%); 13 | color: @text-color; 14 | } 15 | 16 | .bg-dark { 17 | .color-variant(@brand-dark, 5%, 10%, 5%, 10%); 18 | .font-variant(@brand-dark); 19 | } 20 | 21 | .bg-black { 22 | .color-variant(@brand-black, 5%, 10%, 5%, 10%); 23 | .font-variant(@brand-black); 24 | } 25 | 26 | .bg-primary { 27 | .color-variant(@brand-primary, 5%, 10%, 5%, 10%); 28 | .font-variant(@brand-primary); 29 | } 30 | 31 | .bg-success { 32 | .color-variant(@brand-success, 5%, 10%, 5%, 10%); 33 | .font-variant(@brand-success); 34 | } 35 | 36 | .bg-info { 37 | .color-variant(@brand-info, 5%, 10%, 5%, 10%); 38 | .font-variant(@brand-info); 39 | } 40 | 41 | .bg-warning { 42 | .color-variant(@brand-warning, 5%, 10%, 5%, 10%); 43 | .font-variant(@brand-warning); 44 | } 45 | 46 | .bg-danger { 47 | .color-variant(@brand-danger, 5%, 10%, 5%, 10%); 48 | .font-variant(@brand-danger); 49 | } 50 | 51 | .bg-white { 52 | background-color: #fff; 53 | color: @text-color; 54 | a { 55 | color: @link-color; 56 | &:hover{ 57 | color: darken(@link-color, 10%); 58 | } 59 | } 60 | .text-muted{color: @text-muted !important;} 61 | .lt, 62 | .lter, 63 | .dk, 64 | .dker{ 65 | background-color: #fff; 66 | } 67 | } 68 | .bg-white-only{background-color:#fff;} 69 | .bg-white-opacity{ 70 | background-color: rgba(255, 255, 255, 0.5); 71 | } 72 | .bg-black-opacity{ 73 | background-color: rgba(32, 43, 54, 0.5); 74 | } 75 | 76 | a.bg-light{ 77 | &:hover{ 78 | color: @link-color; 79 | } 80 | } 81 | 82 | .text-wariant(@brand-primary, primary); 83 | .text-wariant(@brand-info, info); 84 | .text-wariant(@brand-success, success); 85 | .text-wariant(@brand-warning, warning); 86 | .text-wariant(@brand-danger, danger); 87 | .text-wariant(@brand-dark, dark); 88 | .text-wariant(@brand-black, black); 89 | 90 | .text-white { 91 | color: #fff; 92 | } 93 | .text-muted { 94 | color: @text-muted; 95 | } -------------------------------------------------------------------------------- /css/less/app.item.less: -------------------------------------------------------------------------------- 1 | .item{ 2 | position: relative; 3 | .top{ 4 | position: absolute; 5 | top: 0; 6 | left: 0; 7 | } 8 | .bottom{ 9 | position: absolute; 10 | bottom: 0; 11 | left: 0; 12 | } 13 | .center{ 14 | position: absolute; 15 | top:50%; 16 | } 17 | } 18 | .item-overlay{ 19 | display: none; 20 | position: absolute; 21 | top: 0; 22 | right: 0; 23 | bottom: 0; 24 | left: 0; 25 | &.active, 26 | .item:hover & { 27 | display: block; 28 | } 29 | } -------------------------------------------------------------------------------- /css/less/app.layout.boxed.less: -------------------------------------------------------------------------------- 1 | html{ 2 | background: url('../img/bg.jpg'); 3 | background-attachment: fixed; 4 | background-size: cover; 5 | } 6 | 7 | .app.container{ 8 | padding-left: 0; 9 | padding-right: 0; 10 | } 11 | 12 | @media (min-width: 768px) { 13 | .app.container{ 14 | width: 750px; 15 | .box-shadow(0 0 30px rgba(0,0,0,0.3)); 16 | .app-aside{ 17 | overflow-x: hidden; 18 | } 19 | 20 | &.app-aside-folded{ 21 | .app-aside{ 22 | overflow-x: visible; 23 | } 24 | } 25 | &.app-aside-fixed{ 26 | .aside-wrap{ 27 | left: inherit; 28 | } 29 | &.app-aside-folded{ 30 | .app-aside{ 31 | > ul.nav{ 32 | position: absolute; 33 | } 34 | } 35 | } 36 | } 37 | 38 | .app-header, 39 | .app-aside{ 40 | max-width: 750px; 41 | } 42 | .app-footer-fixed{ 43 | left: auto; 44 | right: auto; 45 | width: 100%; 46 | max-width: 750 - @app-aside-width; 47 | } 48 | &.app-aside-folded{ 49 | .app-footer-fixed{ 50 | max-width: 750 - @app-aside-folded-width; 51 | } 52 | } 53 | &.app-aside-dock{ 54 | .app-footer-fixed{ 55 | max-width: 750px; 56 | } 57 | } 58 | } 59 | } 60 | 61 | @media (min-width: 992px) { 62 | .app.container{ 63 | width: 970px; 64 | .app-header, 65 | .app-aside{ 66 | max-width: 970px; 67 | } 68 | .app-footer-fixed{ 69 | max-width: 970 - @app-aside-width; 70 | } 71 | &.app-aside-folded{ 72 | .app-footer-fixed{ 73 | max-width: 970 - @app-aside-folded-width; 74 | } 75 | } 76 | &.app-aside-dock{ 77 | .app-footer-fixed{ 78 | max-width: 970px; 79 | } 80 | } 81 | } 82 | } 83 | 84 | @media (min-width: 1200px) { 85 | .app.container{ 86 | width: 1170px; 87 | .app-header, 88 | .app-aside{ 89 | max-width: 1170px; 90 | } 91 | .app-footer-fixed{ 92 | max-width: 1170 - @app-aside-width; 93 | } 94 | &.app-aside-folded{ 95 | .app-footer-fixed{ 96 | max-width: 1170 - @app-aside-folded-width; 97 | } 98 | } 99 | &.app-aside-dock{ 100 | .app-footer-fixed{ 101 | max-width: 1170px; 102 | } 103 | } 104 | } 105 | } -------------------------------------------------------------------------------- /css/less/app.less: -------------------------------------------------------------------------------- 1 | // Core variables and mixins 2 | @import "app.variables.less"; 3 | @import "app.mixins.less"; 4 | 5 | @import "app.reset.less"; 6 | @import "app.layout.less"; 7 | @import "app.layout.boxed.less"; 8 | @import "app.nav.less"; 9 | @import "app.nav.offscreen.less"; 10 | @import "app.nav.dock.less"; 11 | 12 | @import "app.arrow.less"; 13 | @import "app.buttons.less"; 14 | @import "app.widgets.less"; 15 | 16 | @import "app.components.less"; 17 | @import "app.plugin.less"; 18 | @import "app.item.less"; 19 | @import "app.ng.less"; 20 | 21 | @import "app.colors.less"; 22 | @import "app.utilities.less"; 23 | 24 | @import "app.butterbar.less"; -------------------------------------------------------------------------------- /css/less/app.nav.dock.less: -------------------------------------------------------------------------------- 1 | @media (min-width: @app-aside-dock-media) { 2 | .app-aside-dock{ 3 | .app-content, 4 | .app-footer{ 5 | margin-left: 0; 6 | } 7 | .app-aside-footer ~ div{ 8 | padding-bottom: 0; 9 | } 10 | &.app-aside-fixed{ 11 | &.app-header-fixed{ 12 | padding-top: 115px; 13 | } 14 | .app-aside{ 15 | position: fixed; 16 | top: 50px; 17 | width: 100%; 18 | z-index: 1000; 19 | } 20 | } 21 | .app-aside, 22 | .aside-wrap, 23 | .navi-wrap{ 24 | float: none; 25 | width: 100% !important; 26 | position: relative; 27 | top: 0; 28 | overflow: visible !important; 29 | } 30 | 31 | .app-aside{ 32 | bottom: auto !important; 33 | &.b-r{ 34 | border-right-width: 0; 35 | border-bottom:1px solid @border-color; 36 | } 37 | &:before { 38 | display: none; 39 | } 40 | nav > .nav{ 41 | float: left; 42 | } 43 | .hidden-folded, 44 | .line, 45 | .navi-wrap > div{ 46 | display: none !important; 47 | } 48 | .navi > ul > li{ 49 | position: relative; 50 | float: left; 51 | display: inline-block; 52 | > a{ 53 | padding: 10px 15px 12px 15px; 54 | text-align: center; 55 | height: auto; 56 | > .badge, 57 | > .label{ 58 | position: absolute; 59 | top: 5px; 60 | right: 8px; 61 | padding: 1px 4px; 62 | } 63 | > i{ 64 | margin-left: auto; 65 | margin-right: auto; 66 | margin-bottom: -7px; 67 | margin-top: -10px; 68 | display: block; 69 | float: none; 70 | font-size: 14px; 71 | line-height: 40px; 72 | width: 40px; 73 | } 74 | > span.pull-right{ 75 | position: absolute; 76 | bottom: 2px; 77 | left: 50%; 78 | margin-left: -6px; 79 | display: block !important; 80 | line-height: 1; 81 | i { 82 | &.text{ 83 | .rotate(90deg); 84 | line-height: 14px; 85 | } 86 | line-height: 12px; 87 | width: 12px; 88 | font-size: 12px; 89 | } 90 | } 91 | > span{ 92 | font-weight: normal; 93 | display: block; 94 | } 95 | } 96 | .nav-sub{ 97 | height: auto !important; 98 | display: none; 99 | position: absolute; 100 | left: 0; 101 | top: auto !important; 102 | z-index: 1050; 103 | width: @app-aside-width; 104 | .box-shadow(0 2px 6px rgba(0,0,0,0.1)); 105 | } 106 | .nav-sub-header{ 107 | display: none !important; 108 | } 109 | } 110 | .navi li li a{ 111 | padding-left: 15px; 112 | } 113 | .navi li:hover, 114 | .navi li:focus, 115 | .navi li:active{ 116 | .nav-sub{ 117 | display: block; 118 | opacity: 1; 119 | margin-left: 0; 120 | height: auto !important; 121 | overflow: auto; 122 | } 123 | } 124 | } 125 | } 126 | } -------------------------------------------------------------------------------- /css/less/app.nav.less: -------------------------------------------------------------------------------- 1 | .nav-sub{ 2 | opacity: 0; 3 | height: 0; 4 | overflow: hidden; 5 | margin-left: -20px; 6 | .transition(all .2s ease-in-out 0s); 7 | 8 | .active &, 9 | .app-aside-folded li:hover &, 10 | .app-aside-folded li:focus &, 11 | .app-aside-folded li:active &{ 12 | opacity: 1; 13 | margin-left: 0; 14 | height: auto !important; 15 | overflow: auto; 16 | } 17 | } 18 | 19 | .nav-sub-header { 20 | display: none !important; 21 | a{ 22 | padding: floor((@app-aside-folded-nav-height - @line-height-computed)/2) 20px; 23 | } 24 | } 25 | 26 | .navi { 27 | ul.nav { 28 | li { 29 | display: block; 30 | position: relative; 31 | li { 32 | a { 33 | padding-left: @app-aside-nav-height + 15px; 34 | } 35 | } 36 | a { 37 | font-weight: normal; 38 | text-transform: none; 39 | display: block; 40 | padding: floor((@app-aside-nav-height - @line-height-computed)/2) 20px; 41 | position: relative; 42 | .transition(background-color .2s ease-in-out 0s); 43 | .badge, 44 | .label { 45 | font-size: 11px; 46 | padding: 2px 5px; 47 | margin-top: 2px; 48 | } 49 | > i { 50 | margin: floor(-(@app-aside-nav-height - @line-height-computed)/2) -10px; 51 | line-height: @app-aside-nav-height; 52 | width: @app-aside-nav-height; 53 | float: left; 54 | margin-right: 5px; 55 | text-align: center; 56 | position: relative; 57 | overflow: hidden; 58 | &:before { 59 | position: relative; 60 | z-index: 2; 61 | } 62 | } 63 | } 64 | } 65 | } 66 | } 67 | 68 | @media (min-width: 768px) { 69 | .app-aside-folded{ 70 | .nav-sub-header{ 71 | display: block !important; 72 | a{ 73 | padding: floor((@app-aside-folded-nav-height - @line-height-computed)/2) 20px !important; 74 | } 75 | } 76 | .navi{ 77 | > ul { 78 | > li { 79 | > a { 80 | position: relative; 81 | padding: 0; 82 | text-align: center; 83 | height: @app-aside-folded-nav-height; 84 | border: none; 85 | span { 86 | display: none; 87 | &.pull-right{ 88 | display: none !important; 89 | } 90 | } 91 | i{ 92 | width: auto; 93 | float: none; 94 | display: block; 95 | font-size: 16px; 96 | margin: 0; 97 | line-height: @app-aside-folded-nav-height; 98 | border: none !important; 99 | b{ 100 | left: 0 !important; 101 | } 102 | } 103 | .badge, 104 | .label{ 105 | position: absolute; 106 | right: 12px; 107 | top: 8px; 108 | z-index: 3; 109 | } 110 | } 111 | } 112 | ul{ 113 | height: 0 !important; 114 | position: absolute; 115 | left: 100%; 116 | top: 0 !important; 117 | z-index: 1050; 118 | width: @app-aside-width; 119 | .box-shadow(0 2px 6px rgba(0,0,0,0.1)); 120 | } 121 | } 122 | li { 123 | li{ 124 | a{ 125 | padding-left: 20px !important; 126 | } 127 | } 128 | } 129 | } 130 | } 131 | 132 | .app-aside-folded.app-aside-fixed .app-aside{ 133 | > ul.nav { 134 | &:before{ 135 | content:""; 136 | width: @app-aside-folded-width; 137 | height: @app-aside-folded-nav-height; 138 | position: absolute; 139 | left: -@app-aside-folded-width; 140 | top: 0; 141 | } 142 | z-index: 1010; 143 | opacity: 1; 144 | height: auto; 145 | overflow: visible; 146 | overflow-y: auto; 147 | display: block; 148 | width: @app-aside-width + @app-aside-folded-width; 149 | left: @app-aside-folded-width + 20; 150 | position: fixed; 151 | -webkit-overflow-scrolling: touch; 152 | a{ 153 | padding-left: 20px !important; 154 | padding-right: 20px !important; 155 | } 156 | } 157 | } 158 | } -------------------------------------------------------------------------------- /css/less/app.nav.offscreen.less: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | .app{ 3 | overflow-x: hidden; 4 | } 5 | .app-content{ 6 | .transition-transform(0.2s ease); 7 | } 8 | .off-screen{ 9 | position: absolute; 10 | top: 50px; 11 | bottom: 0; 12 | width: @off-screen-width; 13 | display: block !important; 14 | visibility: visible; 15 | overflow-x: hidden; 16 | overflow-y: auto; 17 | -webkit-overflow-scrolling: touch; 18 | z-index: 1010; 19 | + *{ 20 | background-color: @body-bg; 21 | .transition-transform(0.2s ease); 22 | .backface-visibility(hidden); 23 | .translate3d(@off-screen-width, 0px, 0px); 24 | overflow: hidden; 25 | position: absolute; 26 | width: 100%; 27 | top: 0; 28 | bottom: 0; 29 | left: 0; 30 | right: 0; 31 | z-index: 1015; 32 | padding-top: 50px; 33 | .off-screen-toggle { 34 | display:block !important; 35 | position: absolute; 36 | left: 0; 37 | right: 0; 38 | top: 0; 39 | bottom: 0; 40 | z-index: 1020; 41 | } 42 | } 43 | &.pull-right{ 44 | right: 0; 45 | + *{ 46 | .translate3d(-@off-screen-width, 0px, 0px); 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /css/less/app.ng.less: -------------------------------------------------------------------------------- 1 | .form-validation{ 2 | .form-control{ 3 | &.ng-dirty.ng-invalid{ 4 | border-color: @brand-danger; 5 | } 6 | &.ng-dirty.ng-valid{ 7 | &, 8 | &:focus{ 9 | border-color: @brand-success; 10 | } 11 | } 12 | } 13 | 14 | .i-checks{ 15 | .ng-invalid.ng-dirty + i{ 16 | border-color: @brand-danger; 17 | } 18 | } 19 | } 20 | 21 | .ng-animate .bg-auto:before{ 22 | display: none; 23 | } 24 | 25 | [ui-view].ng-leave { 26 | display: none; 27 | } 28 | 29 | [ui-view].ng-leave.smooth { 30 | display: block; 31 | } 32 | 33 | .smooth.ng-animate{ 34 | position: absolute; 35 | width: 100%; 36 | height: 100%; 37 | overflow: hidden; 38 | } 39 | 40 | // big animation 41 | .fade-in-right-big.ng-enter { 42 | -webkit-animation: fadeInRightBig 0.5s; 43 | animation: fadeInRightBig 0.5s; 44 | } 45 | .fade-in-right-big.ng-leave { 46 | -webkit-animation: fadeOutLeftBig 0.5s; 47 | animation: fadeOutLeftBig 0.5s; 48 | } 49 | 50 | .fade-in-left-big.ng-enter { 51 | -webkit-animation: fadeInLeftBig 0.5s; 52 | animation: fadeInLeftBig 0.5s; 53 | } 54 | .fade-in-left-big.ng-leave { 55 | -webkit-animation: fadeOutRightBig 0.5s; 56 | animation: fadeOutRightBig 0.5s; 57 | } 58 | 59 | .fade-in-up-big.ng-enter { 60 | -webkit-animation: fadeInUpBig 0.5s; 61 | animation: fadeInUpBig 0.5s; 62 | } 63 | .fade-in-up-big.ng-leave { 64 | -webkit-animation: fadeOutUpBig 0.5s; 65 | animation: fadeOutUpBig 0.5s; 66 | } 67 | 68 | .fade-in-down-big.ng-enter { 69 | -webkit-animation: fadeInDownBig 0.5s; 70 | animation: fadeInDownBig 0.5s; 71 | } 72 | .fade-in-down-big.ng-leave { 73 | -webkit-animation: fadeOutDownBig 0.5s; 74 | animation: fadeOutDownBig 0.5s; 75 | } 76 | 77 | // small 78 | .fade-in.ng-enter { 79 | -webkit-animation: fadeIn 0.5s; 80 | animation: fadeIn 0.5s; 81 | } 82 | .fade-in.ng-leave { 83 | -webkit-animation: fadeOut 0.5s; 84 | animation: fadeOut 0.5s; 85 | } 86 | 87 | .fade-in-right.ng-enter { 88 | -webkit-animation: fadeInRight 0.5s; 89 | animation: fadeInRight 0.5s; 90 | } 91 | .fade-in-right.ng-leave { 92 | -webkit-animation: fadeOutLeft 0.5s; 93 | animation: fadeOutLeft 0.5s; 94 | } 95 | 96 | .fade-in-left.ng-enter { 97 | -webkit-animation: fadeInLeft 0.5s; 98 | animation: fadeInLeft 0.5s; 99 | } 100 | .fade-in-left.ng-leave { 101 | -webkit-animation: fadeOutRight 0.5s; 102 | animation: fadeOutRight 0.5s; 103 | } 104 | 105 | .fade-in-up.ng-enter { 106 | -webkit-animation: fadeInUp 0.5s; 107 | animation: fadeInUp 0.5s; 108 | } 109 | .fade-in-up.ng-leave { 110 | -webkit-animation: fadeOutUp 0.5s; 111 | animation: fadeOutUp 0.5s; 112 | } 113 | 114 | .fade-in-down.ng-enter { 115 | -webkit-animation: fadeInDown 0.5s; 116 | animation: fadeInDown 0.5s; 117 | } 118 | .fade-in-down.ng-leave { 119 | -webkit-animation: fadeOutDown 0.5s; 120 | animation: fadeOutDown 0.5s; 121 | } -------------------------------------------------------------------------------- /css/less/app.plugin.less: -------------------------------------------------------------------------------- 1 | /*Charts*/ 2 | .jqstooltip{ 3 | background-color: rgba(0,0,0,0.8) !important; 4 | border: solid 1px #000 !important; 5 | -webkit-border-radius: 3px; 6 | -moz-border-radius: 3px; 7 | border-radius: 3px; 8 | padding: 5px 10px !important; 9 | .box-sizing(content-box); 10 | } 11 | 12 | // easypie 13 | .easyPieChart { 14 | position: relative;text-align: center; 15 | > div{ 16 | position: relative; 17 | z-index: 1; 18 | .text{ 19 | position: absolute; 20 | width: 100%; 21 | top: 60%; 22 | line-height: 1; 23 | } 24 | img{ 25 | margin-top: -4px; 26 | } 27 | } 28 | canvas { 29 | position: absolute; 30 | top: 0; 31 | left: 0; 32 | z-index: 0 33 | } 34 | } 35 | 36 | // flot tip 37 | #flotTip { 38 | padding: 4px 10px; 39 | background-color: rgba(0,0,0,0.8); 40 | border: solid 1px #000 !important; 41 | z-index: 100; 42 | font-size: 12px; 43 | color: #fff; 44 | -webkit-border-radius: 3px; 45 | -moz-border-radius: 3px; 46 | border-radius: 3px; 47 | } 48 | 49 | // flot lengend 50 | .legendColorBox{ 51 | > div{ 52 | border: none !important; 53 | margin: 5px; 54 | > div{ 55 | border-radius: 10px; 56 | } 57 | } 58 | } 59 | 60 | // sortable 61 | .sortable-placeholder{list-style: none;border: 1px dashed #CCC;min-height: 50px;margin-bottom: 5px} -------------------------------------------------------------------------------- /css/less/app.variables.less: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | */ 4 | 5 | @brand-primary: #7266ba; 6 | @brand-info: #23b7e5; 7 | @brand-success: #27c24c; 8 | @brand-warning: #fad733; 9 | @brand-danger: #f05050; 10 | @brand-light: #edf1f2; 11 | @brand-dark: #3a3f51; 12 | @brand-black: #1c2b36; 13 | 14 | @body-bg: lighten(@brand-light, 1%); 15 | @text-color: #58666e; 16 | @text-muted: lighten(@text-color, 25%); 17 | 18 | @font-family-sans-serif: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; 19 | @font-family-serif: Georgia, "Times New Roman", Times, serif; 20 | @font-family-base: @font-family-sans-serif; 21 | 22 | @font-size-base: 14px; 23 | @font-size-lg: ceil(@font-size-base * 1.23); // ~20px 24 | @font-size-md: ceil(@font-size-base * 1.14); // ~16px 25 | @font-size-sm: ceil(@font-size-base * 0.92); // ~13px 26 | @font-size-xs: ceil(@font-size-base * 0.85); // ~12px 27 | 28 | @link-color: darken(@text-color, 15%); 29 | @link-hover-color: darken(@text-color, 30%); 30 | 31 | @border-radius-base: 2px; 32 | @border-color: darken(@brand-light, 5%); 33 | 34 | @line-height-base: 1.42857143; // 20/14 35 | @line-height-computed: floor(@font-size-base * @line-height-base); // ~20px 36 | @icon-css-prefix: i; 37 | 38 | // Buttons 39 | // ------------------------- 40 | 41 | @btn-default-color: @text-color; 42 | @btn-default-bg: lighten(@brand-light, 5%); 43 | @btn-default-border: @border-color; 44 | @btn-border-radius: @border-radius-base; 45 | 46 | @input-border: darken(@border-color, 5%); 47 | @input-border-focus: @brand-info; 48 | @input-border-radius: @border-radius-base; 49 | 50 | @panel-bg: #fff; 51 | @panel-border: @border-color; 52 | @panel-heading-border: lighten(@border-color, 5%); 53 | @panel-list-group-border: lighten(@border-color, 5%); 54 | @panel-border-radius: @border-radius-base; 55 | @panel-heading-bg: lighten(@brand-light, 3%); 56 | @panel-footer-bg: #fff; 57 | 58 | @nav-bg: lighten(@brand-light, 3%); 59 | @badge-bg: darken(@brand-light, 10%); 60 | 61 | @list-group-item-border: lighten(@border-color, 3%); 62 | @list-group-item-hover: lighten(@brand-light, 3%); 63 | @list-group-item-focus: darken(@brand-light, 3%); 64 | @list-group-select-color: #dbeef9; 65 | @list-group-active-color: @brand-info; 66 | 67 | @table-border-color: lighten(@border-color, 4%); 68 | @table-striped-color: lighten(@brand-light, 4.5%);; 69 | 70 | @arrow-width: 8px; 71 | @arrow-color: #fff; 72 | @arrow-outer-width: (@arrow-width + 1); 73 | @arrow-outer-color: rgba(0,0,0,.1); 74 | 75 | @switch-width: 35px; 76 | @switch-height: 20px; 77 | @switch-md-width: 40px; 78 | @switch-md-height: 24px; 79 | @switch-lg-width: 50px; 80 | @switch-lg-height: 30px; 81 | 82 | @app-aside-width: 200px; 83 | @app-aside-nav-height: 40px; 84 | @app-aside-folded-width: 60px; 85 | @app-aside-folded-nav-height: 50px; 86 | @app-aside-dock-media: 992px; 87 | 88 | @app-header-height: 50px; 89 | @app-header-md-height: 60px; 90 | 91 | @scroll-bar-width: 17px; 92 | @butterbar-height: 3px; 93 | @butterbar-time: 0.75s; 94 | 95 | @off-screen-width: 75%; -------------------------------------------------------------------------------- /css/less/app.widgets.less: -------------------------------------------------------------------------------- 1 | // icon list 2 | .list-icon i{font-size: 14px;width:40px;vertical-align:middle;margin:0;display: inline-block;text-align: center;.transition(font-size .2s);} 3 | .list-icon div{line-height: 40px;white-space: nowrap;} 4 | .list-icon div:hover i{font-size:26px;} 5 | 6 | // settings 7 | .settings{ 8 | z-index: 1050; 9 | position: fixed; 10 | top: 120px; 11 | right: -240px; 12 | width: 240px; 13 | .transition(right 0.2s); 14 | } 15 | .settings.active{ 16 | right: -1px; 17 | } 18 | 19 | .settings > .btn{ 20 | background: @panel-heading-bg !important; 21 | border-right-width: 0; 22 | border-color: @border-color; 23 | position: absolute; 24 | left: -42px; 25 | top: -1px; 26 | padding: 10px 15px; 27 | } 28 | 29 | .settings .i-checks span b{ 30 | width: 50%; 31 | height: 20px; 32 | display: inline-block; 33 | float: left; 34 | } 35 | .settings .i-checks span b.header{ 36 | height: 10px; 37 | } 38 | 39 | // streamline 40 | .streamline { 41 | position: relative; 42 | border-color: @border-color; 43 | .sl-item:after, 44 | &:after{ 45 | content: ''; 46 | position: absolute; 47 | background-color: #fff; 48 | border-color: inherit; 49 | border-width: 1px; 50 | border-style: solid; 51 | border-radius: 10px; 52 | width: 9px; 53 | height: 9px; 54 | margin-left: -5px; 55 | bottom: 0; 56 | left: 0; 57 | } 58 | } 59 | 60 | .sl-item{ 61 | border-color: @border-color; 62 | position: relative; 63 | padding-bottom: 1px; 64 | .clearfix(); 65 | &:after{ 66 | top: 6px; 67 | bottom: auto; 68 | } 69 | &.b-l{ 70 | margin-left: -1px; 71 | } 72 | } 73 | 74 | // timeline 75 | .timeline{ 76 | margin: 0; 77 | padding: 0; 78 | } 79 | .tl-item{ 80 | display: block; 81 | .clearfix(); 82 | } 83 | .visible-left{ 84 | display: none; 85 | } 86 | .tl-wrap{ 87 | display: block; 88 | margin-left: 6em; 89 | padding: 15px 0 15px 20px; 90 | border-style: solid; 91 | border-color: @border-color; 92 | border-width: 0 0 0 4px; 93 | .clearfix(); 94 | &:before{ 95 | position: relative; 96 | content: ""; 97 | float: left; 98 | top: 15px; 99 | margin-left: -27px; 100 | width: 10px; 101 | height: 10px; 102 | border-color: inherit; 103 | border-width: 3px; 104 | border-radius: 50%; 105 | border-style: solid; 106 | background: @brand-light; 107 | box-shadow: 0 0 0 4px @body-bg; 108 | } 109 | &:hover:before{ 110 | background: transparent; 111 | border-color: #fff; 112 | } 113 | } 114 | 115 | .tl-date{ 116 | position: relative; 117 | top: 10px; 118 | float: left; 119 | margin-left: -7.5em; 120 | display: block; 121 | width: 4.5em; 122 | text-align: right; 123 | } 124 | 125 | .tl-content{ 126 | display: inline-block; 127 | position: relative; 128 | padding-top: 10px; 129 | padding-bottom: 10px; 130 | &.block{ 131 | display: block; 132 | width: 100%; 133 | } 134 | &.panel{ 135 | margin-bottom: 0; 136 | } 137 | } 138 | 139 | .tl-header{ 140 | display: block; 141 | width: 12em; 142 | text-align: center; 143 | margin-left: 2px; 144 | } 145 | 146 | .timeline-center{ 147 | .tl-item{ 148 | margin-left: 50%; 149 | .tl-wrap{ 150 | margin-left: -2px; 151 | } 152 | } 153 | .tl-header{ 154 | width: auto; 155 | margin: 0; 156 | } 157 | .tl-left{ 158 | margin-left: 0; 159 | margin-right: 50%; 160 | .hidden-left{ 161 | display: none !important; 162 | } 163 | .visible-left{ 164 | display: inherit; 165 | } 166 | .tl-wrap{ 167 | float: right; 168 | margin-right: -2px; 169 | border-left-width: 0; 170 | border-right-width: 4px; 171 | padding-left: 0; 172 | padding-right: 20px; 173 | &:before{ 174 | float: right; 175 | margin-left: 0; 176 | margin-right: -27px; 177 | } 178 | } 179 | .tl-date{ 180 | float: right; 181 | margin-left: 0; 182 | margin-right: -8.5em; 183 | text-align: left; 184 | } 185 | } 186 | } -------------------------------------------------------------------------------- /fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /fonts/Simple-Line-Icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/Simple-Line-Icons.eot -------------------------------------------------------------------------------- /fonts/Simple-Line-Icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/Simple-Line-Icons.ttf -------------------------------------------------------------------------------- /fonts/Simple-Line-Icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/Simple-Line-Icons.woff -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/sourcesanspro/sourcesanspro-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/sourcesanspro/sourcesanspro-bold.woff -------------------------------------------------------------------------------- /fonts/sourcesanspro/sourcesanspro-light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/sourcesanspro/sourcesanspro-light.woff -------------------------------------------------------------------------------- /fonts/sourcesanspro/sourcesanspro.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/fonts/sourcesanspro/sourcesanspro.woff -------------------------------------------------------------------------------- /img/a0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a0.jpg -------------------------------------------------------------------------------- /img/a1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a1.jpg -------------------------------------------------------------------------------- /img/a10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a10.jpg -------------------------------------------------------------------------------- /img/a2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a2.jpg -------------------------------------------------------------------------------- /img/a3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a3.jpg -------------------------------------------------------------------------------- /img/a4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a4.jpg -------------------------------------------------------------------------------- /img/a5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a5.jpg -------------------------------------------------------------------------------- /img/a6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a6.jpg -------------------------------------------------------------------------------- /img/a7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a7.jpg -------------------------------------------------------------------------------- /img/a8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a8.jpg -------------------------------------------------------------------------------- /img/a9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/a9.jpg -------------------------------------------------------------------------------- /img/b0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b0.jpg -------------------------------------------------------------------------------- /img/b1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b1.jpg -------------------------------------------------------------------------------- /img/b10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b10.jpg -------------------------------------------------------------------------------- /img/b11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b11.jpg -------------------------------------------------------------------------------- /img/b12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b12.jpg -------------------------------------------------------------------------------- /img/b13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b13.jpg -------------------------------------------------------------------------------- /img/b14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b14.jpg -------------------------------------------------------------------------------- /img/b15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b15.jpg -------------------------------------------------------------------------------- /img/b16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b16.jpg -------------------------------------------------------------------------------- /img/b17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b17.jpg -------------------------------------------------------------------------------- /img/b18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b18.jpg -------------------------------------------------------------------------------- /img/b19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b19.jpg -------------------------------------------------------------------------------- /img/b2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b2.jpg -------------------------------------------------------------------------------- /img/b20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b20.jpg -------------------------------------------------------------------------------- /img/b3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b3.jpg -------------------------------------------------------------------------------- /img/b4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b4.jpg -------------------------------------------------------------------------------- /img/b5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b5.jpg -------------------------------------------------------------------------------- /img/b6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b6.jpg -------------------------------------------------------------------------------- /img/b7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b7.jpg -------------------------------------------------------------------------------- /img/b8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b8.jpg -------------------------------------------------------------------------------- /img/b9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/b9.jpg -------------------------------------------------------------------------------- /img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/bg.jpg -------------------------------------------------------------------------------- /img/c0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c0.jpg -------------------------------------------------------------------------------- /img/c1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c1.jpg -------------------------------------------------------------------------------- /img/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c2.jpg -------------------------------------------------------------------------------- /img/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c3.jpg -------------------------------------------------------------------------------- /img/c4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c4.jpg -------------------------------------------------------------------------------- /img/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c5.jpg -------------------------------------------------------------------------------- /img/c6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c6.jpg -------------------------------------------------------------------------------- /img/c7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c7.jpg -------------------------------------------------------------------------------- /img/c8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c8.jpg -------------------------------------------------------------------------------- /img/c9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/c9.jpg -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/logo.png -------------------------------------------------------------------------------- /img/p0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chenli1989/a-bootstrap/aec8640d251b9add18de771173768664ebbbbc91/img/p0.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | chenli Angular | Bootstrap Admin Web App with AngularJS 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /index.min.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Be Angular | Bootstrap Admin Web App with AngularJS 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | angular.module('app', [ 5 | 'ngAnimate', 6 | 'ngCookies', 7 | 'ngResource', 8 | 'ngSanitize', 9 | 'ngTouch', 10 | 'ngStorage', 11 | 'ui.router', 12 | 'ui.bootstrap', 13 | 'ui.load', 14 | 'ui.jq', 15 | 'ui.validate', 16 | 'oc.lazyLoad', 17 | 'pascalprecht.translate' 18 | ]); -------------------------------------------------------------------------------- /js/app/contact/contact.js: -------------------------------------------------------------------------------- 1 | app.controller('ContactCtrl', ['$scope', '$http', '$filter', function($scope, $http, $filter) { 2 | $http.get('js/app/contact/contacts.json').then(function (resp) { 3 | $scope.items = resp.data.items; 4 | $scope.item = $filter('orderBy')($scope.items, 'first')[0]; 5 | $scope.item.selected = true; 6 | }); 7 | 8 | $scope.filter = ''; 9 | $scope.groups = [ 10 | {name: 'Coworkers'}, 11 | {name: 'Family'}, 12 | {name: 'Friends'}, 13 | {name: 'Partners'}, 14 | {name: 'Group'} 15 | ]; 16 | 17 | $scope.createGroup = function(){ 18 | var group = {name: 'New Group'}; 19 | group.name = $scope.checkItem(group, $scope.groups, 'name'); 20 | $scope.groups.push(group); 21 | }; 22 | 23 | $scope.checkItem = function(obj, arr, key){ 24 | var i=0; 25 | angular.forEach(arr, function(item) { 26 | if(item[key].indexOf( obj[key] ) == 0){ 27 | var j = item[key].replace(obj[key], '').trim(); 28 | if(j){ 29 | i = Math.max(i, parseInt(j)+1); 30 | }else{ 31 | i = 1; 32 | } 33 | } 34 | }); 35 | return obj[key] + (i ? ' '+i : ''); 36 | }; 37 | 38 | $scope.deleteGroup = function(item){ 39 | $scope.groups.splice($scope.groups.indexOf(item), 1); 40 | }; 41 | 42 | $scope.selectGroup = function(item){ 43 | angular.forEach($scope.groups, function(item) { 44 | item.selected = false; 45 | }); 46 | $scope.group = item; 47 | $scope.group.selected = true; 48 | $scope.filter = item.name; 49 | }; 50 | 51 | $scope.selectItem = function(item){ 52 | angular.forEach($scope.items, function(item) { 53 | item.selected = false; 54 | item.editing = false; 55 | }); 56 | $scope.item = item; 57 | $scope.item.selected = true; 58 | }; 59 | 60 | $scope.deleteItem = function(item){ 61 | $scope.items.splice($scope.items.indexOf(item), 1); 62 | $scope.item = $filter('orderBy')($scope.items, 'first')[0]; 63 | if($scope.item) $scope.item.selected = true; 64 | }; 65 | 66 | $scope.createItem = function(){ 67 | var item = { 68 | group: 'Friends', 69 | avatar:'img/a0.jpg' 70 | }; 71 | $scope.items.push(item); 72 | $scope.selectItem(item); 73 | $scope.item.editing = true; 74 | }; 75 | 76 | $scope.editItem = function(item){ 77 | if(item && item.selected){ 78 | item.editing = true; 79 | } 80 | }; 81 | 82 | $scope.doneEditing = function(item){ 83 | item.editing = false; 84 | }; 85 | 86 | }]); -------------------------------------------------------------------------------- /js/app/mail/mail-service.js: -------------------------------------------------------------------------------- 1 | // A RESTful factory for retreiving mails from 'mails.json' 2 | app.factory('mails', ['$http', function ($http) { 3 | var path = 'js/app/mail/mails.json'; 4 | var mails = $http.get(path).then(function (resp) { 5 | return resp.data.mails; 6 | }); 7 | 8 | var factory = {}; 9 | factory.all = function () { 10 | return mails; 11 | }; 12 | factory.get = function (id) { 13 | return mails.then(function(mails){ 14 | for (var i = 0; i < mails.length; i++) { 15 | if (mails[i].id == id) return mails[i]; 16 | } 17 | return null; 18 | }) 19 | }; 20 | return factory; 21 | }]); -------------------------------------------------------------------------------- /js/app/mail/mail.js: -------------------------------------------------------------------------------- 1 | app.controller('MailCtrl', ['$scope', function($scope) { 2 | $scope.folds = [ 3 | {name: 'Inbox', filter:''}, 4 | {name: 'Starred', filter:'starred'}, 5 | {name: 'Sent', filter:'sent'}, 6 | {name: 'Important', filter:'important'}, 7 | {name: 'Draft', filter:'draft'}, 8 | {name: 'Trash', filter:'trash'} 9 | ]; 10 | 11 | $scope.labels = [ 12 | {name: 'Angular', filter:'angular', color:'#23b7e5'}, 13 | {name: 'Bootstrap', filter:'bootstrap', color:'#7266ba'}, 14 | {name: 'Client', filter:'client', color:'#fad733'}, 15 | {name: 'Work', filter:'work', color:'#27c24c'} 16 | ]; 17 | 18 | $scope.addLabel = function(){ 19 | $scope.labels.push( 20 | { 21 | name: $scope.newLabel.name, 22 | filter: angular.lowercase($scope.newLabel.name), 23 | color: '#ccc' 24 | } 25 | ); 26 | $scope.newLabel.name = ''; 27 | } 28 | 29 | $scope.labelClass = function(label) { 30 | return { 31 | 'b-l-info': angular.lowercase(label) === 'angular', 32 | 'b-l-primary': angular.lowercase(label) === 'bootstrap', 33 | 'b-l-warning': angular.lowercase(label) === 'client', 34 | 'b-l-success': angular.lowercase(label) === 'work' 35 | }; 36 | }; 37 | 38 | }]); 39 | 40 | app.controller('MailListCtrl', ['$scope', 'mails', '$stateParams', function($scope, mails, $stateParams) { 41 | $scope.fold = $stateParams.fold; 42 | mails.all().then(function(mails){ 43 | $scope.mails = mails; 44 | }); 45 | }]); 46 | 47 | app.controller('MailDetailCtrl', ['$scope', 'mails', '$stateParams', function($scope, mails, $stateParams) { 48 | mails.get($stateParams.mailId).then(function(mail){ 49 | $scope.mail = mail; 50 | }) 51 | }]); 52 | 53 | app.controller('MailNewCtrl', ['$scope', function($scope) { 54 | $scope.mail = { 55 | to: '', 56 | subject: '', 57 | content: '' 58 | } 59 | $scope.tolist = [ 60 | {name: 'James', email:'james@gmail.com'}, 61 | {name: 'Luoris Kiso', email:'luoris.kiso@hotmail.com'}, 62 | {name: 'Lucy Yokes', email:'lucy.yokes@gmail.com'} 63 | ]; 64 | }]); 65 | 66 | angular.module('app').directive('labelColor', function(){ 67 | return function(scope, $el, attrs){ 68 | $el.css({'color': attrs.color}); 69 | } 70 | }); -------------------------------------------------------------------------------- /js/app/map/load-google-maps.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * JavaScript - loadGoogleMaps( version, apiKey, language ) 3 | * 4 | * - Load Google Maps API using jQuery Deferred. 5 | * Useful if you want to only load the Google Maps API on-demand. 6 | * - Requires jQuery 1.5 7 | * 8 | * Copyright (c) 2011 Glenn Baker 9 | * Dual licensed under the MIT and GPL licenses. 10 | */ 11 | /*globals window, google, jQuery*/ 12 | var loadGoogleMaps = (function($) { 13 | 14 | var now = $.now(), 15 | 16 | promise; 17 | 18 | return function( version, apiKey, language ) { 19 | 20 | if( promise ) { return promise; } 21 | 22 | //Create a Deferred Object 23 | var deferred = $.Deferred(), 24 | 25 | //Declare a resolve function, pass google.maps for the done functions 26 | resolve = function () { 27 | deferred.resolve( window.google && google.maps ? google.maps : false ); 28 | }, 29 | 30 | //global callback name 31 | callbackName = "loadGoogleMaps_" + ( now++ ), 32 | 33 | // Default Parameters 34 | params = $.extend( 35 | {'sensor': false} 36 | , apiKey ? {"key": apiKey} : {} 37 | , language ? {"language": language} : {} 38 | );; 39 | 40 | //If google.maps exists, then Google Maps API was probably loaded with the