diff --git a/bower.json b/bower.json index a99dc30..88c322a 100644 --- a/bower.json +++ b/bower.json @@ -51,7 +51,8 @@ "ionrangeslider": "~2.1.2", "angular-bootstrap": "~0.14.3", "angular-animate": "~1.4.8", - "textAngular": "~1.4.6" + "textAngular": "~1.4.6", + "angular-xeditable": "~0.1.9" }, "overrides": { "amcharts": { diff --git a/src/app/app.js b/src/app/app.js index 6197801..ae76807 100644 --- a/src/app/app.js +++ b/src/app/app.js @@ -8,6 +8,7 @@ angular.module('BlurAdmin', [ 'ngTouch', 'toastr', 'smart-table', + "xeditable", 'ui.slimscroll', 'BlurAdmin.theme', diff --git a/src/app/pages/form/inputs/widgets/select/selectpicker.directive.js b/src/app/pages/form/inputs/widgets/select/selectpicker.directive.js index 83af8dc..d66ed55 100644 --- a/src/app/pages/form/inputs/widgets/select/selectpicker.directive.js +++ b/src/app/pages/form/inputs/widgets/select/selectpicker.directive.js @@ -17,4 +17,6 @@ } }; } + + })(); \ No newline at end of file diff --git a/src/app/pages/tables/TablesPageCtrl.js b/src/app/pages/tables/TablesPageCtrl.js index 6c884bb..7d69d41 100644 --- a/src/app/pages/tables/TablesPageCtrl.js +++ b/src/app/pages/tables/TablesPageCtrl.js @@ -9,7 +9,10 @@ .controller('TablesPageCtrl', TablesPageCtrl); /** @ngInject */ - function TablesPageCtrl($scope) { + function TablesPageCtrl($scope, $filter) { + + $scope.smartTablePageSize = 12; + $scope.smartTableData = [ { id: 1, @@ -130,9 +133,371 @@ username: '@krikor', email: 'krikor@yandex.ru', age: '32' + }, + { + "id": 16, + "firstName": "Francisca", + "lastName": "Brady", + "username": "@Gibson", + "email": "franciscagibson@comtours.com", + "age": 11 + }, + { + "id": 17, + "firstName": "Tillman", + "lastName": "Figueroa", + "username": "@Snow", + "email": "tillmansnow@comtours.com", + "age": 34 + }, + { + "id": 18, + "firstName": "Jimenez", + "lastName": "Morris", + "username": "@Bryant", + "email": "jimenezbryant@comtours.com", + "age": 45 + }, + { + "id": 19, + "firstName": "Sandoval", + "lastName": "Jacobson", + "username": "@Mcbride", + "email": "sandovalmcbride@comtours.com", + "age": 32 + }, + { + "id": 20, + "firstName": "Griffin", + "lastName": "Torres", + "username": "@Charles", + "email": "griffincharles@comtours.com", + "age": 19 + }, + { + "id": 21, + "firstName": "Cora", + "lastName": "Parker", + "username": "@Caldwell", + "email": "coracaldwell@comtours.com", + "age": 27 + }, + { + "id": 22, + "firstName": "Cindy", + "lastName": "Bond", + "username": "@Velez", + "email": "cindyvelez@comtours.com", + "age": 24 + }, + { + "id": 23, + "firstName": "Frieda", + "lastName": "Tyson", + "username": "@Craig", + "email": "friedacraig@comtours.com", + "age": 45 + }, + { + "id": 24, + "firstName": "Cote", + "lastName": "Holcomb", + "username": "@Rowe", + "email": "coterowe@comtours.com", + "age": 20 + }, + { + "id": 25, + "firstName": "Trujillo", + "lastName": "Mejia", + "username": "@Valenzuela", + "email": "trujillovalenzuela@comtours.com", + "age": 16 + }, + { + "id": 26, + "firstName": "Pruitt", + "lastName": "Shepard", + "username": "@Sloan", + "email": "pruittsloan@comtours.com", + "age": 44 + }, + { + "id": 27, + "firstName": "Sutton", + "lastName": "Ortega", + "username": "@Black", + "email": "suttonblack@comtours.com", + "age": 42 + }, + { + "id": 28, + "firstName": "Marion", + "lastName": "Heath", + "username": "@Espinoza", + "email": "marionespinoza@comtours.com", + "age": 47 + }, + { + "id": 29, + "firstName": "Newman", + "lastName": "Hicks", + "username": "@Keith", + "email": "newmankeith@comtours.com", + "age": 15 + }, + { + "id": 30, + "firstName": "Boyle", + "lastName": "Larson", + "username": "@Summers", + "email": "boylesummers@comtours.com", + "age": 32 + }, + { + "id": 31, + "firstName": "Haynes", + "lastName": "Vinson", + "username": "@Mckenzie", + "email": "haynesmckenzie@comtours.com", + "age": 15 + }, + { + "id": 32, + "firstName": "Miller", + "lastName": "Acosta", + "username": "@Young", + "email": "milleryoung@comtours.com", + "age": 55 + }, + { + "id": 33, + "firstName": "Johnston", + "lastName": "Brown", + "username": "@Knight", + "email": "johnstonknight@comtours.com", + "age": 29 + }, + { + "id": 34, + "firstName": "Lena", + "lastName": "Pitts", + "username": "@Forbes", + "email": "lenaforbes@comtours.com", + "age": 25 + }, + { + "id": 35, + "firstName": "Terrie", + "lastName": "Kennedy", + "username": "@Branch", + "email": "terriebranch@comtours.com", + "age": 37 + }, + { + "id": 36, + "firstName": "Louise", + "lastName": "Aguirre", + "username": "@Kirby", + "email": "louisekirby@comtours.com", + "age": 44 + }, + { + "id": 37, + "firstName": "David", + "lastName": "Patton", + "username": "@Sanders", + "email": "davidsanders@comtours.com", + "age": 26 + }, + { + "id": 38, + "firstName": "Holden", + "lastName": "Barlow", + "username": "@Mckinney", + "email": "holdenmckinney@comtours.com", + "age": 11 + }, + { + "id": 39, + "firstName": "Baker", + "lastName": "Rivera", + "username": "@Montoya", + "email": "bakermontoya@comtours.com", + "age": 47 + }, + { + "id": 40, + "firstName": "Belinda", + "lastName": "Lloyd", + "username": "@Calderon", + "email": "belindacalderon@comtours.com", + "age": 21 + }, + { + "id": 41, + "firstName": "Pearson", + "lastName": "Patrick", + "username": "@Clements", + "email": "pearsonclements@comtours.com", + "age": 42 + }, + { + "id": 42, + "firstName": "Alyce", + "lastName": "Mckee", + "username": "@Daugherty", + "email": "alycedaugherty@comtours.com", + "age": 55 + }, + { + "id": 43, + "firstName": "Valencia", + "lastName": "Spence", + "username": "@Olsen", + "email": "valenciaolsen@comtours.com", + "age": 20 + }, + { + "id": 44, + "firstName": "Leach", + "lastName": "Holcomb", + "username": "@Humphrey", + "email": "leachhumphrey@comtours.com", + "age": 28 + }, + { + "id": 45, + "firstName": "Moss", + "lastName": "Baxter", + "username": "@Fitzpatrick", + "email": "mossfitzpatrick@comtours.com", + "age": 51 + }, + { + "id": 46, + "firstName": "Jeanne", + "lastName": "Cooke", + "username": "@Ward", + "email": "jeanneward@comtours.com", + "age": 59 + }, + { + "id": 47, + "firstName": "Wilma", + "lastName": "Briggs", + "username": "@Kidd", + "email": "wilmakidd@comtours.com", + "age": 53 + }, + { + "id": 48, + "firstName": "Beatrice", + "lastName": "Perry", + "username": "@Gilbert", + "email": "beatricegilbert@comtours.com", + "age": 39 + }, + { + "id": 49, + "firstName": "Whitaker", + "lastName": "Hyde", + "username": "@Mcdonald", + "email": "whitakermcdonald@comtours.com", + "age": 35 + }, + { + "id": 50, + "firstName": "Rebekah", + "lastName": "Duran", + "username": "@Gross", + "email": "rebekahgross@comtours.com", + "age": 40 + }, + { + "id": 51, + "firstName": "Earline", + "lastName": "Mayer", + "username": "@Woodward", + "email": "earlinewoodward@comtours.com", + "age": 52 + }, + { + "id": 52, + "firstName": "Moran", + "lastName": "Baxter", + "username": "@Johns", + "email": "moranjohns@comtours.com", + "age": 20 + }, + { + "id": 53, + "firstName": "Nanette", + "lastName": "Hubbard", + "username": "@Cooke", + "email": "nanettecooke@comtours.com", + "age": 55 + }, + { + "id": 54, + "firstName": "Dalton", + "lastName": "Walker", + "username": "@Hendricks", + "email": "daltonhendricks@comtours.com", + "age": 25 + }, + { + "id": 55, + "firstName": "Bennett", + "lastName": "Blake", + "username": "@Pena", + "email": "bennettpena@comtours.com", + "age": 13 + }, + { + "id": 56, + "firstName": "Kellie", + "lastName": "Horton", + "username": "@Weiss", + "email": "kellieweiss@comtours.com", + "age": 48 + }, + { + "id": 57, + "firstName": "Hobbs", + "lastName": "Talley", + "username": "@Sanford", + "email": "hobbssanford@comtours.com", + "age": 28 + }, + { + "id": 58, + "firstName": "Mcguire", + "lastName": "Donaldson", + "username": "@Roman", + "email": "mcguireroman@comtours.com", + "age": 38 + }, + { + "id": 59, + "firstName": "Rodriquez", + "lastName": "Saunders", + "username": "@Harper", + "email": "rodriquezharper@comtours.com", + "age": 20 + }, + { + "id": 60, + "firstName": "Lou", + "lastName": "Conner", + "username": "@Sanchez", + "email": "lousanchez@comtours.com", + "age": 16 } ]; + $scope.editableTableData = $scope.smartTableData.slice(0, 36); + $scope.peopleTableData = [ { id: 1, @@ -228,6 +593,82 @@ isPercentUp: false } ]; + + $scope.users = [ + { + "id": 1, + "name": "Esther Vang", + "status": 4, + "group": 3 + }, + { + "id": 2, + "name": "Leah Freeman", + "status": 3, + "group": 1 + }, + { + "id": 3, + "name": "Mathews Simpson", + "status": 3, + "group": 2 + }, + { + "id": 4, + "name": "Buckley Hopkins", + "group": 4 + }, + { + "id": 5, + "name": "Cheryl Schwartz", + "status": 4, + "group": 2 + } + ]; + + $scope.statuses = [ + {value: 1, text: 'Good'}, + {value: 2, text: 'Awesome'}, + {value: 3, text: 'Excellent'}, + ]; + + $scope.groups = [ + {id: 1, text: 'user'}, + {id: 2, text: 'customer'}, + {id: 3, text: 'vip'}, + {id: 4, text: 'admin'} + ]; + + $scope.showGroup = function(user) { + if(user.group && $scope.groups.length) { + var selected = $filter('filter')($scope.groups, {id: user.group}); + return selected.length ? selected[0].text : 'Not set'; + } else return 'Not set' + }; + + $scope.showStatus = function(user) { + var selected = []; + if(user.status) { + selected = $filter('filter')($scope.statuses, {value: user.status}); + } + return selected.length ? selected[0].text : 'Not set'; + }; + + + $scope.removeUser = function(index) { + $scope.users.splice(index, 1); + }; + + $scope.addUser = function() { + $scope.inserted = { + id: $scope.users.length+1, + name: '', + status: null, + group: null + }; + $scope.users.push($scope.inserted); + }; + } })(); diff --git a/src/app/pages/tables/basic/tables.html b/src/app/pages/tables/basic/tables.html new file mode 100644 index 0000000..28d167c --- /dev/null +++ b/src/app/pages/tables/basic/tables.html @@ -0,0 +1,40 @@ +
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
\ No newline at end of file diff --git a/src/app/pages/tables/smart/tables.html b/src/app/pages/tables/smart/tables.html new file mode 100644 index 0000000..e05f3f4 --- /dev/null +++ b/src/app/pages/tables/smart/tables.html @@ -0,0 +1,27 @@ +
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
\ No newline at end of file diff --git a/src/app/pages/tables/tables.module.js b/src/app/pages/tables/tables.module.js index 634a20d..5bccca7 100644 --- a/src/app/pages/tables/tables.module.js +++ b/src/app/pages/tables/tables.module.js @@ -6,16 +6,24 @@ 'use strict'; angular.module('BlurAdmin.pages.tables', []) - .config(routeConfig); + .config(routeConfig); /** @ngInject */ - function routeConfig($stateProvider) { + function routeConfig($stateProvider, $urlRouterProvider) { $stateProvider - .state('tables', { - url: '/tables', - templateUrl: 'app/pages/tables/tables.html', - controller: 'TablesPageCtrl' - }); + .state('tables', { + url: '/tables', + template : '', + abstract: true, + controller: 'TablesPageCtrl' + }).state('tables.basic', { + url: '/basic', + templateUrl: 'app/pages/tables/basic/tables.html' + }).state('tables.smart', { + url: '/smart', + templateUrl: 'app/pages/tables/smart/tables.html' + }); + $urlRouterProvider.when('/tables','/tables/basic'); } })(); diff --git a/src/app/pages/tables/widgets/contextualTable.html b/src/app/pages/tables/widgets/contextualTable.html new file mode 100644 index 0000000..680f79e --- /dev/null +++ b/src/app/pages/tables/widgets/contextualTable.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsernameEmailAge
1MarkOtto@mdo28
2JacobThornton@fat45
3LarryBird@twitter + 18
4JohnSnow@snow20
5JackSparrow@jack30
\ No newline at end of file diff --git a/src/app/pages/tables/widgets/editableRowTable.html b/src/app/pages/tables/widgets/editableRowTable.html new file mode 100644 index 0000000..0ab9a82 --- /dev/null +++ b/src/app/pages/tables/widgets/editableRowTable.html @@ -0,0 +1,45 @@ +
+ +
+ + + + + + + + + + + + + +
NameStatusGroupEdit
+ + {{ user.name || 'empty' }} + + + + {{ showStatus(user) }} + + + + {{ showGroup(user) }} + + +
+ + +
+
+ + +
+
diff --git a/src/app/pages/tables/widgets/editableTable.html b/src/app/pages/tables/widgets/editableTable.html new file mode 100644 index 0000000..767fcdd --- /dev/null +++ b/src/app/pages/tables/widgets/editableTable.html @@ -0,0 +1,27 @@ +
+ + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsernameEmailAge
{{item.id}}{{item.firstName}}{{item.lastName}}{{item.username}}{{item.age}}
+
+
+
\ No newline at end of file diff --git a/src/app/pages/tables/widgets/responsiveTable.html b/src/app/pages/tables/widgets/responsiveTable.html new file mode 100644 index 0000000..729074e --- /dev/null +++ b/src/app/pages/tables/widgets/responsiveTable.html @@ -0,0 +1,53 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsernameEmailAge
1MarkOtto@mdo28
2JacobThornton@fat45
3LarryBird@twitter + 18
4JohnSnow@snow20
5JackSparrow@jack30
+
\ No newline at end of file diff --git a/src/app/pages/tables/widgets/smartTable.html b/src/app/pages/tables/widgets/smartTable.html index 806ce30..fe6cd2e 100644 --- a/src/app/pages/tables/widgets/smartTable.html +++ b/src/app/pages/tables/widgets/smartTable.html @@ -1,8 +1,17 @@
+
+ +
- - + + @@ -11,11 +20,16 @@ - - - - - + + + + + @@ -31,7 +45,7 @@ diff --git a/src/app/theme/components/contentTop/contentTop.directive.js b/src/app/theme/components/contentTop/contentTop.directive.js index a2e4511..a27ebb0 100644 --- a/src/app/theme/components/contentTop/contentTop.directive.js +++ b/src/app/theme/components/contentTop/contentTop.directive.js @@ -33,7 +33,8 @@ '/mail': 'Mail Box', '/modals': 'Modals', '/profile': 'User Profile', - '/tables': 'Tables', + '/tables/basic': 'Basic Tables', + '/tables/smart': 'Smart Tables', '/tree': 'Tree View', '/slider': 'Sliders', '/typography': 'Typography', diff --git a/src/app/theme/components/sidebar/SidebarCtrl.js b/src/app/theme/components/sidebar/SidebarCtrl.js index 4bfb50f..7c6bbfd 100644 --- a/src/app/theme/components/sidebar/SidebarCtrl.js +++ b/src/app/theme/components/sidebar/SidebarCtrl.js @@ -6,7 +6,7 @@ 'use strict'; angular.module('BlurAdmin.theme.components') - .controller('SidebarCtrl', SidebarCtrl); + .controller('SidebarCtrl', SidebarCtrl); /** @ngInject */ function SidebarCtrl($scope, $timeout, $location, $rootScope, layoutSizes) { @@ -41,7 +41,16 @@ { title: 'Tables', icon: 'ion-grid', - root: '#/tables' + subMenu: [ + { + title: "Basic Tables", + root: '#/tables/basic' + }, + { + title: "Smart Tables", + root: '#/tables/smart' + } + ] }, { title: 'Form Elements', @@ -155,16 +164,16 @@ }, { title: 'Menu Level 1', - icon : 'ion-ios-more', + icon: 'ion-ios-more', subMenu: [ { - title : 'Menu Level 1.1' + title: 'Menu Level 1.1' }, { - title : 'Menu Level 1.2', + title: 'Menu Level 1.2', subMenu: [ { - title : 'Menu Level 1.2.1' + title: 'Menu Level 1.2.1' } ] } @@ -213,7 +222,7 @@ $rootScope.$isMenuCollapsed = true; }; - $rootScope.$watch('$isMenuCollapsed', function(newValue) { + $rootScope.$watch('$isMenuCollapsed', function (newValue) { if (!newValue && !$scope.selectElemTop) { changeSelectElemTopValue(); } diff --git a/src/app/theme/theme.run.js b/src/app/theme/theme.run.js index 387b4d6..3c69298 100644 --- a/src/app/theme/theme.run.js +++ b/src/app/theme/theme.run.js @@ -9,7 +9,7 @@ .run(themeRun); /** @ngInject */ - function themeRun($timeout, $rootScope, layoutSizes) { + function themeRun($timeout, $rootScope, layoutSizes, editableOptions) { $timeout(function () { $rootScope.$pageFinishedLoading = true; }, 1000); @@ -19,6 +19,8 @@ }, 4000); $rootScope.$isMenuCollapsed = window.innerWidth <= layoutSizes.resWidthCollapseSidebar; + + editableOptions.theme = 'bs3'; } })(); \ No newline at end of file diff --git a/src/sass/theme/_table.scss b/src/sass/theme/_table.scss index 377bd0c..10352b1 100644 --- a/src/sass/theme/_table.scss +++ b/src/sass/theme/_table.scss @@ -54,6 +54,57 @@ } } +.table-panel { + height: 280px; +} + +.editable-tr-wrap { + .editable-wrap { + vertical-align: super; + } + input.editable-input { + width: 110px; + } + td { + width: 20%; + } +} + +.editable-table-button { + width: 70px; +} + +.add-row-editable-table { + margin-bottom: 10px; +} + +.select-page-size-wrap{ + width: 150px; +} + +.table .header-row th { + vertical-align: middle; + padding: 0 8px; +} + +tr.editable-row { + input.form-control { + vertical-align: middle; + } +} + +.select-td .editable-select { + margin-bottom: 1px; +} + +@media screen and (max-width: 1199px) { + .editable-tr-wrap { + .editable-wrap { + vertical-align: middle; + } + } +} + .browser-icons { width: 41px; } @@ -61,6 +112,7 @@ .st-sort-ascent, .st-sort-descent { position: relative; } + .st-sort-ascent:after, .st-sort-descent:after { width: 0; height: 0; @@ -72,7 +124,7 @@ } .st-sort-descent:after { - transform:rotate(-180deg); + transform: rotate(-180deg); margin-bottom: -2px; } @@ -111,15 +163,16 @@ input.search-input { max-height: 214px; } -.pagination>li>a, .pagination>li>span { +.pagination > li > a, .pagination > li > span { background: transparent; } -.pagination>li:first-child>a, .pagination>li:first-child>span { - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; + +.pagination > li:first-child > a, .pagination > li:first-child > span { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; } -.pagination>li:last-child>a, .pagination>li:last-child>span { +.pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 0px; border-bottom-right-radius: 0px; } \ No newline at end of file
#
# First Name Last Name Username
+ +
-
+