├── .gitattributes
├── .gitignore
├── README.md
├── app.js
├── bower_components
├── angular-bootstrap
│ ├── ui-bootstrap-tpls.min.js
│ └── ui-bootstrap.min.js
├── angular-chart
│ ├── Chart.min.js
│ ├── angular-chart.css
│ └── angular-chart.js
├── angular-ng-table
│ ├── ng-table.min.css
│ └── ng-table.min.js
├── angular-ui-router
│ └── angular-ui-router.min.js
├── angular-validation
│ ├── angular-validation-rule.js
│ └── angular-validation.js
├── angular
│ ├── angular.js
│ ├── angular.min.js
│ └── angular.min.js.map
├── bootstrap
│ ├── bootstrap-responsive.min.css
│ ├── bootstrap.min.css
│ ├── bootstrap.min.js
│ ├── glyphicons-halflings-white.html
│ └── glyphicons-halflings.html
├── font
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.svgz
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfontd41d.eot
└── jquery
│ └── jquery-1.11.0.js
├── css
├── dashboard.css
├── font-awesome.css
├── signin.css
└── style.css
├── img
├── body-bg.png
├── glyphicons-halflings-white.html
├── glyphicons-halflings.html
├── icons-sa7c41345d9.png
├── message_avatar1.png
├── message_avatar2.png
└── signin
│ ├── check.png
│ ├── fb_btn.png
│ ├── password.png
│ ├── twitter_btn.png
│ └── user.png
├── index.html
└── partials
├── common
├── footer.html
├── loginHeader.html
├── mock
│ ├── error.json
│ └── success.json
└── userHeader.html
├── customers
├── addCustomer.html
├── customerTab.html
├── customers.html
├── customers.js
├── editCustomer.html
├── mock
│ ├── customers.json
│ └── get_customer.json
└── viewCustomer.html
├── dashboard
├── dashboard.html
├── dashboard.js
└── mock
│ ├── customers_last_five.json
│ ├── recent_news.json
│ └── todays_stats.json
├── reports
├── mock
│ ├── customers_reports.json
│ └── orders_reports.json
├── reports.html
└── reports.js
└── users
├── login.html
├── mock
└── login.json
├── signup.html
└── users.js
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear on external disk
35 | .Spotlight-V100
36 | .Trashes
37 |
38 | # Directories potentially created on remote AFP share
39 | .AppleDB
40 | .AppleDesktop
41 | Network Trash Folder
42 | Temporary Items
43 | .apdisk
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Please have a look at http://www.amasik.com/angularjs-sample-project/
2 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // Declare app level module which depends on views, and components
4 | var myApp = angular.module('myApp', [
5 | 'ui.router',
6 | 'ui.bootstrap',
7 | 'validation',
8 | 'validation.rule',
9 | 'users',
10 | 'dashboard',
11 | 'reports',
12 | 'customers'
13 | ]);
14 |
15 | //Config phase
16 | myApp.config(function($urlRouterProvider, $httpProvider) {
17 | //session check and redirect to specific state
18 | if(!window.sessionStorage["userInfo"]){
19 | $urlRouterProvider.otherwise("/login");
20 | }else{
21 | $urlRouterProvider.otherwise("/dashboard");
22 | }
23 |
24 | });
25 |
26 | //Run phase
27 | myApp.run(function($rootScope, $state) {
28 | $rootScope.$state = $state; //Get state info in view
29 |
30 | if(window.sessionStorage["userInfo"]){
31 | $rootScope.userInfo = JSON.parse(window.sessionStorage["userInfo"]);
32 | }
33 |
34 | //Check session and redirect to specific page
35 | $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
36 | if(toState && toState.data && toState.data.auth && !window.sessionStorage["userInfo"]){
37 | event.preventDefault();
38 | window.location.href = "#login";
39 | }
40 |
41 | if(!toState && !toState.data && !toState.data.auth && window.sessionStorage["userInfo"]){
42 | event.preventDefault();
43 | window.location.href = "#dashboard";
44 | }
45 | });
46 | });
47 |
48 | //Datatable
49 | myApp.factory('dataTable', ['$filter', 'ngTableParams', function($filter, ngTableParams) {
50 |
51 | var factoryDefinition = {
52 | render: function($scope, config, componentId, data) {
53 |
54 | if(!config) config ={};
55 | var config = angular.extend({}, {page:1, count:10}, config)
56 |
57 | $scope[componentId] = new ngTableParams(config, {
58 | total: data.length, // length of data
59 | getData: function($defer, params) {
60 | // use build-in angular filter
61 | var filteredData = params.filter() ?
62 | $filter('filter')(data, params.filter()) :
63 | data;
64 | var orderedData = params.sorting() ?
65 | $filter('orderBy')(filteredData, params.orderBy()) :
66 | data;
67 | params.total(orderedData.length); // set total for recalc pagination
68 | $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
69 | }
70 | });
71 |
72 |
73 | }
74 | }
75 |
76 | return factoryDefinition;
77 | }
78 | ]);
79 |
80 | //For top sub menu (look others menu)
81 | $(function () {
82 | $('.subnavbar').find ('li').each (function (i) {
83 | var mod = i % 3;
84 | if (mod === 2) {
85 | $(this).addClass ('subnavbar-open-right');
86 | }
87 | });
88 | });
--------------------------------------------------------------------------------
/bower_components/angular-chart/angular-chart.css:
--------------------------------------------------------------------------------
1 | .chart-legend,.bar-legend,.line-legend,.pie-legend,.radar-legend,.polararea-legend,.doughnut-legend{list-style-type:none;margin-top:5px;text-align:center}.chart-legend li,.bar-legend li,.line-legend li,.pie-legend li,.radar-legend li,.polararea-legend li,.doughnut-legend li{display:inline-block;white-space:nowrap;position:relative;margin-bottom:4px;border-radius:5px;padding:2px 8px 2px 28px;font-size:smaller;cursor:default}.chart-legend li span,.bar-legend li span,.line-legend li span,.pie-legend li span,.radar-legend li span,.polararea-legend li span,.doughnut-legend li span{display:block;position:absolute;left:0;top:0;width:20px;height:20px;border-radius:5px}
2 | /*# sourceMappingURL=angular-chart.css.map */
--------------------------------------------------------------------------------
/bower_components/angular-chart/angular-chart.js:
--------------------------------------------------------------------------------
1 | !function(){"use strict";function t(t){return{restrict:"CA",scope:{data:"=",labels:"=",options:"=",series:"=",colours:"=",chartType:"=",legend:"@",click:"="},link:function(e,n){function a(o){if(o&&o.length){var l=t||e.chartType;l&&(g&&g.destroy(),g=r(l,e,n))}}var g,f=document.createElement("div");f.className="chart-container",n.replaceWith(f),f.appendChild(n[0]),"object"==typeof G_vmlCanvasManager&&null!==G_vmlCanvasManager&&"function"==typeof G_vmlCanvasManager.initElement&&G_vmlCanvasManager.initElement(n[0]),e.$watch("data",function(a,f){if(a&&a.length&&(!i(t)||a[0].length)){var c=t||e.chartType;if(c){if(g){if(o(c,a,f))return l(g,c,a,e);g.destroy()}g=r(c,e,n)}}},!0),e.$watch("series",a,!0),e.$watch("labels",a,!0),e.$watch("chartType",function(t){t&&(g&&g.destroy(),g=r(t,e,n))})}}}function o(t,o,r){return o&&r&&o.length&&r.length?i(t)?o.length===r.length&&o[0].length===r[0].length:o.length===r.length:!1}function r(t,o,r){var l=r[0],n=l.getContext("2d"),g=i(t)?a(o.labels,o.data,o.series||[],o.colours):f(o.labels,o.data,o.colours),c=new Chart(n)[t](g,o.options||{});return o.click&&(l.onclick=function(r){if(c.getPointsAtEvent||c.getSegmentsAtEvent){var e=i(t)?c.getPointsAtEvent(r):c.getSegmentsAtEvent(r);o.click(e,r)}}),o.legend&&"false"!==o.legend&&e(r,c),c}function e(t,o){var r=t.parent(),e=r.find("chart-legend"),l=""+o.generateLegend()+"";e.length?e.replaceWith(l):r.append(l)}function l(t,o,r,e){i(o)?t.datasets.forEach(function(t,o){e.colours&&n(t,e.colours[o]),(t.points||t.bars).forEach(function(t,e){t.value=r[o][e]})}):t.segments.forEach(function(t,o){t.value=r[o],e.colours&&n(t,e.colours[o])}),t.update()}function n(t,o){t.fillColor=o.fillColor,t.highlightColor=o.highlightColor,t.strokeColor=o.strokeColor,t.pointColor=o.pointColor,t.pointStrokeColor=o.pointStrokeColor}function i(t){return["Line","Bar","Radar"].indexOf(t)>-1}function a(t,o,r,e){return e=e||Chart.defaults.global.colours,{labels:t,datasets:o.map(function(t,o){var l=g(e[o]);return l.label=r[o],l.data=t,l})}}function g(t){var o={};for(var r in t)t.hasOwnProperty(r)&&(o[r]=t[r]);return o}function f(t,o,r){return r=r||Chart.defaults.global.colours,t.map(function(t,e){return{label:t,value:o[e],color:r[e].strokeColor,highlight:r[e].pointHighlightStroke}})}Chart.defaults.global.responsive=!0,Chart.defaults.global.multiTooltipTemplate="<%if (datasetLabel){%><%=datasetLabel%>: <%}%><%= value %>",Chart.defaults.global.colours=[{fillColor:"rgba(151,187,205,0.2)",strokeColor:"rgba(151,187,205,1)",pointColor:"rgba(151,187,205,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(151,187,205,0.8)"},{fillColor:"rgba(220,220,220,0.2)",strokeColor:"rgba(220,220,220,1)",pointColor:"rgba(220,220,220,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(220,220,220,0.8)"},{fillColor:"rgba(247,70,74,0.2)",strokeColor:"rgba(247,70,74,1)",pointColor:"rgba(247,70,74,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(247,70,74,0.8)"},{fillColor:"rgba(70,191,189,0.2)",strokeColor:"rgba(70,191,189,1)",pointColor:"rgba(70,191,189,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(70,191,189,0.8)"},{fillColor:"rgba(253,180,92,0.2)",strokeColor:"rgba(253,180,92,1)",pointColor:"rgba(253,180,92,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(253,180,92,0.8)"},{fillColor:"rgba(148,159,177,0.2)",strokeColor:"rgba(148,159,177,1)",pointColor:"rgba(148,159,177,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(148,159,177,0.8)"},{fillColor:"rgba(77,83,96,0.2)",strokeColor:"rgba(77,83,96,1)",pointColor:"rgba(77,83,96,1)",pointStrokeColor:"#fff",pointHighlightFill:"#fff",pointHighlightStroke:"rgba(77,83,96,1)"}],angular.module("chart.js",[]).directive("chartBase",function(){return t()}).directive("chartLine",function(){return t("Line")}).directive("chartBar",function(){return t("Bar")}).directive("chartRadar",function(){return t("Radar")}).directive("chartDoughnut",function(){return t("Doughnut")}).directive("chartPie",function(){return t("Pie")}).directive("chartPolarArea",function(){return t("PolarArea")})}();
2 | //# sourceMappingURL=angular-chart.js.map
--------------------------------------------------------------------------------
/bower_components/angular-ng-table/ng-table.min.css:
--------------------------------------------------------------------------------
1 | /*! ngTable v0.3.0 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
2 |
3 | .ng-table th{text-align:center;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-table th.sortable{cursor:pointer}.ng-table th.sortable div{padding-right:18px;position:relative}.ng-table th.sortable div:after,.ng-table th.sortable div:before{content:"";border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:visible;right:8px;top:50%;position:absolute;opacity:.3;margin-top:-4px}.ng-table th.sortable div:before{margin-top:2px;border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000}.ng-table th.sortable div:hover:after,.ng-table th.sortable div:hover:before{opacity:1;visibility:visible}.ng-table th.sortable.sort-desc,.ng-table th.sortable.sort-asc{background-color:rgba(141,192,219,.25);text-shadow:0 1px 1px rgba(255,255,255,.75)}.ng-table th.sortable.sort-desc div:after,.ng-table th.sortable.sort-asc div:after{margin-top:-2px}.ng-table th.sortable.sort-desc div:before,.ng-table th.sortable.sort-asc div:before{visibility:hidden}.ng-table th.sortable.sort-asc div:after,.ng-table th.sortable.sort-asc div:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.sortable.sort-desc div:after{border-bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:.6;-moz-opacity:.6;opacity:.6}.ng-table th.filter .input-filter{margin:0;display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-table+.pagination{margin-top:0}@media only screen and (max-width:800px){.ng-table-responsive{border-bottom:1px solid #999}.ng-table-responsive tr{border-top:1px solid #999;border-left:1px solid #999;border-right:1px solid #999}.ng-table-responsive td:before{position:absolute;padding:8px;left:0;top:0;width:50%;white-space:nowrap;text-align:left;font-weight:700}.ng-table-responsive thead tr th{text-align:left}.ng-table-responsive thead tr.ng-table-filters th{padding:0}.ng-table-responsive thead tr.ng-table-filters th form>div{padding:8px}.ng-table-responsive td{border:0;border-bottom:1px solid #eee;position:relative;padding-left:50%;white-space:normal;text-align:left}.ng-table-responsive td:before{content:attr(data-title-text)}.ng-table-responsive,.ng-table-responsive thead,.ng-table-responsive tbody,.ng-table-responsive th,.ng-table-responsive td,.ng-table-responsive tr{display:block}}
--------------------------------------------------------------------------------
/bower_components/angular-ng-table/ng-table.min.js:
--------------------------------------------------------------------------------
1 | /*! ngTable v0.3.1 by Vitalii Savchuk(esvit666@gmail.com) - https://github.com/esvit/ng-table - New BSD License */
2 | !function(a,b){return"function"==typeof define&&define.amd?(define(["angular"],function(a){return b(a)}),void 0):b(a)}(angular||null,function(a){var b=a.module("ngTable",[]);b.factory("ngTableParams",["$q","$log",function(b,c){var d=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},e=function(e,f){var g=this;this.data=[],this.parameters=function(b,e){if(e=e||!1,a.isDefined(b)){for(var f in b){var g=b[f];if(e&&f.indexOf("[")>=0){for(var i=f.split(/\[(.*)\]/).reverse(),j="",k=0,l=i.length;l>k;k++){var m=i[k];if(""!==m){var n=g;g={},g[j=m]=d(n)?parseFloat(n):n}}"sorting"===j&&(h[j]={}),h[j]=a.extend(h[j]||{},g[j])}else h[f]=d(b[f])?parseFloat(b[f]):b[f]}return c.debug&&c.debug("ngTable: set parameters",h),this}return h},this.settings=function(b){return a.isDefined(b)?(j=a.extend(j,b),c.debug&&c.debug("ngTable: set settings",h),this):j},this.page=function(b){return a.isDefined(b)?this.parameters({page:b}):h.page},this.total=function(b){return a.isDefined(b)?this.settings({total:b}):j.total},this.count=function(b){return a.isDefined(b)?this.parameters({count:b,page:1}):h.count},this.filter=function(b){return a.isDefined(b)?this.parameters({filter:b}):h.filter},this.sorting=function(b){if(2==arguments.length){var c={};return c[b]=arguments[1],this.parameters({sorting:c}),this}return a.isDefined(b)?this.parameters({sorting:b}):h.sorting},this.isSortBy=function(b,c){return a.isDefined(h.sorting[b])&&h.sorting[b]==c},this.orderBy=function(){var a=[];for(var b in h.sorting)a.push(("asc"===h.sorting[b]?"+":"-")+b);return a},this.getData=function(a){a.resolve([])},this.getGroups=function(d,e){var f=b.defer();f.promise.then(function(b){var f={};for(var g in b){var h=b[g],i=a.isFunction(e)?e(h):h[e];f[i]=f[i]||{data:[]},f[i].value=i,f[i].data.push(h)}var j=[];for(var k in f)j.push(f[k]);c.debug&&c.debug("ngTable: refresh groups",j),d.resolve(j)}),this.getData(f,g)},this.generatePagesArray=function(a,b,c){var d,e,f,g,h,j;if(d=11,j=[],h=Math.ceil(b/c),h>1){for(j.push({type:"prev",number:Math.max(1,a-1),active:a>1}),j.push({type:"first",number:1,active:a>1}),f=Math.round((d-5)/2),g=Math.max(2,a-f),e=Math.min(h-1,a+2*f-(a-g)),g=Math.max(2,g-(2*f-(e-g))),i=g;e>=i;)i===g&&2!==i||i===e&&i!==h-1?j.push({type:"more",active:!1}):j.push({type:"page",number:i,active:a!==i}),i++;j.push({type:"last",number:h,active:a!==h}),j.push({type:"next",number:Math.min(h,a+1),active:h>a})}return j},this.url=function(b){b=b||!1;var c=b?[]:{};for(key in h)if(h.hasOwnProperty(key)){var d=h[key],e=encodeURIComponent(key);if("object"==typeof d){for(var f in d)if(!a.isUndefined(d[f])&&""!==d[f]){var g=e+"["+encodeURIComponent(f)+"]";b?c.push(g+"="+encodeURIComponent(d[f])):c[g]=encodeURIComponent(d[f])}}else a.isFunction(d)||a.isUndefined(d)||""===d||(b?c.push(e+"="+encodeURIComponent(d)):c[e]=encodeURIComponent(d))}return c},this.reload=function(){var a=b.defer(),d=this;j.$loading=!0,j.groupBy?j.getGroups(a,j.groupBy,this):j.getData(a,this),c.debug&&c.debug("ngTable: reload data"),a.promise.then(function(a){j.$loading=!1,c.debug&&c.debug("ngTable: current scope",j.$scope),d.data=j.groupBy?j.$scope.$groups=a:j.$scope.$data=a,j.$scope.pages=d.generatePagesArray(d.page(),d.total(),d.count())})},this.reloadPages=function(){var a=this;j.$scope.pages=a.generatePagesArray(a.page(),a.total(),a.count())};var h=this.$params={page:1,count:1,filter:{},sorting:{},group:{},groupBy:null},j={$scope:null,$loading:!1,total:0,counts:[10,25,50,100],getGroups:this.getGroups,getData:this.getData};return this.settings(f),this.parameters(e,!0),this};return e}]);var c=["$scope","ngTableParams","$q",function(a,b){a.$loading=!1,a.params||(a.params=new b),a.params.settings().$scope=a,a.$watch("params.$params",function(){a.params.settings().$scope=a,a.params.reload()},!0),a.sortBy=function(b){var c=a.parse(b.sortable);if(c){var d=a.params.sorting()&&a.params.sorting()[c]&&"desc"===a.params.sorting()[c],e={};e[c]=d?"asc":"desc",a.params.parameters({sorting:e})}}}];return b.directive("ngTable",["$compile","$q","$parse",function(b,d,e){"use strict";return{restrict:"A",priority:1001,scope:!0,controller:c,compile:function(c){var d=[],f=0,g=null,h=c.find("thead");return a.forEach(a.element(c.find("tr")),function(b){b=a.element(b),b.hasClass("ng-table-group")||g||(g=b)}),g?(a.forEach(g.find("td"),function(b){var c=a.element(b);if(!c.attr("ignore-cell")||"true"!==c.attr("ignore-cell")){var g=function(a,b){return function(f){return e(c.attr("x-data-"+a)||c.attr("data-"+a)||c.attr(a))(f,{$columns:d})||b}},h=g("title"," "),i=g("header",!1),j=g("filter",!1)(),k=!1;j&&j.templateURL&&(k=j.templateURL,delete j.templateURL),c.attr("data-title-text",h()),d.push({id:f++,title:h,sortable:g("sortable",!1),"class":c.attr("x-data-header-class")||c.attr("data-header-class")||c.attr("header-class"),filter:j,filterTemplateURL:k,headerTemplateURL:i,filterData:c.attr("filter-data")?c.attr("filter-data"):null,show:c.attr("ng-show")?function(a){return e(c.attr("ng-show"))(a)}:function(){return!0}})}}),function(c,f,g){if(c.$loading=!1,c.$columns=d,c.$watch(g.ngTable,function(b){a.isUndefined(b)||(c.paramsModel=e(g.ngTable),c.params=b)},!0),c.parse=function(b){return a.isDefined(b)?b(c):""},g.showFilter&&c.$parent.$watch(g.showFilter,function(a){c.show_filter=a}),a.forEach(d,function(b){var d;if(b.filterData){if(d=e(b.filterData)(c,{$column:b}),!a.isObject(d)||!a.isObject(d.promise))throw new Error("Function "+b.filterData+" must be instance of $q.defer()");return delete b.filterData,d.promise.then(function(c){a.isArray(c)||(c=[]),c.unshift({title:"-",id:""}),b.data=c})}}),!f.hasClass("ng-table")){c.templates={header:g.templateHeader?g.templateHeader:"ng-table/header.html",pagination:g.templatePagination?g.templatePagination:"ng-table/pager.html"};var i=h.length>0?h:a.element(document.createElement("thead")).attr("ng-include","templates.header"),j=a.element(document.createElement("div")).attr("ng-include","templates.pagination");return f.find("thead").remove(),f.find("tbody"),f.prepend(i),b(i)(c),b(j)(c),f.addClass("ng-table"),f.after(j)}}):void 0}}}]),a.module("ngTable").run(["$templateCache",function(a){a.put("ng-table/filters/select.html",''),a.put("ng-table/filters/text.html",''),a.put("ng-table/header.html",'
|
|
'),a.put("ng-table/pager.html",'')}]),b});
3 | //# sourceMappingURL=ng-table.map
--------------------------------------------------------------------------------
/bower_components/angular-ui-router/angular-ui-router.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * State-based routing for AngularJS
3 | * @version v0.2.11
4 | * @link http://angular-ui.github.com/
5 | * @license MIT License, http://www.opensource.org/licenses/MIT
6 | */
7 | "undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return J(new(J(function(){},{prototype:a})),b)}function e(a){return I(arguments,function(b){b!==a&&I(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var c=[];return b.forEach(a,function(a,b){c.push(b)}),c}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return J({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e "));if(o[c]=d,F(a))m.push(c,[function(){return b.get(a)}],h);else{var e=b.annotate(a);I(e,function(a){a!==c&&g.hasOwnProperty(a)&&k(g[a],a)}),m.push(c,a,e)}n.pop(),o[c]=f}}function l(a){return G(a)&&a.then&&a.$$promises}if(!G(g))throw new Error("'invocables' must be an object");var m=[],n=[],o={};return I(g,k),g=n=o=null,function(d,f,g){function h(){--s||(t||e(r,f.$$values),p.$$values=r,p.$$promises=!0,delete p.$$inheritedValues,o.resolve(r))}function k(a){p.$$failure=a,o.reject(a)}function n(c,e,f){function i(a){l.reject(a),k(a)}function j(){if(!D(p.$$failure))try{l.resolve(b.invoke(e,g,r)),l.promise.then(function(a){r[c]=a,h()},i)}catch(a){i(a)}}var l=a.defer(),m=0;I(f,function(a){q.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,q[a].then(function(b){r[a]=b,--m||j()},i))}),m||j(),q[c]=l.promise}if(l(d)&&g===c&&(g=f,f=d,d=null),d){if(!G(d))throw new Error("'locals' must be an object")}else d=i;if(f){if(!l(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=j;var o=a.defer(),p=o.promise,q=p.$$promises={},r=J({},d),s=1+m.length/3,t=!1;if(D(f.$$failure))return k(f.$$failure),p;f.$$inheritedValues&&e(r,f.$$inheritedValues),f.$$values?(t=e(r,f.$$values),p.$$inheritedValues=f.$$values,h()):(f.$$inheritedValues&&(p.$$inheritedValues=f.$$inheritedValues),J(q,f.$$promises),f.then(h,k));for(var u=0,v=m.length;v>u;u+=3)d.hasOwnProperty(m[u])?h():n(m[u],m[u+1],m[u+2]);return p}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function m(a,b,c){this.fromConfig=function(a,b,c){return D(a.template)?this.fromString(a.template,b):D(a.templateUrl)?this.fromUrl(a.templateUrl,b):D(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return E(a)?a(b):a},this.fromUrl=function(c,d){return E(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function n(a,d){function e(a){return D(a)?this.type.decode(a):p.$$getDefaultValue(this)}function f(b,c,d){if(!/^\w+(-+\w+)*$/.test(b))throw new Error("Invalid parameter name '"+b+"' in pattern '"+a+"'");if(n[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");n[b]=J({type:c||new o,$value:e},d)}function g(a,b,c){var d=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return d;var e=c?"?":"";return d+e+"("+b+")"+e}function h(a){if(!d.params||!d.params[a])return{};var b=d.params[a];return G(b)?b:{value:b}}d=b.isObject(d)?d:{};var i,j=/([:*])(\w+)|\{(\w+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k="^",l=0,m=this.segments=[],n=this.params={};this.source=a;for(var q,r,s,t,u;(i=j.exec(a))&&(q=i[2]||i[3],r=i[4]||("*"==i[1]?".*":"[^/]*"),s=a.substring(l,i.index),t=this.$types[r]||new o({pattern:new RegExp(r)}),u=h(q),!(s.indexOf("?")>=0));)k+=g(s,t.$subPattern(),D(u.value)),f(q,t,u),m.push(s),l=j.lastIndex;s=a.substring(l);var v=s.indexOf("?");if(v>=0){var w=this.sourceSearch=s.substring(v);s=s.substring(0,v),this.sourcePath=a.substring(0,l+v),I(w.substring(1).split(/[&?]/),function(a){f(a,null,h(a))})}else this.sourcePath=a,this.sourceSearch="";k+=g(s)+(d.strict===!1?"/?":"")+"$",m.push(s),this.regexp=new RegExp(k,d.caseInsensitive?"i":c),this.prefix=m[0]}function o(a){J(this,a)}function p(){function a(){return{strict:f,caseInsensitive:e}}function b(a){return E(a)||H(a)&&E(a[a.length-1])}function c(){I(h,function(a){if(n.prototype.$types[a.name])throw new Error("A type named '"+a.name+"' has already been defined.");var c=new o(b(a.def)?d.invoke(a.def):a.def);n.prototype.$types[a.name]=c})}var d,e=!1,f=!0,g=!0,h=[],i={"int":{decode:function(a){return parseInt(a,10)},is:function(a){return D(a)?this.decode(a.toString())===a:!1},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0===parseInt(a,10)?!1:!0},is:function(a){return a===!0||a===!1},pattern:/0|1/},string:{pattern:/[^\/]*/},date:{equals:function(a,b){return a.toISOString()===b.toISOString()},decode:function(a){return new Date(a)},encode:function(a){return[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-")},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/}};p.$$getDefaultValue=function(a){if(!b(a.value))return a.value;if(!d)throw new Error("Injectable functions cannot be called at configuration time");return d.invoke(a.value)},this.caseInsensitive=function(a){e=a},this.strictMode=function(a){f=a},this.compile=function(b,c){return new n(b,J(a(),c))},this.isMatcher=function(a){if(!G(a))return!1;var b=!0;return I(n.prototype,function(c,d){E(c)&&(b=b&&D(a[d])&&E(a[d]))}),b},this.type=function(a,b){return D(b)?(h.push({name:a,def:b}),g||c(),this):n.prototype.$types[a]},this.$get=["$injector",function(a){return d=a,g=!1,n.prototype.$types={},c(),I(i,function(a,b){n.prototype.$types[b]||(n.prototype.$types[b]=new o(a))}),this}]}function q(a,b){function d(a){var b=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(a.source);return null!=b?b[1].replace(/\\(.)/g,"$1"):""}function e(a,b){return a.replace(/\$(\$|\d{1,2})/,function(a,c){return b["$"===c?0:Number(c)]})}function f(a,b,c){if(!c)return!1;var d=a.invoke(b,b,{$match:c});return D(d)?d:!0}function g(b,c,d,e){function f(a,b,c){return"/"===m?a:b?m.slice(0,-1)+a:c?m.slice(1)+a:a}function g(a){function c(a){var c=a(d,b);return c?(F(c)&&b.replace().url(c),!0):!1}if(!a||!a.defaultPrevented){var e,f=i.length;for(e=0;f>e;e++)if(c(i[e]))return;j&&c(j)}}function l(){return h=h||c.$on("$locationChangeSuccess",g)}var m=e.baseHref(),n=b.url();return k||l(),{sync:function(){g()},listen:function(){return l()},update:function(a){return a?void(n=b.url()):void(b.url()!==n&&(b.url(n),b.replace()))},push:function(a,c,d){b.url(a.format(c||{})),d&&d.replace&&b.replace()},href:function(c,d,e){if(!c.validates(d))return null;var g=a.html5Mode(),h=c.format(d);if(e=e||{},g||null===h||(h="#"+a.hashPrefix()+h),h=f(h,g,e.absolute),!e.absolute||!h)return h;var i=!g&&h?"/":"",j=b.port();return j=80===j||443===j?"":":"+j,[b.protocol(),"://",b.host(),j,i,h].join("")}}}var h,i=[],j=null,k=!1;this.rule=function(a){if(!E(a))throw new Error("'rule' must be a function");return i.push(a),this},this.otherwise=function(a){if(F(a)){var b=a;a=function(){return b}}else if(!E(a))throw new Error("'rule' must be a function");return j=a,this},this.when=function(a,c){var g,h=F(c);if(F(a)&&(a=b.compile(a)),!h&&!E(c)&&!H(c))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,c){return h&&(g=b.compile(c),c=["$match",function(a){return g.format(a)}]),J(function(b,d){return f(b,c,a.exec(d.path(),d.search()))},{prefix:F(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(g=b,b=["$match",function(a){return e(g,a)}]),J(function(c,d){return f(c,b,a.exec(d.path()))},{prefix:d(a)})}},j={matcher:b.isMatcher(a),regex:a instanceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,c));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),k=a},this.$get=g,g.$inject=["$location","$rootScope","$injector","$browser"]}function r(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function h(a,b){if(!a)return c;var d=F(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var l=v[e];return!l||!d&&(d||l!==a&&l.self!==a)?c:l}function l(a,b){w[a]||(w[a]=[]),w[a].push(b)}function m(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!F(c)||c.indexOf("@")>=0)throw new Error("State must have a valid name");if(v.hasOwnProperty(c))throw new Error("State '"+c+"'' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):F(b.parent)?b.parent:"";if(e&&!v[e])return l(e,b.self);for(var f in y)E(y[f])&&(b[f]=y[f](b,y.$delegates[f]));if(v[c]=b,!b[x]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){u.$current.navigable==b&&j(a,c)||u.transitionTo(b,a,{location:!1})}]),w[c])for(var g=0;g-1}function o(a){var b=a.split("."),c=u.$current.name.split(".");if("**"===b[0]&&(c=c.slice(c.indexOf(b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(c.indexOf(b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length)return!1;for(var d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return c.join("")===b.join("")}function p(a,b){return F(a)&&!D(b)?y[a]:E(b)&&F(a)?(y[a]&&!y.$delegates[a]&&(y.$delegates[a]=y[a]),y[a]=b,this):this}function q(a,b){return G(a)?b=a:b.name=a,m(b),this}function r(a,e,f,l,m,p,q){function r(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return q.update(),A;if(!g.retry)return null;if(f.$retry)return q.update(),B;var h=u.transition=e.when(g.retry);return h.then(function(){return h!==u.transition?y:(b.options.$retry=!0,u.transitionTo(b.to,b.toParams,b.options))},function(){return A}),q.update(),h}function w(a,c,d,h,i){var j=d?c:k(g(a.params),c),n={$stateParams:j};i.resolve=m.resolve(a.resolve,n,i.resolve,a);var o=[i.resolve.then(function(a){i.globals=a})];return h&&o.push(h),I(a.views,function(c,d){var e=c.resolve&&c.resolve!==a.resolve?c.resolve:{};e.$template=[function(){return f.load(d,{view:c,locals:n,params:j})||""}],o.push(m.resolve(e,n,i.resolve,a).then(function(f){if(E(c.controllerProvider)||H(c.controllerProvider)){var g=b.extend({},e,n);f.$$controller=l.invoke(c.controllerProvider,null,g)}else f.$$controller=c.controller;f.$$state=a,f.$$controllerAs=c.controllerAs,i[d]=f}))}),e.all(o).then(function(){return i})}var y=e.reject(new Error("transition superseded")),z=e.reject(new Error("transition prevented")),A=e.reject(new Error("transition aborted")),B=e.reject(new Error("transition failed"));return t.locals={resolve:null,globals:{$stateParams:{}}},u={params:{},current:t.self,$current:t,transition:null},u.reload=function(){u.transitionTo(u.current,p,{reload:!0,inherit:!1,notify:!1})},u.go=function(a,b,c){return u.transitionTo(a,b,J({inherit:!0,relative:u.$current},c))},u.transitionTo=function(b,c,f){c=c||{},f=J({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var m,n=u.$current,o=u.params,v=n.path,A=h(b,f.relative);if(!D(A)){var B={to:b,toParams:c,options:f},C=r(B,n.self,o,f);if(C)return C;if(b=B.to,c=B.toParams,f=B.options,A=h(b,f.relative),!D(A)){if(!f.relative)throw new Error("No such state '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(A[x])throw new Error("Cannot transition to abstract state '"+b+"'");f.inherit&&(c=i(p,c||{},u.$current,A)),b=A;var E=b.path,F=0,G=E[F],H=t.locals,I=[];if(!f.reload)for(;G&&G===v[F]&&j(c,o,G.ownParams);)H=I[F]=G.locals,F++,G=E[F];if(s(b,n,H,f))return b.self.reloadOnSearch!==!1&&q.update(),u.transition=null,e.when(u.current);if(c=k(g(b.params),c||{}),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,n.self,o).defaultPrevented)return q.update(),z;for(var L=e.when(H),M=F;M=F;d--)g=v[d],g.self.onExit&&l.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=F;d=0?c:c+"@"+(b?b.state.name:"")}function x(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function y(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function z(a,c){var d=["location","inherit","reload"];return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(e,f,g,h){var i=x(g.uiSref,a.current.name),j=null,k=y(f)||a.$current,l="FORM"===f[0].nodeName,m=l?"action":"href",n=!0,o={relative:k,inherit:!0},p=e.$eval(g.uiSrefOpts)||{};b.forEach(d,function(a){a in p&&(o[a]=p[a])});var q=function(b){if(b&&(j=b),n){var c=a.href(i.state,j,o),d=h[1]||h[0];return d&&d.$$setStateInfo(i.state,j),null===c?(n=!1,!1):void(f[0][m]=c)}};i.paramExpr&&(e.$watch(i.paramExpr,function(a){a!==j&&q(a)},!0),j=e.$eval(i.paramExpr)),q(),l||f.bind("click",function(b){var d=b.which||b.button;if(!(d>1||b.ctrlKey||b.metaKey||b.shiftKey||f.attr("target"))){var e=c(function(){a.go(i.state,j,o)});b.preventDefault(),b.preventDefault=function(){c.cancel(e)}}})}}}function A(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs",function(d,e,f){function g(){h()?e.addClass(m):e.removeClass(m)}function h(){return"undefined"!=typeof f.uiSrefActiveEq?a.$current.self===k&&i():a.includes(k.name)&&i()}function i(){return!l||j(l,b)}var k,l,m;m=c(f.uiSrefActiveEq||f.uiSrefActive||"",!1)(d),this.$$setStateInfo=function(b,c){k=a.get(b,y(e)),l=c,g()},d.$on("$stateChangeSuccess",g)}]}}function B(a){return function(b){return a.is(b)}}function C(a){return function(b){return a.includes(b)}}var D=b.isDefined,E=b.isFunction,F=b.isString,G=b.isObject,H=b.isArray,I=b.forEach,J=b.extend,K=b.copy;b.module("ui.router.util",["ng"]),b.module("ui.router.router",["ui.router.util"]),b.module("ui.router.state",["ui.router.router","ui.router.util"]),b.module("ui.router",["ui.router.state"]),b.module("ui.router.compat",["ui.router"]),l.$inject=["$q","$injector"],b.module("ui.router.util").service("$resolve",l),m.$inject=["$http","$templateCache","$injector"],b.module("ui.router.util").service("$templateFactory",m),n.prototype.concat=function(a,b){return new n(this.sourcePath+a+this.sourceSearch,b)},n.prototype.toString=function(){return this.source},n.prototype.exec=function(a,b){var c=this.regexp.exec(a);if(!c)return null;b=b||{};var d,e,f,g=this.parameters(),h=g.length,i=this.segments.length-1,j={};if(i!==c.length-1)throw new Error("Unbalanced capture group in route '"+this.source+"'");for(d=0;i>d;d++)f=g[d],e=this.params[f],j[f]=e.$value(c[d+1]);for(;h>d;d++)f=g[d],e=this.params[f],j[f]=e.$value(b[f]);return j},n.prototype.parameters=function(a){return D(a)?this.params[a]||null:g(this.params)},n.prototype.validates=function(a){var b,c,d=!0,e=this;return I(a,function(a,f){e.params[f]&&(c=e.params[f],b=!a&&D(c.value),d=d&&(b||c.type.is(a)))}),d},n.prototype.format=function(a){var b=this.segments,c=this.parameters();if(!a)return b.join("").replace("//","/");var d,e,f,g,h,i,j=b.length-1,k=c.length,l=b[0];if(!this.validates(a))return null;for(d=0;j>d;d++)g=c[d],f=a[g],h=this.params[g],(D(f)||"/"!==b[d]&&"/"!==b[d+1])&&(null!=f&&(l+=encodeURIComponent(h.type.encode(f))),l+=b[d+1]);for(;k>d;d++)g=c[d],f=a[g],null!=f&&(i=H(f),i&&(f=f.map(encodeURIComponent).join("&"+g+"=")),l+=(e?"&":"?")+g+"="+(i?f:encodeURIComponent(f)),e=!0);return l},n.prototype.$types={},o.prototype.is=function(){return!0},o.prototype.encode=function(a){return a},o.prototype.decode=function(a){return a},o.prototype.equals=function(a,b){return a==b},o.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},o.prototype.pattern=/.*/,b.module("ui.router.util").provider("$urlMatcherFactory",p),q.$inject=["$locationProvider","$urlMatcherFactoryProvider"],b.module("ui.router.router").provider("$urlRouter",q),r.$inject=["$urlRouterProvider","$urlMatcherFactoryProvider"],b.module("ui.router.state").value("$stateParams",{}).provider("$state",r),s.$inject=[],b.module("ui.router.state").provider("$view",s),b.module("ui.router.state").provider("$uiViewScroll",t),u.$inject=["$state","$injector","$uiViewScroll"],v.$inject=["$compile","$controller","$state"],b.module("ui.router.state").directive("uiView",u),b.module("ui.router.state").directive("uiView",v),z.$inject=["$state","$timeout"],A.$inject=["$state","$stateParams","$interpolate"],b.module("ui.router.state").directive("uiSref",z).directive("uiSrefActive",A).directive("uiSrefActiveEq",A),B.$inject=["$state"],C.$inject=["$state"],b.module("ui.router.state").filter("isState",B).filter("includedByState",C)}(window,window.angular);
8 |
--------------------------------------------------------------------------------
/bower_components/angular-validation/angular-validation-rule.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | angular.module('validation.rule', ['validation'])
3 | .config(['$validationProvider',
4 | function($validationProvider) {
5 |
6 | var expression = {
7 | required: function(value) {
8 | return !!value;
9 | },
10 | url: /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/,
11 | email: /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/,
12 | number: /^\d+$/,
13 | validateAlphaspecial: /^[a-zA-Z.,]+$/,
14 | validateAlphanumSpecial: /^[a-zA-Z0-9\s-*&()!@#$%^|\\/\:;?_+=.,`~'"]+$/,
15 | validateNotEmpty: function(value){
16 | if(value.length==0){
17 | return false;
18 | }else{
19 | return true;
20 | }
21 | },
22 | validateNumberWithDollar: function(text){
23 | firstCharName=text.substring(0,1);
24 | totalCharName=text.substring(1,text.length);
25 | //firstCharName = firstCharName.ReplaceAll("$","");
26 | firstCharName = firstCharName.replace(/$/g,"");
27 | text=firstCharName+totalCharName;
28 | text = text.replace(/[,]/g,"");
29 | if (text.indexOf("(") != -1) {
30 | if (text.indexOf(")") != -1) {
31 | text = text.replace(/[(]/g,"-");
32 | } else {
33 | return true;
34 | }
35 | }
36 | text = text.replace(/[)]/g,"");
37 | var dot = text.indexOf(".");
38 | if (dot != -1) {
39 | var dotArr = text.split(".");
40 | if (dotArr.length >= 3) {
41 | text = dotArr[0] + "." +dotArr[1];
42 | }
43 | }
44 | if (text.match(/-/)) {
45 | return true;
46 | }
47 | if (!text.match(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/)) {
48 | return true;
49 | }
50 | return false;
51 | }
52 | };
53 |
54 | var defaultMsg = {
55 | required: {
56 | error: 'This should be Required!!',
57 | success: 'It\'s Required'
58 | },
59 | url: {
60 | error: 'This should be Url',
61 | success: 'It\'s Url'
62 | },
63 | email: {
64 | error: 'This should be Email',
65 | success: 'It\'s Email'
66 | },
67 | number: {
68 | error: 'This should be Number',
69 | success: 'It\'s Number'
70 | }
71 | };
72 |
73 | $validationProvider.setExpression(expression).setDefaultMsg(defaultMsg);
74 |
75 | $validationProvider.showSuccessMessage = false; // or true(default)
76 | $validationProvider.showErrorMessage = true; // or true(default)
77 |
78 | /*$validationProvider.setErrorHTML(function (msg) {
79 | // remember to return your HTML
80 | // eg: return '' + msg + '
';
81 | return "";
82 | });*/
83 | /*$validationProvider.setSuccessHTML(function (msg) {
84 | // eg: return '' + msg + '
';
85 | });*/
86 |
87 | }
88 | ]);
89 |
90 | }).call(this);
91 |
--------------------------------------------------------------------------------
/bower_components/angular-validation/angular-validation.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | angular.module('validation', ['validation.provider', 'validation.directive']);
3 | }).call(this);
4 |
5 | (function() {
6 | angular.module('validation.provider', [])
7 | .provider('$validation', function() {
8 |
9 |
10 | var $injector,
11 | $scope,
12 | $http,
13 | $q,
14 | $timeout,
15 | _this = this;
16 |
17 |
18 | /**
19 | * Setup the provider
20 | * @param injector
21 | */
22 | var setup = function(injector) {
23 | $injector = injector;
24 | $scope = $injector.get('$rootScope');
25 | $http = $injector.get('$http');
26 | $q = $injector.get('$q');
27 | $timeout = $injector.get('$timeout');
28 | };
29 |
30 |
31 | /**
32 | * Define validation type RegExp
33 | * @type {{}}
34 | */
35 | var expression = {};
36 |
37 |
38 | /**
39 | * default error, success message
40 | * @type {{}}
41 | */
42 | var defaultMsg = {};
43 |
44 |
45 | /**
46 | * Allow user to set a custom Expression, do remember set the default message using setDefaultMsg
47 | * @param obj
48 | * @returns {*}
49 | */
50 | this.setExpression = function(obj) {
51 | angular.extend(expression, obj);
52 | return _this;
53 | };
54 |
55 |
56 | /**
57 | * Get the Expression
58 | * @param exprs
59 | * @returns {*}
60 | */
61 | this.getExpression = function(exprs) {
62 | return expression[exprs];
63 | };
64 |
65 |
66 | /**
67 | * Allow user to set default message
68 | * @param obj
69 | * @returns {*}
70 | */
71 | this.setDefaultMsg = function(obj) {
72 | angular.extend(defaultMsg, obj);
73 | return _this;
74 | };
75 |
76 |
77 | /**
78 | * Get the Default Message
79 | * @param msg
80 | * @returns {*}
81 | */
82 | this.getDefaultMsg = function(msg) {
83 | return defaultMsg[msg];
84 | };
85 |
86 |
87 | /**
88 | * Override the errorHTML function
89 | * @param func
90 | * @returns {*}
91 | */
92 | this.setErrorHTML = function(func) {
93 | if (func.constructor !== Function) {
94 | return;
95 | }
96 |
97 | _this.getErrorHTML = func;
98 |
99 | return _this;
100 | };
101 |
102 |
103 | /**
104 | * Invalid message HTML, here's the default
105 | * @param message
106 | * @returns {string}
107 | */
108 | this.getErrorHTML = function(message) {
109 | return '' + message + '
';
110 | };
111 |
112 |
113 | /**
114 | * Override the successHTML function
115 | * @param func
116 | * @returns {*}
117 | */
118 | this.setSuccessHTML = function(func) {
119 | if (func.constructor !== Function) {
120 | return;
121 | }
122 |
123 | _this.getSuccessHTML = func;
124 |
125 | return _this;
126 | };
127 |
128 |
129 | /**
130 | * Valid message HTML, here's the default
131 | * @param message
132 | * @returns {string}
133 | */
134 | this.getSuccessHTML = function(message) {
135 | return '' + message + '
';
136 | };
137 |
138 |
139 | /**
140 | * Whether show the validation success message
141 | * You can easily change this to false in your config
142 | * example: $validationProvider.showSuccessMessage = false;
143 | * @type {boolean}
144 | */
145 | this.showSuccessMessage = true;
146 |
147 |
148 | /**
149 | * Whether show the validation error message
150 | * You can easily change this to false in your config
151 | * example: $validationProvider.showErrorMessage = false;
152 | * @type {boolean}
153 | */
154 | this.showErrorMessage = true;
155 |
156 |
157 | /**
158 | * Check form valid, return true
159 | * checkValid(Form): Check the specific form(Form) valid from angular `$valid`
160 | * @param form
161 | * @returns {boolean}
162 | */
163 | this.checkValid = function(form) {
164 | if (form.$valid === undefined) {
165 | return false;
166 | }
167 | return (form && form.$valid === true);
168 | };
169 |
170 |
171 | /**
172 | * Validate the form when click submit, when `validMethod = submit`
173 | * @param form
174 | * @returns {promise|*}
175 | */
176 | this.validate = function(form) {
177 |
178 | var deferred = $q.defer(),
179 | idx = 0;
180 |
181 | if (form === undefined) {
182 | console.error('This is not a regular Form name scope');
183 | deferred.reject('This is not a regular Form name scope');
184 | return deferred.promise;
185 | }
186 |
187 | if (form.validationId) { // single
188 | $scope.$broadcast(form.$name + 'submit-' + form.validationId, idx++);
189 | } else if (form.constructor === Array) { // multiple
190 | for (var k in form) {
191 | $scope.$broadcast(form[k].$name + 'submit-' + form[k].validationId, idx++);
192 | }
193 | } else {
194 | for (var i in form) { // whole scope
195 | if (form[i] && form[i].hasOwnProperty('$dirty')) {
196 | $scope.$broadcast(i + 'submit-' + form[i].validationId, idx++);
197 | }
198 | }
199 | }
200 |
201 | deferred.promise.success = function(fn) {
202 | deferred.promise.then(function(value) {
203 | fn(value);
204 | });
205 | return deferred.promise;
206 | };
207 |
208 | deferred.promise.error = function(fn) {
209 | deferred.promise.then(null, function(value) {
210 | fn(value);
211 | });
212 | return deferred.promise;
213 | };
214 |
215 | $timeout(function() {
216 | if (_this.checkValid(form)) {
217 | deferred.resolve('success');
218 | } else {
219 | deferred.reject('error');
220 | }
221 | });
222 |
223 | return deferred.promise;
224 | };
225 |
226 |
227 | /**
228 | * reset the specific form
229 | * @param form
230 | */
231 | this.reset = function(form) {
232 |
233 | if (form === undefined) {
234 | console.error('This is not a regular Form name scope');
235 | return;
236 | }
237 |
238 | if (form.validationId) {
239 | $scope.$broadcast(form.$name + 'reset-' + form.validationId);
240 | } else if (form.constructor === Array) {
241 | for (var k in form) {
242 | $scope.$broadcast(form[k].$name + 'reset-' + form[k].validationId);
243 | }
244 | } else {
245 | for (var i in form) {
246 | if (form[i].hasOwnProperty('$dirty')) {
247 | $scope.$broadcast(i + 'reset-' + form[i].validationId);
248 | }
249 | }
250 | }
251 | };
252 |
253 |
254 | /**
255 | * $get
256 | * @returns {{setErrorHTML: *, getErrorHTML: Function, setSuccessHTML: *, getSuccessHTML: Function, setExpression: *, getExpression: Function, setDefaultMsg: *, getDefaultMsg: Function, checkValid: Function, validate: Function, reset: Function}}
257 | */
258 | this.$get = ['$injector',
259 | function($injector) {
260 | setup($injector);
261 | return {
262 | setErrorHTML: this.setErrorHTML,
263 | getErrorHTML: this.getErrorHTML,
264 | setSuccessHTML: this.setSuccessHTML,
265 | getSuccessHTML: this.getSuccessHTML,
266 | setExpression: this.setExpression,
267 | getExpression: this.getExpression,
268 | setDefaultMsg: this.setDefaultMsg,
269 | getDefaultMsg: this.getDefaultMsg,
270 | showSuccessMessage: this.showSuccessMessage,
271 | showErrorMessage: this.showErrorMessage,
272 | checkValid: this.checkValid,
273 | validate: this.validate,
274 | reset: this.reset
275 | };
276 | }
277 | ];
278 |
279 | });
280 | }).call(this);
281 |
282 | (function() {
283 | angular.module('validation.directive', ['validation.provider'])
284 | .directive('validator', ['$injector',
285 | function($injector) {
286 |
287 | var $validationProvider = $injector.get('$validation'),
288 | $q = $injector.get('$q'),
289 | $timeout = $injector.get('$timeout');
290 |
291 | /**
292 | * Do this function if validation valid
293 | * @param element
294 | * @param validMessage
295 | * @param validation
296 | * @param callback
297 | * @param ctrl
298 | * @returns {}
299 | */
300 | var validFunc = function(element, validMessage, validation, callback, ctrl) {
301 | if ($validationProvider.showSuccessMessage) {
302 | element.next().html($validationProvider.getSuccessHTML(validMessage || $validationProvider.getDefaultMsg(validation).success));
303 | } else {
304 | element.next().html('');
305 | }
306 | ctrl.$setValidity(ctrl.$name, true);
307 | if (callback) callback();
308 |
309 | return true;
310 | };
311 |
312 |
313 | /**
314 | * Do this function if validation invalid
315 | * @param element
316 | * @param validMessage
317 | * @param validation
318 | * @param callback
319 | * @param ctrl
320 | * @returns {}
321 | */
322 | var invalidFunc = function(element, validMessage, validation, callback, ctrl) {
323 | if ($validationProvider.showErrorMessage) {
324 | element.next().html($validationProvider.getErrorHTML(validMessage || $validationProvider.getDefaultMsg(validation).error));
325 | } else {
326 | element.next().html('');
327 | }
328 | ctrl.$setValidity(ctrl.$name, false);
329 | if (callback) callback();
330 |
331 | return false;
332 | };
333 |
334 |
335 | /**
336 | * If var is true, focus element when validate end
337 | * @type {boolean}
338 | ***private variable
339 | */
340 | var isFocusElement = false;
341 |
342 |
343 | /**
344 | * Check Validation with Function or RegExp
345 | * @param scope
346 | * @param element
347 | * @param attrs
348 | * @param ctrl
349 | * @param validation
350 | * @param value
351 | * @returns {}
352 | */
353 | var checkValidation = function(scope, element, attrs, ctrl, validation, value) {
354 |
355 | var validators = validation.slice(0),
356 | validator = trim(validators[0]),
357 | leftValidation = validators.slice(1),
358 | successMessage = validator + 'SuccessMessage',
359 | errorMessage = validator + 'ErrorMessage',
360 | expression = $validationProvider.getExpression(validator),
361 | valid = {
362 | success: function() {
363 | validFunc(element, attrs[successMessage], validator, scope.validCallback, ctrl);
364 | if (leftValidation.length) {
365 | checkValidation(scope, element, attrs, ctrl, leftValidation, value);
366 | } else {
367 | return true;
368 | }
369 | },
370 | error: function() {
371 | return invalidFunc(element, attrs[errorMessage], validator, scope.invalidCallback, ctrl);
372 | }
373 | };
374 |
375 | if (expression === undefined) {
376 | console.error('You are using undefined validator "%s"', validator);
377 | if (leftValidation.length) {
378 | checkValidation(scope, element, attrs, ctrl, leftValidation, value);
379 | } else {
380 | return;
381 | }
382 | }
383 | // Check with Function
384 | if (expression.constructor === Function) {
385 | return $q.all([$validationProvider.getExpression(validator)(value, scope, element, attrs)])
386 | .then(function(data) {
387 | if (data && data.length > 0 && data[0]) {
388 | return valid.success();
389 | } else {
390 | return valid.error();
391 | }
392 | }, function() {
393 | return valid.error();
394 | });
395 | }
396 | // Check with RegExp
397 | else if (expression.constructor === RegExp) {
398 | return $validationProvider.getExpression(validator).test(value) ? valid.success() : valid.error();
399 | } else {
400 | return valid.error();
401 | }
402 | };
403 |
404 | var trim = function(elementValue) {
405 | return elementValue.replace(/^\s+/, '').replace(/\s+$/, '');
406 | };
407 |
408 | /**
409 | * generate unique guid
410 | */
411 | var s4 = function() {
412 | return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
413 | };
414 | var guid = function() {
415 | return (s4() + s4() + s4() + s4());
416 | };
417 |
418 |
419 | return {
420 | restrict: 'A',
421 | require: 'ngModel',
422 | scope: {
423 | model: '=ngModel',
424 | initialValidity: '=initialValidity',
425 | validCallback: '&',
426 | invalidCallback: '&'
427 | },
428 | link: function(scope, element, attrs, ctrl) {
429 |
430 | /**
431 | * watch
432 | * @type {watch}
433 | *
434 | * Use to collect scope.$watch method
435 | *
436 | * use watch() to destroy the $watch method
437 | */
438 | var watch = function() {};
439 |
440 | /**
441 | * validator
442 | * @type {Array}
443 | *
444 | * Convert user input String to Array
445 | */
446 | var validation = attrs.validator.split(',');
447 |
448 | /**
449 | * guid use
450 | */
451 | var uid = ctrl.validationId = guid();
452 |
453 | /**
454 | * Valid/Invalid Message
455 | */
456 | element.after('');
457 |
458 | /**
459 | * Set initial validity to false if no boolean value is transmitted
460 | */
461 | var initialValidity = false;
462 | if (typeof scope.initialValidity === 'boolean') {
463 | initialValidity = scope.initialValidity;
464 | }
465 |
466 | /**
467 | * Set custom initial validity
468 | * Usage:
469 | */
470 | ctrl.$setValidity(ctrl.$name, initialValidity);
471 |
472 | /**
473 | * Reset the validation for specific form
474 | */
475 | scope.$on(ctrl.$name + 'reset-' + uid, function() {
476 |
477 | /**
478 | * clear scope.$watch here
479 | * when reset status
480 | * clear the $watch method to prevent
481 | * $watch again while reset the form
482 | */
483 | watch();
484 |
485 | isFocusElement = false;
486 | ctrl.$setViewValue('');
487 | ctrl.$setPristine();
488 | ctrl.$setValidity(ctrl.$name, false);
489 | ctrl.$render();
490 | element.next().html('');
491 | });
492 |
493 | /**
494 | * Check validator
495 | */
496 |
497 | (function() {
498 | /**
499 | * Click submit form, check the validity when submit
500 | */
501 | scope.$on(ctrl.$name + 'submit-' + uid, function(event, index) {
502 | var value = element[0].value,
503 | isValid = false;
504 |
505 | if (index === 0) {
506 | isFocusElement = false;
507 | }
508 |
509 | isValid = checkValidation(scope, element, attrs, ctrl, validation, value);
510 |
511 | if (attrs.validMethod === 'submit') {
512 | watch(); // clear previous scope.$watch
513 | watch = scope.$watch('model', function(value, oldValue) {
514 |
515 | // don't watch when init
516 | if (value === oldValue) {
517 | return;
518 | }
519 |
520 | // scope.$watch will translate '' to undefined
521 | // undefined/null will pass the required submit /^.+/
522 | // cause some error in this validation
523 | if (value === undefined || value === null) {
524 | value = '';
525 | }
526 |
527 | isValid = checkValidation(scope, element, attrs, ctrl, validation, value);
528 | });
529 |
530 | }
531 |
532 | // Focus first input element when submit error #11
533 | if (!isFocusElement && !isValid) {
534 | isFocusElement = true;
535 | element[0].focus();
536 | }
537 | });
538 |
539 | /**
540 | * Validate blur method
541 | */
542 | if (attrs.validMethod === 'blur') {
543 | element.bind('blur', function() {
544 | var value = element[0].value;
545 | scope.$apply(function() {
546 | checkValidation(scope, element, attrs, ctrl, validation, value);
547 | });
548 | });
549 |
550 | return;
551 | }
552 |
553 | /**
554 | * Validate submit & submit-only method
555 | */
556 | if (attrs.validMethod === 'submit' || attrs.validMethod === 'submit-only') {
557 | return;
558 | }
559 |
560 | /**
561 | * Validate watch method
562 | * This is the default method
563 | */
564 | scope.$watch('model', function(value) {
565 | /**
566 | * dirty, pristine, viewValue control here
567 | */
568 | if (ctrl.$pristine && ctrl.$viewValue) {
569 | // has value when initial
570 | ctrl.$setViewValue(ctrl.$viewValue);
571 | } else if (ctrl.$pristine) {
572 | // Don't validate form when the input is clean(pristine)
573 | element.next().html('');
574 | return;
575 | }
576 | checkValidation(scope, element, attrs, ctrl, validation, value);
577 | });
578 |
579 | })();
580 |
581 | $timeout(function() {
582 | /**
583 | * Don't showup the validation Message
584 | */
585 | attrs.$observe('noValidationMessage', function(value) {
586 | var el = element.next();
587 | if (value == 'true' || value === true) {
588 | el.css('display', 'none');
589 | } else if (value == 'false' || value === false) {
590 | el.css('display', 'block');
591 | } else {}
592 | });
593 | });
594 |
595 | }
596 | };
597 | }
598 | ])
599 |
600 | .directive('validationSubmit', ['$injector',
601 | function($injector) {
602 |
603 | var $validationProvider = $injector.get('$validation'),
604 | $timeout = $injector.get('$timeout'),
605 | $parse = $injector.get('$parse');
606 |
607 | return {
608 | priority: 1, // execute before ng-click (0)
609 | require: '?ngClick',
610 | link: function postLink(scope, element, attrs) {
611 | var form = $parse(attrs.validationSubmit)(scope);
612 |
613 | $timeout(function() {
614 | // Disable ng-click event propagation
615 | element.off('click');
616 | element.on('click', function(e) {
617 | e.preventDefault();
618 |
619 | $validationProvider.validate(form)
620 | .success(function() {
621 | $parse(attrs.ngClick)(scope);
622 | });
623 | });
624 | });
625 |
626 | }
627 | };
628 | }
629 | ])
630 |
631 | .directive('validationReset', ['$injector',
632 | function($injector) {
633 |
634 | var $validationProvider = $injector.get('$validation'),
635 | $timeout = $injector.get('$timeout'),
636 | $parse = $injector.get('$parse');
637 |
638 | return {
639 | link: function postLink(scope, element, attrs) {
640 | var form = $parse(attrs.validationReset)(scope);
641 |
642 | $timeout(function() {
643 | element.on('click', function(e) {
644 | e.preventDefault();
645 | $validationProvider.reset(form);
646 | });
647 | });
648 |
649 | }
650 | };
651 | }
652 | ]);
653 |
654 | }).call(this);
655 |
--------------------------------------------------------------------------------
/bower_components/bootstrap/bootstrap-responsive.min.css:
--------------------------------------------------------------------------------
1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
2 | .clearfix:after{clear:both;}
3 | .hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
4 | .input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
5 | .hidden{display:none;visibility:hidden;}
6 | .visible-phone{display:none;}
7 | .visible-tablet{display:none;}
8 | .visible-desktop{display:block;}
9 | .hidden-phone{display:block;}
10 | .hidden-tablet{display:block;}
11 | .hidden-desktop{display:none;}
12 | @media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
13 |
--------------------------------------------------------------------------------
/bower_components/bootstrap/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.2.0 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-kg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
--------------------------------------------------------------------------------
/bower_components/bootstrap/glyphicons-halflings-white.html:
--------------------------------------------------------------------------------
1 |
2 | 404 Not Found
3 |
4 | 404 Not Found
5 |
nginx
6 |
7 |
8 |
--------------------------------------------------------------------------------
/bower_components/bootstrap/glyphicons-halflings.html:
--------------------------------------------------------------------------------
1 |
2 | 404 Not Found
3 |
4 | 404 Not Found
5 |
nginx
6 |
7 |
8 |
--------------------------------------------------------------------------------
/bower_components/font/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/FontAwesome.otf
--------------------------------------------------------------------------------
/bower_components/font/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/bower_components/font/fontawesome-webfont.svgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/fontawesome-webfont.svgz
--------------------------------------------------------------------------------
/bower_components/font/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/bower_components/font/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/bower_components/font/fontawesome-webfontd41d.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/bower_components/font/fontawesome-webfontd41d.eot
--------------------------------------------------------------------------------
/css/dashboard.css:
--------------------------------------------------------------------------------
1 | /*------------------------------------------------------------------
2 | Bootstrap Admin Template by EGrappler.com
3 | ------------------------------------------------------------------*/
4 |
5 |
6 |
7 | /*------------------------------------------------------------------
8 | [1. Shortcuts / .shortcuts]
9 | */
10 |
11 | .shortcuts {
12 | text-align: center;
13 | }
14 |
15 | .shortcuts .shortcut {
16 | width: 22.50%;
17 | display: inline-block;
18 | padding: 12px 0;
19 | margin: 0 .9% 1em;
20 | vertical-align: top;
21 |
22 | text-decoration: none;
23 |
24 | background: #f9f6f1;
25 |
26 | border-radius: 5px;
27 | }
28 |
29 | .shortcuts .shortcut .shortcut-icon {
30 | margin-top: .25em;
31 | margin-bottom: .25em;
32 |
33 | font-size: 32px;
34 | color: #545454;
35 | }
36 |
37 | .shortcuts .shortcut:hover {
38 | background: #00ba8b;
39 | }
40 |
41 | .shortcuts .shortcut:hover span{
42 | color: #fff;
43 | }
44 |
45 | .shortcuts .shortcut:hover .shortcut-icon {
46 | color: #fff;
47 | }
48 |
49 | .shortcuts .shortcut-label {
50 | display: block;
51 |
52 | font-weight: 400;
53 | color: #545454;
54 | }
55 |
56 |
57 |
58 | /*------------------------------------------------------------------
59 | [2. Stats / .stats]
60 | */
61 |
62 | .stats {
63 | width: 100%;
64 | display: table;
65 | padding: 0 0 0 10px;
66 | margin-top: .5em;
67 | margin-bottom: 1.9em;
68 | }
69 |
70 | .stats .stat {
71 | display: table-cell;
72 | width: 40%;
73 | vertical-align: top;
74 |
75 | font-size: 11px;
76 | font-weight: bold;
77 | color: #999;
78 | }
79 |
80 | .stat-value {
81 | display: block;
82 | margin-bottom: .55em;
83 |
84 | font-size: 30px;
85 | font-weight: bold;
86 | letter-spacing: -2px;
87 | color: #444;
88 | }
89 |
90 | .stat-time {
91 | text-align: center;
92 | padding-top: 1.5em;
93 | }
94 |
95 | .stat-time .stat-value {
96 | color: #19bc9c;
97 | font-size: 40px;
98 | }
99 |
100 | .stats #donut-chart {
101 | height: 100px;
102 | margin-left: -20px;
103 | }
104 |
105 |
106 |
107 |
108 |
109 | /*------------------------------------------------------------------
110 | [3. News Item / .news-items]
111 | */
112 |
113 | .news-items {
114 | margin: 1em 0 0;
115 | }
116 |
117 | .news-items li {
118 | display: table;
119 | padding: 0 2em 0 1.5em;
120 | padding-bottom: 1em;
121 | margin-bottom: 1em;
122 | border-bottom: 1px dotted #CCC;
123 | }
124 |
125 | .news-items li:last-child { padding-bottom: 0; border: none; }
126 |
127 | .news-item-date {
128 | display: table-cell;
129 | }
130 |
131 | .news-item-detail {
132 | display: table-cell;
133 | }
134 |
135 | .news-item-title {
136 | font-size: 13px;
137 | font-weight: 600;
138 | }
139 |
140 | .news-item-date {
141 | width: 75px;
142 | vertical-align: middle;
143 | text-align: center;
144 |
145 | }
146 |
147 | .news-item-day {
148 | display: block;
149 | margin-bottom: .25em;
150 |
151 | font-size: 24px;
152 | color: #888;
153 | }
154 |
155 | .news-item-preview {
156 | margin-bottom: 0;
157 |
158 | color: #777;
159 | }
160 |
161 | .news-item-month {
162 | display: block;
163 | padding-right: 1px;
164 |
165 | font-size: 12px;
166 | font-weight: 600;
167 | color: #888;
168 | }
169 |
170 |
171 |
172 | /*------------------------------------------------------------------
173 | [4. Action Table / .action-table]
174 | */
175 |
176 | .action-table .btn-small {
177 | padding: 4px 5px 5px;
178 |
179 | font-size: 10px;
180 | }
181 |
182 | .action-table .td-actions {
183 | width: 80px;
184 |
185 | text-align: center;
186 | }
187 |
188 | .action-table .td-actions .btn {
189 | margin-right: .5em;
190 | }
191 |
192 | .action-table .td-actions .btn:last-child {
193 | margin-rigth: 0;
194 | }
195 |
196 |
197 |
198 | #big_stats
199 | {
200 | width: 100%;
201 | display: table;
202 | margin-top: 1.5em;
203 |
204 |
205 | }
206 |
207 | .big-stats-container .widget-content {
208 | border:0;
209 | }
210 |
211 | #big_stats .stat
212 | {
213 | width: 25%;
214 | height: 90px;
215 | text-align: center;
216 | display: table-cell;
217 | padding: 0;
218 | position: relative;
219 |
220 | border-right: 1px solid #CCC;
221 | border-left: 1px solid #FFF;
222 | }
223 | #big_stats i { font-size:30px; display:block; line-height: 40px; color:#b2afaa;}
224 | #big_stats .stat:hover i {color:#19bc9c;}
225 |
226 | h6.bigstats{margin: 20px;
227 | border-bottom: 1px solid #eee;
228 | padding-bottom: 20px;
229 | margin-bottom: 26px;}
230 |
231 | #big_stats .stat:first-child {
232 | border-left: none;
233 | }
234 |
235 | #big_stats .stat:last-child {
236 | border-right: none;
237 | }
238 |
239 | #big_stats .stat h4
240 | {
241 | font-size: 11px;
242 | font-weight: bold;
243 | color: #777;
244 | margin-bottom: 1.5em;
245 | }
246 |
247 | #big_stats .stat .value
248 | {
249 | font-size: 45px;
250 | font-weight: bold;
251 | color: #545454;
252 | line-height: 1em;
253 | }
254 |
255 |
256 |
257 | @media all and (max-width: 950px) and (min-width: 1px) {
258 |
259 | #big_stats {
260 | display: block;
261 | margin-bottom: -40px;
262 | }
263 |
264 | #big_stats .stat {
265 | width: 49%;
266 | display: block;
267 | margin-bottom: 3em;
268 | float: left;
269 | }
270 |
271 | #big_stats .stat:nth-child(2) {
272 | border-right: none;
273 | }
274 |
275 | #big_stats .stat:nth-child(3) {
276 | border-left: none;
277 | }
278 |
279 | }
280 |
281 | @media (max-width: 767px) {
282 | #big_stats .stat .value {
283 | font-size: 40px;
284 | }
285 | }
286 |
287 |
288 |
289 |
290 | @media (max-width: 979px) {
291 |
292 | .shortcuts .shortcut {
293 | width: 31%;
294 | }
295 | }
296 |
297 |
298 | @media (max-width: 480px) {
299 |
300 | .stats .stat {
301 |
302 | margin-bottom: 3em;
303 | }
304 |
305 | .stats .stat .stat-value {
306 | margin-bottom: .15em;
307 |
308 | font-size: 20px;
309 | }
310 |
311 | .stats {
312 | float: left;
313 |
314 | display: block;
315 |
316 | margin-bottom: 0;
317 | }
318 |
319 | #chart-stats {
320 | margin: 2em 0 1em;
321 | }
322 |
323 | .shortcuts .shortcut {
324 | width: 48%;
325 | }
326 | }
--------------------------------------------------------------------------------
/css/signin.css:
--------------------------------------------------------------------------------
1 | /*------------------------------------------------------------------
2 | Bootstrap Admin Template by EGrappler.com
3 | ------------------------------------------------------------------*/
4 |
5 |
6 |
7 |
8 | /** Base Body Styles **/
9 | body{ background: url(../img/body-bg.png); color:#838383; font: 13px/1.7em 'Open Sans';}
10 |
11 |
12 | .account-container {
13 | width: 380px;
14 | display: block;
15 | margin: 60px auto 0 auto;
16 |
17 | background: #f9f9f9;
18 |
19 | border: 1px solid #d5d5d5;
20 |
21 | -webkit-border-radius: 5px;
22 | -moz-border-radius: 5px;
23 | border-radius: 5px;
24 |
25 | box-shadow: 0px 0px 2px #dadada, inset 0px -3px 0px #e6e6e6;
26 | }
27 |
28 | .content {
29 | padding: 16px 28px 23px;
30 | }
31 |
32 | .login-fields {
33 |
34 | }
35 |
36 | .login-fields .field {
37 | margin-bottom: 1.25em;
38 | }
39 |
40 | .login-fields label {
41 | display: none;
42 | }
43 |
44 | .login-fields input {
45 | font-family: 'Open Sans';
46 | font-size: 13px;
47 | color: #8e8d8d;
48 | padding: 11px 15px 10px 50px;
49 | background-color: #fdfdfd;
50 | width: 255px;
51 | display: block;
52 | margin: 0;
53 | box-shadow: inset 2px 2px 4px #f1f1f1;
54 | }
55 |
56 | .username-field { background: url(../img/signin/user.png) no-repeat; }
57 |
58 | .password-field { background: url(../img/signin/password.png) no-repeat; }
59 |
60 |
61 |
62 |
63 | .login-actions {
64 | float: left;
65 |
66 | width: 100%;
67 |
68 | margin-top: -1em;
69 | margin-bottom: 1.25em;
70 | }
71 |
72 | .login-social {
73 | float: left;
74 |
75 | padding: 10px 0 15px;
76 |
77 | border: 1px dotted #CCC;
78 | border-right: none;
79 | border-left: none;
80 | }
81 |
82 | span.login-checkbox {
83 | float: left;
84 | margin-top: 31px;
85 | }
86 |
87 | span.login-checkbox > input[type='checkbox'] {
88 | opacity: 0;
89 | float: left;
90 | width: 15px;
91 | }
92 |
93 | span.login-checkbox > input[type='checkbox'] + label {
94 | clear: none;
95 |
96 | height: 15px;
97 | display: block;
98 | padding: 0 0 0 22px;
99 | margin: 0;
100 |
101 | font-size: 12px;
102 | line-height: 1.2em;
103 |
104 | background: url(../img/signin/check.png) no-repeat 0 0;
105 |
106 | cursor: pointer;
107 | }
108 |
109 | span.login-checkbox > input[type='checkbox']:checked + label {
110 | background-position: 0 -15px;
111 | }
112 |
113 | /** Text Under Box**/
114 | .login-extra {
115 | display: block;
116 | width: 300px;
117 | margin: 1.5em auto;
118 |
119 | text-align: left;
120 | line-height: 19px;
121 |
122 | text-shadow: 1px 1px 0px #fff;
123 | }
124 |
125 |
126 | .account-container h1 {
127 | margin-bottom: .4em;
128 |
129 | color: #525252;
130 | }
131 |
132 | /** Buttons **/
133 | .twitter, .fb {
134 | position: relative;
135 |
136 | height: 32px;
137 | width: 157px;
138 | display: block;
139 |
140 | background: url(../img/signin/twitter_btn.png) no-repeat;
141 |
142 | }
143 |
144 | .fb {
145 | width: 162px;
146 |
147 | background: url(../img/signin/fb_btn.png) no-repeat;
148 | }
149 |
150 | .twitter:active, .fb:active {
151 | top: 1px;
152 | }
153 |
154 | .twitter:hover, .fb:hover {
155 | background-position: 0 -32px;
156 | }
157 |
158 | .twitter a, .fb a {
159 | padding: 5px 0 0 35px;
160 | text-shadow: -1px -1px 0px rgba(0,0,0,.3);
161 | color:#fff;
162 | font-weight: bold;
163 | font-size: 11px;
164 | height: 32px;
165 | display: block;
166 | }
167 |
168 | .fb a {
169 | padding: 5px 0 0 31px;
170 |
171 | }
172 |
173 | .twitter, .fb {
174 | display: inline-block;
175 | }
176 |
177 | .twitter a:hover, .fb a:hover {
178 | color: #FFF;
179 | text-decoration: none;
180 | }
181 |
182 | .button {-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; display: inline-block; float: right; margin-top: 18px;}
183 |
184 |
185 |
186 |
187 |
188 |
189 | .register .login-social {
190 | margin-bottom: 1em;
191 | }
192 |
193 | .register .login-actions {
194 | margin-bottom: 0;
195 | }
196 |
197 | .register .login-fields input {
198 | width: 299px;
199 | padding-left: 6px;
200 | }
201 |
202 | .register h1 {
203 | color: #444;
204 | }
205 |
206 | .register span.login-checkbox {
207 | position: relative;
208 | top: -6px;
209 |
210 | width: 200px;
211 | }
212 |
213 | .register span.login-checkbox > input[type="checkbox"] + label {
214 |
215 | position: relative;
216 |
217 | line-height: 1.3em;
218 | }
219 |
220 |
221 |
222 | @media (max-width: 480px) {
223 |
224 | .account-container {
225 | width: 280px;
226 | margin-top: 35px;
227 | }
228 |
229 | .login-fields input {
230 | width: 160px;
231 | }
232 |
233 | .login-social {
234 | width: 100%;
235 | }
236 |
237 | .twitter {
238 | display: block;
239 | margin-bottom: 1em;
240 | }
241 |
242 | .register .login-fields input {
243 | width: 204px;
244 | padding-left: 6px;
245 | }
246 |
247 | }
--------------------------------------------------------------------------------
/css/style.css:
--------------------------------------------------------------------------------
1 | /*------------------------------------------------------------------
2 | Bootstrap Admin Template by EGrappler.com
3 | ------------------------------------------------------------------*/
4 |
5 |
6 |
7 | /*------------------------------------------------------------------
8 | [1. Global]
9 | */
10 |
11 | body {
12 | background: #f9f6f1;
13 | font: 13px/1.7em 'Open Sans';
14 | }
15 |
16 | p {
17 | font: 13px/1.7em 'Open Sans';
18 | }
19 |
20 | input,
21 | button,
22 | select,
23 | textarea {
24 | font-family: 'Open Sans';
25 | }
26 |
27 | .dropdown .dropdown-menu {
28 | -webkit-border-radius: 6px;
29 | -moz-border-radius: 6px;
30 | border-radius: 6px;
31 | }
32 |
33 | .btn-icon-only {
34 | padding-right: 3px;
35 | padding-left: 3px;
36 | }
37 |
38 | .table td {
39 | vertical-align: middle;
40 | }
41 |
42 | .table-bordered th {
43 | background: #E9E9E9;
44 | background:-moz-linear-gradient(top, #FAFAFA 0%, #E9E9E9 100%); /* FF3.6+ */
45 | background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#FAFAFA), color-stop(100%,#E9E9E9)); /* Chrome,Safari4+ */
46 | background:-webkit-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%); /* Chrome10+,Safari5.1+ */
47 | background:-o-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%); /* Opera11.10+ */
48 | background:-ms-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%); /* IE10+ */
49 | background:linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%); /* W3C */
50 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FAFAFA', endColorstr='#E9E9E9');
51 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FAFAFA', endColorstr='#E9E9E9')";
52 |
53 | font-size: 10px;
54 | color: #444;
55 | text-transform: uppercase;
56 | }
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 | /*------------------------------------------------------------------
65 | [2. Navbar / .navbar]
66 | */
67 |
68 | .navbar .container {
69 | position: relative;
70 | }
71 |
72 | .navbar-inner {
73 | padding: 7px 0;
74 |
75 | background: #00ba8b !important;
76 |
77 | -moz-border-radius: 0;
78 | -webkit-border-radius: 0;
79 | border-radius: 0;
80 | }
81 |
82 | .navbar-fixed-top {
83 | position: static;
84 | }
85 |
86 | .navbar .nav a {
87 | font-size: 11px;
88 | }
89 | .navbar .nav>li>a { color:#fff !important;}
90 | .navbar .brand {
91 | font-weight: 600;
92 | position: relative;
93 | top: 2px;
94 | }
95 |
96 | .navbar .search-query {
97 | background-color: #444;
98 | width: 150px;
99 | font-size: 11px;
100 | font-weight: bold;
101 | }
102 |
103 | .navbar .search-query::-webkit-input-placeholder {
104 | color: #666;
105 | }
106 |
107 | .navbar .search-query:-moz-placeholder {
108 | color: #666;
109 | }
110 |
111 | .navbar-search .search-query { background:#008866; border:0; color:#fff; line-height:normal;}
112 |
113 |
114 | /*------------------------------------------------------------------
115 | [3. Subnavbar / .subnavbar]
116 | */
117 |
118 | .subnavbar {
119 | margin-bottom: 2.5em;
120 | }
121 |
122 | .subnavbar-inner {
123 | height: 60px;
124 | background: #fff;
125 | border-bottom: 1px solid #d6d6d6;
126 | }
127 |
128 | .subnavbar .container > ul {
129 | display: inline-block;
130 |
131 | height: 80px;
132 | padding: 0;
133 | margin: 0;
134 |
135 | }
136 |
137 | .subnavbar .container > ul > li {
138 | float: left;
139 |
140 | min-width: 90px;
141 | height: 60px;
142 | padding: 0;
143 | margin: 0;
144 |
145 | text-align: center;
146 | list-style: none;
147 |
148 | border-left: 1px solid #d9d9d9;
149 |
150 |
151 | }
152 |
153 | .subnavbar .container > ul > li > a {
154 | display: block;
155 |
156 | height: 100%;
157 | padding: 0 15px;
158 |
159 | font-size: 12px;
160 | font-weight: bold;
161 | color: #b2afaa;
162 | }
163 |
164 | .subnavbar .container > ul > li > a:hover {
165 | color: #888;
166 | text-decoration: none;
167 | }
168 |
169 | .subnavbar .container > ul > li > a > i {
170 | display: inline-block;
171 |
172 | width: 24px;
173 | height: 24px;
174 | margin-top: 11px;
175 | margin-bottom: -3px;
176 | font-size: 20px;
177 | }
178 |
179 | .subnavbar .container > ul > li > a > span {
180 | display: block;
181 |
182 | }
183 |
184 |
185 | .subnavbar .container > ul > li.active > a {
186 |
187 | border-bottom:3px solid #ff7f74;
188 | color: #383838;
189 | }
190 |
191 |
192 | .subnavbar .dropdown .dropdown-menu a {
193 | font-size: 12px;
194 | }
195 |
196 |
197 | .subnavbar .dropdown .dropdown-menu {
198 | text-align: left;
199 |
200 | -webkit-border-top-left-radius: 0;
201 | -webkit-border-top-right-radius: 0;
202 | -moz-border-radius-topleft: 0;
203 | -moz-border-radius-topright: 0;
204 | border-top-left-radius: 0;
205 | border-top-right-radius: 0;
206 | }
207 |
208 |
209 |
210 | .subnavbar .dropdown-menu::before {
211 | content: '';
212 | display: inline-block;
213 | border-left: 7px solid transparent;
214 | border-right: 7px solid transparent;
215 | border-bottom: 7px solid #CCC;
216 | border-bottom-color: rgba(0, 0, 0, 0.2);
217 | position: absolute;
218 | top: -7px;
219 | left: 9px;
220 | }
221 |
222 | .subnavbar .dropdown-menu::after {
223 | content: '';
224 | display: inline-block;
225 | border-left: 6px solid transparent;
226 | border-right: 6px solid transparent;
227 | border-bottom: 6px solid white;
228 | position: absolute;
229 | top: -6px;
230 | left: 10px;
231 | }
232 |
233 |
234 | .subnavbar .caret {
235 | margin-top: 4px;
236 |
237 | border-top-color: white;
238 | border-bottom-color: white;
239 | }
240 |
241 | .subnavbar .dropdown.open .caret {
242 | display: none;
243 | }
244 |
245 |
246 |
247 |
248 |
249 | /*------------------------------------------------------------------
250 | [4. Main / .main]
251 | */
252 |
253 | .main {
254 | padding-bottom: 2em;
255 |
256 | border-bottom: 1px solid #000;
257 | }
258 |
259 |
260 |
261 | /*------------------------------------------------------------------
262 | [5. Extra / .extra]
263 | */
264 |
265 | .extra {
266 |
267 | border-top: 1px solid #585858;
268 | border-bottom: 1px solid #000;
269 |
270 | }
271 |
272 | .extra-inner {
273 | padding: 20px 0;
274 |
275 | font-size: 11px;
276 | color: #BBB;
277 |
278 | background: #1A1A1A;
279 | }
280 |
281 | .extra a {
282 | color: #666;
283 | }
284 |
285 | .extra h4 {
286 | margin-bottom: 1em;
287 |
288 | font-weight: 400;
289 | }
290 |
291 | .extra ul {
292 | padding: 0;
293 | margin: 0;
294 | }
295 |
296 | .extra li {
297 | margin-bottom: .6em;
298 |
299 | list-style: none;
300 | }
301 |
302 |
303 |
304 |
305 | /*------------------------------------------------------------------
306 | [6. Footer/ .footer]
307 | */
308 |
309 | .footer {
310 | margin-top: 0;
311 |
312 | border-top: 1px solid #292929;
313 | }
314 |
315 | .footer-inner {
316 | padding: 15px 0;
317 |
318 | font-size: 12px;
319 | background: #111;
320 | color: #999;
321 | }
322 |
323 | .footer a {
324 | color: #999;
325 | }
326 |
327 | .footer a:hover {
328 | color: #FFF;
329 | text-decoration: none;
330 | }
331 |
332 |
333 | /*------------------------------------------------------------------
334 | [6. Widget / .widget]
335 | */
336 |
337 | .widget {
338 |
339 | position: relative;
340 | clear: both;
341 |
342 | width: auto;
343 |
344 | margin-bottom: 2em;
345 |
346 | overflow: hidden;
347 | }
348 |
349 | .widget-header {
350 |
351 | position: relative;
352 |
353 | height: 40px;
354 | line-height: 40px;
355 |
356 | background: #f9f6f1;
357 | background:-moz-linear-gradient(top, #f9f6f1 0%, #f2efea 100%); /* FF3.6+ */
358 | background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f6f1), color-stop(100%,#f2efea)); /* Chrome,Safari4+ */
359 | background:-webkit-linear-gradient(top, #f9f6f1 0%,#f2efea 100%); /* Chrome10+,Safari5.1+ */
360 | background:-o-linear-gradient(top, #f9f6f1 0%,#f2efea 100%); /* Opera11.10+ */
361 | background:-ms-linear-gradient(top, #f9f6f1 0%,#f2efea 100%); /* IE10+ */
362 | background:linear-gradient(top, #f9f6f1 0%,#f2efea 100%); /* W3C */
363 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f6f1', endColorstr='#f2efea');
364 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f6f1', endColorstr='#f2efea')";
365 |
366 |
367 | border: 1px solid #d6d6d6;
368 |
369 |
370 | -webkit-background-clip: padding-box;
371 | }
372 |
373 | .widget-header h3 {
374 |
375 | position: relative;
376 | top: 2px;
377 | left: 10px;
378 |
379 | display: inline-block;
380 | margin-right: 3em;
381 |
382 | font-size: 14px;
383 | font-weight: 800;
384 | color: #525252;
385 | line-height: 18px;
386 |
387 | text-shadow: 1px 1px 2px rgba(255,255,255,.5);
388 | }
389 |
390 | .widget-header [class^="icon-"], .widget-header [class*=" icon-"] {
391 |
392 | display: inline-block;
393 | margin-left: 13px;
394 | margin-right: -2px;
395 |
396 | font-size: 16px;
397 | color: #555;
398 | vertical-align: middle;
399 |
400 |
401 |
402 | }
403 |
404 |
405 |
406 |
407 | .widget-content {
408 | padding: 20px 15px 15px;
409 |
410 | background: #FFF;
411 |
412 |
413 | border: 1px solid #D5D5D5;
414 |
415 | -moz-border-radius: 5px;
416 | -webkit-border-radius: 5px;
417 | border-radius: 5px;
418 | }
419 |
420 | .widget-header+.widget-content {
421 | border-top: none;
422 |
423 | -webkit-border-top-left-radius: 0;
424 | -webkit-border-top-right-radius: 0;
425 | -moz-border-radius-topleft: 0;
426 | -moz-border-radius-topright: 0;
427 | border-top-left-radius: 0;
428 | border-top-right-radius: 0;
429 | }
430 |
431 | .widget-nopad .widget-content {
432 | padding: 0;
433 | }
434 |
435 | /* Widget Content Clearfix */
436 | .widget-content:before,
437 | .widget-content:after {
438 | content:"";
439 | display:table;
440 | }
441 |
442 | .widget-content:after {
443 | clear:both;
444 | }
445 |
446 | /* For IE 6/7 (trigger hasLayout) */
447 | .widget-content {
448 | zoom:1;
449 | }
450 |
451 | /* Widget Table */
452 |
453 | .widget-table .widget-content {
454 | padding: 0;
455 | }
456 |
457 | .widget-table .table {
458 | margin-bottom: 0;
459 |
460 | border: none;
461 | }
462 |
463 | .widget-table .table tr td:first-child {
464 | border-left: none;
465 | }
466 |
467 | .widget-table .table tr th:first-child {
468 | border-left: none;
469 | }
470 |
471 |
472 | /* Widget Plain */
473 |
474 | .widget-plain {
475 |
476 | background: transparent;
477 |
478 | border: none;
479 | }
480 |
481 | .widget-plain .widget-content {
482 | padding: 0;
483 |
484 | background: transparent;
485 |
486 | border: none;
487 | }
488 |
489 |
490 | /* Widget Box */
491 |
492 | .widget-box {
493 |
494 | }
495 |
496 | .widget-box .widget-content {
497 | background: #E3E3E3;
498 | background: #FFF;
499 | }
500 |
501 |
502 |
503 |
504 | /*------------------------------------------------------------------
505 | [7. Error / .error-container]
506 | */
507 |
508 | .error-container {
509 | margin-top: 4em;
510 | margin-bottom: 4em;
511 | text-align: center;
512 | }
513 |
514 | .error-container h1 {
515 | margin-bottom: .5em;
516 |
517 | font-size: 120px;
518 | line-height: 1em;
519 | }
520 |
521 | .error-container h2 {
522 | margin-bottom: .75em;
523 | font-size: 28px;
524 | }
525 |
526 | .error-container .error-details {
527 | margin-bottom: 1.5em;
528 |
529 | font-size: 16px;
530 | }
531 |
532 | .error-container .error-actions a {
533 | margin: 0 .5em;
534 | }
535 |
536 |
537 |
538 | /* Message layout */
539 |
540 |
541 | ul.messages_layout {
542 | position: relative;
543 | margin: 0;
544 | padding: 0
545 | }
546 | ul.messages_layout li {
547 | float: left;
548 | list-style: none;
549 | position: relative
550 | }
551 | ul.messages_layout li.left {
552 | padding-left: 75px
553 | }
554 | ul.messages_layout li.right {
555 | padding-right: 75px
556 | }
557 | ul.messages_layout li.right .avatar {
558 | right: 0;
559 | left: auto
560 | }
561 | ul.messages_layout li.right .message_wrap .arrow {
562 | right: -12px;
563 | left: auto;
564 | background-position: 0 -213px;
565 | height: 15px;
566 | width: 12px
567 | }
568 | ul.messages_layout li.by_myself .message_wrap {
569 | border: 1px solid #b3cdf8
570 | }
571 | ul.messages_layout li.by_myself .message_wrap .info a.name {
572 | color: #4a8cf7
573 | }
574 | ul.messages_layout li a.avatar {
575 | position: absolute;
576 | left: 0;
577 | top: 0
578 | }
579 | ul.messages_layout li a.avatar img {
580 | -webkit-border-radius: 5px;
581 | -moz-border-radius: 5px;
582 | border-radius: 5px
583 | }
584 | ul.messages_layout li .message_wrap {
585 | -webkit-border-radius: 3px;
586 | -moz-border-radius: 3px;
587 | border-radius: 3px;
588 | position: relative;
589 | border: 1px solid #e9e9e9;
590 | padding: 10px;
591 | border: 1px solid #cbcbcb;
592 | margin-bottom: 20px;
593 | float: left;
594 | background: #fefefe;
595 | -webkit-box-shadow: rgba(0,0,0,0.1) 0 1px 0px;
596 | -moz-box-shadow: rgba(0,0,0,0.1) 0 1px 0px;
597 | box-shadow: rgba(0,0,0,0.1) 0 1px 0px
598 | }
599 | ul.messages_layout li .message_wrap .arrow {
600 | background-position: 0 -228px;
601 | height: 15px;
602 | width: 12px;
603 | height: 15px;
604 | width: 12px;
605 | position: absolute;
606 | left: -12px;
607 | top: 13px
608 | }
609 | ul.messages_layout li .message_wrap .info {
610 | float: left;
611 | width: 100%;
612 | border-bottom: 1px solid #fff;
613 | line-height: 23px
614 | }
615 | ul.messages_layout li .message_wrap .info .name {
616 | float: left;
617 | font-weight: bold;
618 | color: #483734
619 | }
620 | ul.messages_layout li .message_wrap .info .time {
621 | float: left;
622 | font-size: 11px;
623 | margin-left: 6px
624 | }
625 | ul.messages_layout li .message_wrap .text {
626 | float: left;
627 | width: 100%;
628 | border-top: 1px solid #cfcfcf;
629 | padding-top: 5px
630 | }
631 |
632 | ul.messages_layout .dropdown-menu li{ width:100%; font-size:11px;}
633 |
634 |
635 | /* Full Calendar */
636 |
637 | .fc {
638 | direction: ltr;
639 | text-align: left;
640 | position: relative
641 | }
642 | .fc table {
643 | border-collapse: collapse;
644 | border-spacing: 0
645 | }
646 | html .fc, .fc table {
647 | font-size: 1em
648 | }
649 | .fc td, .fc th {
650 | padding: 0;
651 | vertical-align: top
652 | }
653 | .fc-header td {
654 | white-space: nowrap;
655 | background: none
656 | }
657 | .fc-header-left {
658 | width: 100%;
659 | text-align: left;
660 | position: absolute;
661 | left: 0;
662 | top: 6px
663 | }
664 | .fc-header-left .fc-button {
665 | margin: 0;
666 | position: relative
667 | }
668 | .fc-header-left .fc-button-prev, .fc-header-left .fc-button-next {
669 | float: left;
670 | border: none;
671 | padding: 14px 10px;
672 | opacity: 0.5
673 | }
674 | .fc-header-left .fc-button-prev .fc-button-inner, .fc-header-left .fc-button-next .fc-button-inner {
675 | border: none
676 | }
677 | .fc-header-left .fc-button-prev .fc-button-inner .fc-button-content, .fc-header-left .fc-button-next .fc-button-inner .fc-button-content {
678 | display: none
679 | }
680 | .fc-header-left .fc-button-prev.fc-state-hover, .fc-header-left .fc-button-next.fc-state-hover {
681 | opacity: 1
682 | }
683 | .fc-header-left .fc-button-prev.fc-state-down, .fc-header-left .fc-button-next.fc-state-down {
684 | background: none !important;
685 | margin-top: -1px
686 | }
687 | .fc-header-left .fc-button-prev .fc-button-inner {
688 | background-position: 0 -351px;
689 | height: 16px;
690 | width: 11px
691 | }
692 | .fc-header-left .fc-button-next {
693 | float: right
694 | }
695 | .fc-header-left .fc-button-next .fc-button-inner {
696 | background-position: 0 -367px;
697 | height: 16px;
698 | width: 11px
699 | }
700 | .fc-header-center {
701 | text-align: center
702 | }
703 | .fc-header-right {
704 | text-align: right;
705 | position: absolute;
706 | top: -34px;
707 | right: 10px
708 | }
709 | .fc-header-title {
710 | display: inline-block;
711 | vertical-align: top
712 | }
713 | .fc-header-title h2 {
714 | margin-top: 0;
715 | white-space: nowrap;
716 | font-size: 1.1rem;
717 | color: #6C737F;
718 | line-height: 55px;
719 | }
720 | .fc .fc-header-space {
721 | padding-left: 10px
722 | }
723 | .fc-header .fc-button {
724 | margin-bottom: 1em;
725 | vertical-align: top
726 | }
727 | .fc-header .fc-button {
728 | margin-right: -1px
729 | }
730 | .fc-header .fc-corner-right {
731 | margin-right: 1px
732 | }
733 | .fc-header .ui-corner-right {
734 | margin-right: 0
735 | }
736 | .fc-header .fc-state-hover, .fc-header .ui-state-hover {
737 | z-index: 2
738 | }
739 | .fc-header .fc-state-down {
740 | z-index: 3
741 | }
742 | .fc-header .fc-state-active, .fc-header .ui-state-active {
743 | z-index: 4
744 | }
745 | .fc-content {
746 | clear: both;
747 | background: #f9f9f9
748 | }
749 | .fc-view {
750 | width: 100%;
751 | overflow: hidden
752 | }
753 | .fc-view thead {
754 | background:#e9ecf1;
755 | line-height: 35px
756 | }
757 | .fc-widget-header, .fc-widget-content {
758 | border: 1px solid #ccc
759 | }
760 | .fc-state-highlight {
761 | background: #F4F3E6
762 | }
763 | .fc-cell-overlay {
764 | background: #9cf;
765 | opacity: .2;
766 | filter: alpha(opacity=20)
767 | }
768 | .fc-button {
769 | position: relative;
770 | display: inline-block;
771 | cursor: pointer
772 | }
773 | .fc-button-today{margin-top: 8px !important;}
774 | .fc-state-default {
775 | border-style: solid;
776 | border-width: 1px 0
777 | }
778 | .fc-button-inner {
779 | position: relative;
780 | float: left;
781 | overflow: hidden
782 | }
783 | .fc-state-default .fc-button-inner {
784 | border-style: solid;
785 | border-width: 0 1px
786 | }
787 | .fc-button-content {
788 | position: relative;
789 | float: left;
790 | height: 1.9em;
791 | line-height: 1.9em;
792 | padding: 0 .6em;
793 | white-space: nowrap
794 | }
795 | .fc-button-content .fc-icon-wrap {
796 | position: relative;
797 | float: left;
798 | top: 50%
799 | }
800 | .fc-button-content .ui-icon {
801 | position: relative;
802 | float: left;
803 | margin-top: -50%;
804 | *margin-top:0;
805 | *top:-50%
806 | }
807 | .fc-state-default .fc-button-effect {
808 | position: absolute;
809 | top: 50%;
810 | left: 0
811 | }
812 | .fc-state-default .fc-button-effect span {
813 | position: absolute;
814 | top: -100px;
815 | left: 0;
816 | width: 500px;
817 | height: 100px;
818 | border-width: 100px 0 0 1px;
819 | border-style: solid;
820 | border-color: #fff;
821 | background: #444;
822 | opacity: .09;
823 | filter: alpha(opacity=9)
824 | }
825 | .fc-state-default, .fc-state-default .fc-button-inner {
826 | border-style: solid;
827 | border-color: #ccc #bbb #aaa;
828 | color: #000
829 | }
830 | .fc-state-hover, .fc-state-hover .fc-button-inner {
831 | border-color: #999
832 | }
833 | .fc-state-down {
834 | border-color: #555;
835 | background: #777
836 | }
837 | .fc-state-active, .fc-state-active .fc-button-inner {
838 | border-color: #555;
839 | background: #777;
840 | color: #fff
841 | }
842 | .fc-state-disabled, .fc-state-disabled .fc-button-inner {
843 | color: #999;
844 | border-color: #ddd
845 | }
846 | .fc-state-disabled {
847 | cursor: default
848 | }
849 | .fc-state-disabled .fc-button-effect {
850 | display: none
851 | }
852 | .fc-event {
853 | border-style: solid;
854 | border-width: 0;
855 | font-size: .85em;
856 | cursor: default
857 | }
858 | a.fc-event, .fc-event-draggable {
859 | cursor: pointer
860 | }
861 | a.fc-event {
862 | text-decoration: none
863 | }
864 | .fc-rtl .fc-event {
865 | text-align: right
866 | }
867 | .fc-event-skin {
868 | border-color: #3f85f5;
869 | background-color: #5e96ea;
870 | color: #fff
871 | }
872 | .fc-event-inner {
873 | position: relative;
874 | width: 100%;
875 | height: 100%;
876 | border-style: solid;
877 | border-width: 0;
878 | overflow: hidden
879 | }
880 | .fc-event-time, .fc-event-title {
881 | padding: 0 1px
882 | }
883 | .fc .ui-resizable-handle {
884 | display: block;
885 | position: absolute;
886 | z-index: 99999;
887 | overflow: hidden;
888 | font-size: 300%;
889 | line-height: 50%
890 | }
891 | .fc-event-hori {
892 | border-width: 1px 0;
893 | margin-bottom: 1px
894 | }
895 | .fc-event-hori .ui-resizable-e {
896 | top: 0 !important;
897 | right: -3px !important;
898 | width: 7px !important;
899 | height: 100% !important;
900 | cursor: e-resize
901 | }
902 | .fc-event-hori .ui-resizable-w {
903 | top: 0 !important;
904 | left: -3px !important;
905 | width: 7px !important;
906 | height: 100% !important;
907 | cursor: w-resize
908 | }
909 | .fc-event-hori .ui-resizable-handle {
910 | _padding-bottom: 14px
911 | }
912 | .fc-corner-left {
913 | margin-left: 1px
914 | }
915 | .fc-corner-left .fc-button-inner, .fc-corner-left .fc-event-inner {
916 | margin-left: -1px
917 | }
918 | .fc-corner-right {
919 | margin-right: 1px
920 | }
921 | .fc-corner-right .fc-button-inner, .fc-corner-right .fc-event-inner {
922 | margin-right: -1px
923 | }
924 | .fc-corner-top {
925 | margin-top: 1px
926 | }
927 | .fc-corner-top .fc-event-inner {
928 | margin-top: -1px
929 | }
930 | .fc-corner-bottom {
931 | margin-bottom: 1px
932 | }
933 | .fc-corner-bottom .fc-event-inner {
934 | margin-bottom: -1px
935 | }
936 | .fc-corner-left .fc-event-inner {
937 | border-left-width: 1px
938 | }
939 | .fc-corner-right .fc-event-inner {
940 | border-right-width: 1px
941 | }
942 | .fc-corner-top .fc-event-inner {
943 | border-top-width: 1px
944 | }
945 | .fc-corner-bottom .fc-event-inner {
946 | border-bottom-width: 1px
947 | }
948 | table.fc-border-separate {
949 | border-collapse: separate
950 | }
951 | .fc-border-separate th, .fc-border-separate td {
952 | border-width: 1px 0 0 1px
953 | }
954 | .fc-border-separate th.fc-last, .fc-border-separate td.fc-last {
955 | border-right-width: 1px
956 | }
957 | .fc-border-separate tr.fc-last th, .fc-border-separate tr.fc-last td {
958 | border-bottom-width: 0px
959 | }
960 | .fc-first {
961 | border-left-width: 0 !important
962 | }
963 | .fc-last {
964 | border-right-width: 0 !important
965 | }
966 | .fc-grid th {
967 | text-align: center
968 | }
969 | .fc-grid .fc-day-number {
970 | float: right;
971 | padding: 0 2px
972 | }
973 | .fc-grid .fc-other-month .fc-day-number {
974 | opacity: 0.3;
975 | filter: alpha(opacity=30)
976 | }
977 | .fc-grid .fc-day-content {
978 | clear: both;
979 | padding: 2px 2px 1px
980 | }
981 | .fc-grid .fc-event-time {
982 | font-weight: bold
983 | }
984 | .fc-rtl .fc-grid .fc-day-number {
985 | float: left
986 | }
987 | .fc-rtl .fc-grid .fc-event-time {
988 | float: right
989 | }
990 | .fc-agenda table {
991 | border-collapse: separate
992 | }
993 | .fc-agenda-days th {
994 | text-align: center
995 | }
996 | .fc-agenda .fc-agenda-axis {
997 | width: 60px !important;
998 | padding: 0 4px;
999 | vertical-align: middle;
1000 | text-align: right;
1001 | white-space: nowrap;
1002 | font-weight: normal
1003 | }
1004 | .fc-agenda .fc-day-content {
1005 | padding: 2px 2px 1px
1006 | }
1007 | .fc-agenda-days .fc-agenda-axis {
1008 | border-right-width: 1px
1009 | }
1010 | .fc-agenda-days .fc-col0 {
1011 | border-left-width: 0
1012 | }
1013 | .fc-agenda-allday th {
1014 | border-width: 0 1px
1015 | }
1016 | .fc-agenda-allday .fc-day-content {
1017 | min-height: 34px;
1018 | _height: 34px
1019 | }
1020 | .fc-agenda-divider-inner {
1021 | height: 2px;
1022 | overflow: hidden
1023 | }
1024 | .fc-widget-header .fc-agenda-divider-inner {
1025 | background: #eee
1026 | }
1027 | .fc-agenda-slots th {
1028 | border-width: 1px 1px 0
1029 | }
1030 | .fc-agenda-slots td {
1031 | border-width: 1px 0 0;
1032 | background: none
1033 | }
1034 | .fc-agenda-slots td div {
1035 | height: 20px
1036 | }
1037 | .fc-agenda-slots tr.fc-slot0 th, .fc-agenda-slots tr.fc-slot0 td {
1038 | border-top-width: 0
1039 | }
1040 | .fc-agenda-slots tr.fc-minor th, .fc-agenda-slots tr.fc-minor td {
1041 | border-top-style: dotted
1042 | }
1043 | .fc-agenda-slots tr.fc-minor th.ui-widget-header {
1044 | *border-top-style:solid
1045 | }
1046 | .fc-event-vert {
1047 | border-width: 0 1px
1048 | }
1049 | .fc-event-vert .fc-event-head, .fc-event-vert .fc-event-content {
1050 | position: relative;
1051 | z-index: 2;
1052 | width: 100%;
1053 | overflow: hidden
1054 | }
1055 | .fc-event-vert .fc-event-time {
1056 | white-space: nowrap;
1057 | font-size: 10px
1058 | }
1059 | .fc-event-vert .fc-event-bg {
1060 | position: absolute;
1061 | z-index: 1;
1062 | top: 0;
1063 | left: 0;
1064 | width: 100%;
1065 | height: 100%;
1066 | background: #fff;
1067 | opacity: .3;
1068 | filter: alpha(opacity=30)
1069 | }
1070 | .fc .ui-draggable-dragging .fc-event-bg, .fc-select-helper .fc-event-bg {
1071 | display: none\9
1072 | }
1073 | .fc-event-vert .ui-resizable-s {
1074 | bottom: 0 !important;
1075 | width: 100% !important;
1076 | height: 8px !important;
1077 | overflow: hidden !important;
1078 | line-height: 8px !important;
1079 | font-size: 11px !important;
1080 | font-family: monospace;
1081 | text-align: center;
1082 | cursor: s-resize
1083 | }
1084 | .fc-agenda .ui-resizable-resizing {
1085 | _overflow: hidden
1086 | }
1087 | .fc-header-left .fc-button-prev .fc-button-inner {background: url('../img/icons-sa7c41345d9.png') no-repeat; background-position: 0 -351px;
1088 | height: 16px;
1089 | width: 11px;}
1090 |
1091 | .fc-header-left .fc-button-next .fc-button-inner {background: url('../img/icons-sa7c41345d9.png') no-repeat; background-position: 0 -367px;
1092 | height: 16px;
1093 | width: 11px;}
1094 |
1095 | /*------------------------------------------------------------------
1096 | [8. Miscellaneous]
1097 | */
1098 |
1099 | .chart-holder {
1100 | width: 100%;
1101 | height: 250px;
1102 | }
1103 |
1104 | .dropdown-menu li>a:hover, .dropdown-menu .active>a, .dropdown-menu .active>a:hover { background:#00ba8b;}
1105 |
1106 | .accordion-heading { background:#e5e5e5; }
1107 | .accordion-heading a { color:#545454; text-decoration:none; font-weight:bold; }
1108 |
1109 | .btn-facebook-alt i {
1110 | color: #23386a;
1111 | }
1112 | .btn-twitter-alt i {
1113 | color: #0098d0;
1114 | }
1115 | .btn-google-alt i {
1116 | color: #b6362d;
1117 | }
1118 | .btn-linkedin-alt i {
1119 | color: #0073b2;
1120 | }
1121 | .btn-pinterest-alt i {
1122 | color: #ab171e;
1123 | }
1124 | .btn-github-alt i {
1125 | color: #333;
1126 | }
1127 |
1128 | .all-icons li { list-style:none;}
1129 |
1130 | .ML0 { margin-left:0}
1131 | .MR0 { margin-right:0;}
1132 |
1133 |
1134 |
1135 | /*------------------------------------------------------------------
1136 | [1. Max Width: 480px]
1137 | */
1138 |
1139 | @media (max-width: 480px) {
1140 |
1141 | .error-container h1 {
1142 | font-size: 72px;
1143 | }
1144 |
1145 | }
1146 |
1147 |
1148 |
1149 |
1150 |
1151 | /*------------------------------------------------------------------
1152 | [1. Max Width: 767px]
1153 | */
1154 |
1155 | @media (max-width: 767px) {
1156 |
1157 | #main {
1158 | padding: 0 10px;
1159 | margin-right: -20px;
1160 | margin-left: -20px;
1161 | }
1162 |
1163 |
1164 | .subnavbar {
1165 | margin-left: -20px;
1166 | margin-right: -20px;
1167 | }
1168 |
1169 |
1170 | .subnavbar-inner {
1171 | height: auto;
1172 | }
1173 |
1174 | .subnavbar .container > ul {
1175 | width: 100%;
1176 | height: auto;
1177 |
1178 | border: none;
1179 | }
1180 |
1181 | .subnavbar .container > ul > li {
1182 | width: 33%;
1183 | height: 70px;
1184 | margin-bottom: 0;
1185 |
1186 | border: none;
1187 | }
1188 |
1189 |
1190 |
1191 | .subnavbar .container > ul > li.active > a {
1192 | font-size: 11px;
1193 | background: transparent;
1194 | }
1195 |
1196 | .subnavbar .container > ul > li > a > i {
1197 | display: inline-block;
1198 | margin-bottom: 0;
1199 |
1200 | font-size: 20px;
1201 | }
1202 |
1203 |
1204 | .subnavbar-open-right .dropdown-menu {
1205 | left: auto;
1206 | right: 0;
1207 | }
1208 |
1209 | .subnavbar-open-right .dropdown-menu:before {
1210 | left: auto;
1211 | right: 12px;
1212 | }
1213 | .subnavbar-open-right .dropdown-menu:after {
1214 | left: auto;
1215 | right: 13px;
1216 | }
1217 |
1218 | .extra {
1219 | margin-right: -20px;
1220 | margin-left: -20px;
1221 | }
1222 |
1223 | .extra .container {
1224 | padding: 0 20px;
1225 | }
1226 |
1227 | .footer {
1228 | margin-right: -20px;
1229 | margin-left: -20px;
1230 | }
1231 |
1232 | .footer .container {
1233 | padding: 0 20px;
1234 | }
1235 |
1236 | .footer .footer-terms {
1237 | text-align: left;
1238 | }
1239 |
1240 | .footer .footer-terms a {
1241 | margin-left: 0;
1242 | margin-right: 1em;
1243 | }
1244 |
1245 | }
1246 |
1247 |
1248 |
1249 |
1250 |
1251 | /*------------------------------------------------------------------
1252 | [3. Max Width: 979px]
1253 | */
1254 |
1255 | @media (max-width: 979px) {
1256 |
1257 | .navbar-fixed-top {
1258 | position: static;
1259 |
1260 | margin-bottom: 0;
1261 | }
1262 |
1263 | .subnavbar {
1264 | }
1265 |
1266 | .subnavbar .container {
1267 | width: auto;
1268 | }
1269 | }
1270 |
1271 |
1272 |
1273 |
1274 |
1275 |
1276 | /*------------------------------------------------------------------
1277 | [2. Max Width: 1200px]
1278 | */
1279 |
1280 | @media (min-width: 1200px) {
1281 | .navbar .search-query {
1282 | width: 200px;
1283 | }
1284 |
1285 | }
1286 |
1287 | .validation-invalid {
1288 | color:red
1289 | }
1290 |
1291 | table + div[ng-include] { padding: 0 5px; }
1292 |
1293 | /**angular bootstrap ****/
1294 | .nav,.pagination,.carousel,.panel-title a {
1295 | cursor:pointer
1296 | }
1297 |
--------------------------------------------------------------------------------
/img/body-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/body-bg.png
--------------------------------------------------------------------------------
/img/glyphicons-halflings-white.html:
--------------------------------------------------------------------------------
1 |
2 | 404 Not Found
3 |
4 | 404 Not Found
5 |
nginx
6 |
7 |
8 |
--------------------------------------------------------------------------------
/img/glyphicons-halflings.html:
--------------------------------------------------------------------------------
1 |
2 | 404 Not Found
3 |
4 | 404 Not Found
5 |
nginx
6 |
7 |
8 |
--------------------------------------------------------------------------------
/img/icons-sa7c41345d9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/icons-sa7c41345d9.png
--------------------------------------------------------------------------------
/img/message_avatar1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/message_avatar1.png
--------------------------------------------------------------------------------
/img/message_avatar2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/message_avatar2.png
--------------------------------------------------------------------------------
/img/signin/check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/signin/check.png
--------------------------------------------------------------------------------
/img/signin/fb_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/signin/fb_btn.png
--------------------------------------------------------------------------------
/img/signin/password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/signin/password.png
--------------------------------------------------------------------------------
/img/signin/twitter_btn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/signin/twitter_btn.png
--------------------------------------------------------------------------------
/img/signin/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mail2asik/angular-app/46d2f4239b5090b60263695786e6d3f2e5a4b4b5/img/signin/user.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | AngularJS POC
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/partials/common/footer.html:
--------------------------------------------------------------------------------
1 |
51 |
52 |
65 |
--------------------------------------------------------------------------------
/partials/common/loginHeader.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/partials/common/mock/error.json:
--------------------------------------------------------------------------------
1 | {
2 | "error": true,
3 | "errorMsg": "Something went wrong!"
4 | }
--------------------------------------------------------------------------------
/partials/common/mock/success.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "error": false,
4 | "errorMsg": "Something went wrong"
5 | }
--------------------------------------------------------------------------------
/partials/common/userHeader.html:
--------------------------------------------------------------------------------
1 |
32 |
33 |
58 |
--------------------------------------------------------------------------------
/partials/customers/addCustomer.html:
--------------------------------------------------------------------------------
1 |
100 |
--------------------------------------------------------------------------------
/partials/customers/customerTab.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/partials/customers/customers.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/partials/customers/customers.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('customers', ['ngTable']);
4 |
5 | //Routers
6 | myApp.config(function($stateProvider) {
7 |
8 | //Search Customers
9 | $stateProvider.state('customers', {
10 | url: '/customers',
11 | templateUrl: 'partials/customers/customers.html',
12 | data:{
13 | auth:true
14 | }
15 | });
16 |
17 | //Add Customer
18 | $stateProvider.state('addCustomer', {
19 | url: '/addCustomer',
20 | templateUrl: 'partials/customers/addCustomer.html',
21 | data:{
22 | auth:true
23 | }
24 | });
25 |
26 | //Customer Tab
27 | $stateProvider.state('customer', {
28 | url: '',
29 | abstract:true,
30 | templateUrl: 'partials/customers/customerTab.html',
31 | data:{
32 | auth:true
33 | }
34 | });
35 |
36 | //View customer
37 | $stateProvider.state('customer.view', {
38 | url: "/view/{id}",
39 | views: {
40 | "viewCustomer": {
41 | templateUrl: "partials/customers/viewCustomer.html",
42 | controller: 'viewCustomerController'
43 | }
44 | },
45 | resolve: {
46 | customerResolved: function(customerServices, $stateParams) {
47 | return customerServices.getCustomer($stateParams.id);
48 | }
49 | },
50 | data:{
51 | auth:true
52 | }
53 | });
54 |
55 | //Edit customer
56 | $stateProvider.state('customer.edit', {
57 | url: "/edit/{id}",
58 | views: {
59 | "editCustomer": {
60 | templateUrl: "partials/customers/editCustomer.html",
61 | controller: 'editCustomerController'
62 | }
63 | },
64 | resolve: {
65 | customerResolved: function(customerServices, $stateParams) {
66 | return customerServices.getCustomer($stateParams.id);
67 | }
68 | },
69 | data:{
70 | auth:true
71 | }
72 | });
73 |
74 | });
75 |
76 | //Factories
77 | myApp.factory('customerServices', ['$http', function($http) {
78 |
79 | var factoryDefinitions = {
80 | getCustomers: function() {
81 | return $http.get('partials/customers/mock/customers.json').success(function(data) { return data; });
82 | },
83 | addCustomer: function(customerReq) {
84 | return $http.post('partials/common/mock/success.json', customerReq).success(function(data) { return data; });
85 | },
86 | getCustomer: function(customerId) {
87 | return $http.get('partials/customers/mock/get_customer.json?id=' + customerId).success(function(data) { return data; });
88 | },
89 | updateCustomer: function(customerReq) {
90 | return $http.post('partials/common/mock/success.json', customerReq).success(function(data) { return data; });
91 | },
92 | }
93 |
94 | return factoryDefinitions;
95 | }
96 | ]);
97 |
98 | //Controllers
99 | myApp.controller('getCustomersController', ['$scope', 'customerServices', 'dataTable', function($scope, customerServices, dataTable) {
100 | customerServices.getCustomers().then(function(result){
101 | $scope.data = result.data;
102 | if (!result.data.error) {
103 | dataTable.render($scope, '', "customerstList", result.data.response);
104 | }
105 | });
106 | }]);
107 |
108 | myApp.controller('addCustomerController', ['$scope', 'customerServices', '$location', function($scope, customerServices, $location) {
109 | $scope.addCustomer = function() {
110 | if ($scope.addCustomerForm.$valid) {
111 | customerServices.addCustomer($scope.customer).then(function(result){
112 | $scope.data = result;
113 | if (!result.error) {
114 | $location.path("/customers");
115 | }
116 | });
117 | }
118 | }
119 |
120 | $scope.cancel = function() {
121 | $location.path("/customers");
122 | }
123 | }]);
124 |
125 | myApp.controller('viewCustomerController', ['$scope', 'customerResolved', function($scope, customerResolved) {
126 | $scope.viewCustomer = customerResolved.data;
127 | }]);
128 |
129 | myApp.controller('editCustomerController', ['$scope', 'customerResolved', 'customerServices', '$location', '$state', function($scope, customerResolved, customerServices, $location, $state) {
130 | $scope.customer = customerResolved.data;
131 |
132 | $scope.updateCustomer = function() {
133 | if ($scope.editCustomerForm.$valid) {
134 | customerServices.updateCustomer($scope.customer).then(function(result){
135 | $scope.data = result.data;
136 | if (!result.data.error) {
137 | $state.transitionTo('customer.view', {
138 | id: $state.params.id
139 | });
140 | }
141 | });
142 | }
143 | };
144 |
145 | $scope.cancel = function() {
146 | $location.path("/customers");
147 | }
148 | }]);
--------------------------------------------------------------------------------
/partials/customers/editCustomer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/partials/customers/mock/customers.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "response":[
4 | {
5 | "id" : "1",
6 | "first_name" : "John",
7 | "last_name" : "Smith",
8 | "email" : "John@gmail.com",
9 | "phone" : "(444)-83388-9999",
10 | "country" : "United States"
11 | },
12 | {
13 | "id" : "2",
14 | "first_name" : "Mohamed",
15 | "last_name" : "Akmal",
16 | "email" : "Mohamed@gmail.com",
17 | "phone" : "(222)-888-9999",
18 | "country" : "India"
19 | },
20 | {
21 | "id" : "3",
22 | "first_name" : "Roshan",
23 | "last_name" : "Vikram",
24 | "email" : "Roshan@gmail.com",
25 | "phone" : "(111)-888-9999",
26 | "country" : "Netherland"
27 | },
28 | {
29 | "first_name" : "Catherine",
30 | "last_name" : "Baker",
31 | "email" : "Catherine@gmail.com",
32 | "phone" : "(777)-888-9999",
33 | "country" : "Australia"
34 | },
35 | {
36 | "id" : "4",
37 | "first_name" : "Williams",
38 | "last_name" : "Smith",
39 | "email" : "Williams@gmail.com",
40 | "phone" : "(000)-888-9999",
41 | "country" : "United States"
42 | },
43 | {
44 | "id" : "5",
45 | "first_name" : "Ronaldo",
46 | "last_name" : "Thinker",
47 | "email" : "Ronaldo@gmail.com",
48 | "phone" : "(444)-83388-99991",
49 | "country" : "United States"
50 | },
51 | {
52 | "id" : "6",
53 | "first_name" : "Virendra",
54 | "last_name" : "Sharma",
55 | "email" : "Virendra@gmail.com",
56 | "phone" : "(222)-888-99992",
57 | "country" : "India"
58 | },
59 | {
60 | "id" : "7",
61 | "first_name" : "Sachin",
62 | "last_name" : "Tendulkar",
63 | "email" : "Sachin@gmail.com",
64 | "phone" : "(111)-888-99993",
65 | "country" : "Netherland"
66 | },
67 | {
68 | "id" : "8",
69 | "first_name" : "Abdul",
70 | "last_name" : "Kalam",
71 | "email" : "Abdul@gmail.com",
72 | "phone" : "(777)-888-99994",
73 | "country" : "Australia"
74 | },
75 | {
76 | "id" : "9",
77 | "first_name" : "Pranab",
78 | "last_name" : "Mukerji",
79 | "email" : "Pranab@gmail.com",
80 | "phone" : "(000)-888-99995",
81 | "country" : "United States"
82 | },
83 | {
84 | "id" : "10",
85 | "first_name" : "Barak",
86 | "last_name" : "Obama",
87 | "email" : "Barak@gmail.com",
88 | "phone" : "(444)-83388-99996",
89 | "country" : "United States"
90 | },
91 | {
92 | "id" : "11",
93 | "first_name" : "Clinton",
94 | "last_name" : "Smith",
95 | "email" : "Clinton@gmail.com",
96 | "phone" : "(222)-888-99997",
97 | "country" : "India"
98 | },
99 | {
100 | "id" : "12",
101 | "first_name" : "John",
102 | "last_name" : "Mike",
103 | "email" : "Mike@gmail.com",
104 | "phone" : "(111)-888-99998",
105 | "country" : "Netherland"
106 | }
107 | ]
108 | }
--------------------------------------------------------------------------------
/partials/customers/mock/get_customer.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "id": "7",
4 | "first_name" : "John",
5 | "last_name" : "Smith",
6 | "email" : "John@gmail.com",
7 | "phone" : "(444)-83388-9999",
8 | "bio" : "Hey! myself John! working as a software consultant in Newyork city",
9 | "country" : "United States"
10 | }
--------------------------------------------------------------------------------
/partials/customers/viewCustomer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/partials/dashboard/dashboard.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
34 |
35 |
36 |
37 |
59 |
60 |
61 |
62 |
63 |
78 |
79 |
80 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/partials/dashboard/dashboard.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('dashboard', []);
4 |
5 | //Routers
6 | myApp.config(function($stateProvider) {
7 | $stateProvider.state('dashboard', {
8 | url: '/dashboard',
9 | templateUrl: 'partials/dashboard/dashboard.html',
10 | data:{
11 | auth:true
12 | }
13 | });
14 |
15 | });
16 |
17 | //Factories
18 | myApp.factory('dashboardServices', ['$http', function($http) {
19 |
20 | var factoryDefinitions = {
21 | getTodaysStats: function() {
22 | return $http.get('partials/dashboard/mock/todays_stats.json').success(function(data) { return data; });
23 | },
24 | getRecentNews: function() {
25 | return $http.get('partials/dashboard/mock/recent_news.json').success(function(data, status, headers, config) { return data; });
26 | },
27 | getLastFiveCustomers: function() {
28 | return $http.get('partials/dashboard/mock/customers_last_five.json').success(function(data) { return data; });
29 | }
30 | }
31 |
32 | return factoryDefinitions;
33 | }
34 | ]);
35 |
36 | //Controllers
37 | myApp.controller('todaysStatsController', ['$scope', 'dashboardServices', function($scope, dashboardServices) {
38 | dashboardServices.getTodaysStats().then(function(result){
39 | $scope.data = result.data;
40 | });
41 | }]);
42 |
43 | myApp.controller('recentNewsController', ['$scope', 'dashboardServices', function($scope, dashboardServices) {
44 | dashboardServices.getRecentNews().then(function(result){
45 | $scope.data = result.data;
46 | });
47 | }]);
48 |
49 | myApp.controller('getLastFiveCustomersController', ['$scope', 'dashboardServices', function($scope, dashboardServices) {
50 | dashboardServices.getLastFiveCustomers().then(function(result){
51 | $scope.data = result.data;
52 | });
53 | }]);
--------------------------------------------------------------------------------
/partials/dashboard/mock/customers_last_five.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "response":[
4 | {
5 | "first_name" : "John",
6 | "last_name" : "Smith",
7 | "email" : "John@gmail.com"
8 | },
9 | {
10 | "first_name" : "Mohamed",
11 | "last_name" : "Akmal",
12 | "email" : "Mohamed@gmail.com"
13 | },
14 | {
15 | "first_name" : "Roshan",
16 | "last_name" : "Vikram",
17 | "email" : "Roshan@gmail.com"
18 | },
19 | {
20 | "first_name" : "Catherine",
21 | "last_name" : "Baker",
22 | "email" : "Catherine@gmail.com"
23 | },
24 | {
25 | "first_name" : "Williams",
26 | "last_name" : "Smith",
27 | "email" : "Williams@gmail.com"
28 | }
29 | ]
30 | }
--------------------------------------------------------------------------------
/partials/dashboard/mock/recent_news.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "response":[
4 | {
5 | "date" : 29,
6 | "month" : "Aug",
7 | "title": "Thursday Roundup # 40",
8 | "description" : "This is our web design and development news series where we share our favorite design/development related articles, resources, tutorials and awesome freebies. "
9 | },
10 | {
11 | "date" : 15,
12 | "month" : "Jun",
13 | "title": "Retina Ready Responsive App Landing Page Website Template",
14 | "description" : "App Landing is a retina ready responsive app landing page website template perfect for software and application developers and small business owners looking to promote their iPhone, iPad, Android Apps and software products."
15 | }
16 | ]
17 | }
--------------------------------------------------------------------------------
/partials/dashboard/mock/todays_stats.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "response":{
4 | "stats" : 851,
5 | "likes" : 423,
6 | "twitter": 922,
7 | "announcements" : 25
8 | }
9 | }
--------------------------------------------------------------------------------
/partials/reports/mock/customers_reports.json:
--------------------------------------------------------------------------------
1 | {
2 | "success" : true,
3 | "labels": ["January", "February", "March", "April", "May", "June", "July"],
4 | "series": ["Series A", "Series B"],
5 | "points" : [
6 | [65, 59, 80, 81, 56, 55, 40],
7 | [28, 48, 40, 19, 86, 27, 90]
8 | ]
9 | }
--------------------------------------------------------------------------------
/partials/reports/mock/orders_reports.json:
--------------------------------------------------------------------------------
1 | {
2 | "success" : true,
3 | "labels": ["2006", "2007", "2008", "2009", "2010", "2011", "2012"],
4 | "series": ["Series A", "Series B"],
5 | "points" : [
6 | [65, 59, 80, 81, 56, 55, 40],
7 | [28, 48, 40, 19, 86, 27, 90]
8 | ]
9 | }
--------------------------------------------------------------------------------
/partials/reports/reports.html:
--------------------------------------------------------------------------------
1 |
50 |
--------------------------------------------------------------------------------
/partials/reports/reports.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | angular.module('reports', ['chart.js']);
4 |
5 | //Routers
6 | myApp.config(function($stateProvider) {
7 | $stateProvider.state('reports', {
8 | url: '/reports',
9 | templateUrl: 'partials/reports/reports.html',
10 | data:{
11 | auth:true
12 | }
13 | });
14 |
15 | });
16 |
17 | //Factories
18 | myApp.factory('reportsServices', ['$http', function($http) {
19 |
20 | var factoryDefinitions = {
21 | getCustomersReports: function() {
22 | return $http.get('partials/reports/mock/customers_reports.json').success(function(data) { return data; });
23 | },
24 | getOrdersReports: function() {
25 | return $http.get('partials/reports/mock/orders_reports.json').success(function(data, status, headers, config) { return data; });
26 | }
27 | }
28 |
29 | return factoryDefinitions;
30 | }
31 | ]);
32 |
33 | //Controllers
34 | myApp.controller('customersReportsController', ['$scope', 'reportsServices', function($scope, reportsServices) {
35 | reportsServices.getCustomersReports().then(function(result){
36 | $scope.data = result.data;
37 | });
38 | }]);
39 |
40 | myApp.controller('ordersReportsController', ['$scope', 'reportsServices', function($scope, reportsServices) {
41 | reportsServices.getOrdersReports().then(function(result){
42 | $scope.data = result.data;
43 | });
44 | }]);
--------------------------------------------------------------------------------
/partials/users/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/partials/users/mock/login.json:
--------------------------------------------------------------------------------
1 | {
2 | "success": true,
3 | "data":{
4 | "firstName" : "John",
5 | "lastName" : "Smith",
6 | "email": "mail2asik@gmail.com"
7 | }
8 | }
--------------------------------------------------------------------------------
/partials/users/signup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/partials/users/users.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | angular.module('users', []);
3 |
4 | //Routers
5 | myApp.config(function($stateProvider) {
6 |
7 | //Login
8 | $stateProvider.state('login', {
9 | url: "/login",
10 | templateUrl: 'partials/users/login.html',
11 | controller: 'loginController'
12 | });
13 |
14 | //Signup
15 | $stateProvider.state('signup', {
16 | url: "/signup",
17 | templateUrl: 'partials/users/signup.html',
18 | controller: 'signupController'
19 | });
20 |
21 | //Logout
22 | $stateProvider.state('logout', {
23 | url: "/logout",
24 | template: "Logging out...
",
25 | controller: 'logoutController'
26 | });
27 |
28 | });
29 |
30 | //Factories
31 | myApp.factory('userServices', ['$http', function($http) {
32 |
33 | var factoryDefinitions = {
34 | login: function(loginReq) {
35 | return $http.post('partials/users/mock/login.json', loginReq).success(function(data) { return data; });
36 | },
37 | signup: function(signupReq) {
38 | return $http.post('partials/common/mock/success.json', signupReq).success(function(data) { return data; });
39 | }
40 | }
41 |
42 | return factoryDefinitions;
43 | }
44 | ]);
45 |
46 | //Controllers
47 | myApp.controller('loginController', ['$scope', 'userServices', '$location', '$rootScope', function($scope, userServices, $location, $rootScope) {
48 |
49 | $scope.login = {"email":"mail2asik@gmail.com", "password": "mypassword"};
50 |
51 | $scope.doLogin = function() {
52 |
53 | if ($scope.loginForm.$valid) {
54 | userServices.login($scope.login).then(function(result){
55 | $scope.data = result;
56 | if (!result.error) {
57 | window.sessionStorage["userInfo"] = JSON.stringify(result.data);
58 | $rootScope.userInfo = JSON.parse(window.sessionStorage["userInfo"]);
59 | $location.path("/dashboard");
60 | }
61 | });
62 | }
63 | };
64 | }]);
65 |
66 | myApp.controller('signupController', ['$scope', 'userServices', '$location', function($scope, userServices, $location) {
67 | $scope.doSignup = function() {
68 | if ($scope.signupForm.$valid) {
69 | userServices.signup($scope.signup).then(function(result){
70 | $scope.data = result;
71 | if (!result.error) {
72 | $location.path("/login");
73 | }
74 | });
75 | }
76 | }
77 | }]);
78 |
79 | myApp.controller('logoutController', ['$scope', '$location', '$rootScope', function($scope, $location, $rootScope) {
80 | sessionStorage.clear();
81 | $rootScope.userInfo = false;
82 | $location.path("/login");
83 | }]);
--------------------------------------------------------------------------------