select.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. // this is a lazy load controller,
  2. // so start with "app." to register this controller
  3. app.filter('propsFilter', function() {
  4. return function(items, props) {
  5. var out = [];
  6. if (angular.isArray(items)) {
  7. items.forEach(function(item) {
  8. var itemMatches = false;
  9. var keys = Object.keys(props);
  10. for (var i = 0; i < keys.length; i++) {
  11. var prop = keys[i];
  12. var text = props[prop].toLowerCase();
  13. if (item[prop].toString().toLowerCase().indexOf(text) !== -1) {
  14. itemMatches = true;
  15. break;
  16. }
  17. }
  18. if (itemMatches) {
  19. out.push(item);
  20. }
  21. });
  22. } else {
  23. // Let the output be the input untouched
  24. out = items;
  25. }
  26. return out;
  27. };
  28. })
  29. app.controller('SelectCtrl', function($scope, $http, $timeout) {
  30. $scope.disabled = undefined;
  31. $scope.searchEnabled = undefined;
  32. $scope.enable = function() {
  33. $scope.disabled = false;
  34. };
  35. $scope.disable = function() {
  36. $scope.disabled = true;
  37. };
  38. $scope.enableSearch = function() {
  39. $scope.searchEnabled = true;
  40. }
  41. $scope.disableSearch = function() {
  42. $scope.searchEnabled = false;
  43. }
  44. $scope.clear = function() {
  45. $scope.person.selected = undefined;
  46. $scope.address.selected = undefined;
  47. $scope.country.selected = undefined;
  48. };
  49. $scope.someGroupFn = function (item){
  50. if (item.name[0] >= 'A' && item.name[0] <= 'M')
  51. return 'From A - M';
  52. if (item.name[0] >= 'N' && item.name[0] <= 'Z')
  53. return 'From N - Z';
  54. };
  55. $scope.personAsync = {selected : "wladimir@email.com"};
  56. $scope.peopleAsync = [];
  57. $timeout(function(){
  58. $scope.peopleAsync = [
  59. { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' },
  60. { name: 'Amalie', email: 'amalie@email.com', age: 12, country: 'Argentina' },
  61. { name: 'Estefanía', email: 'estefania@email.com', age: 21, country: 'Argentina' },
  62. { name: 'Adrian', email: 'adrian@email.com', age: 21, country: 'Ecuador' },
  63. { name: 'Wladimir', email: 'wladimir@email.com', age: 30, country: 'Ecuador' },
  64. { name: 'Samantha', email: 'samantha@email.com', age: 30, country: 'United States' },
  65. { name: 'Nicole', email: 'nicole@email.com', age: 43, country: 'Colombia' },
  66. { name: 'Natasha', email: 'natasha@email.com', age: 54, country: 'Ecuador' },
  67. { name: 'Michael', email: 'michael@email.com', age: 15, country: 'Colombia' },
  68. { name: 'Nicolás', email: 'nicole@email.com', age: 43, country: 'Colombia' }
  69. ];
  70. },3000);
  71. $scope.counter = 0;
  72. $scope.someFunction = function (item, model){
  73. $scope.counter++;
  74. $scope.eventResult = {item: item, model: model};
  75. };
  76. $scope.removed = function (item, model) {
  77. $scope.lastRemoved = {
  78. item: item,
  79. model: model
  80. };
  81. };
  82. $scope.person = {};
  83. $scope.people = [
  84. { name: 'Adam', email: 'adam@email.com', age: 12, country: 'United States' },
  85. { name: 'Amalie', email: 'amalie@email.com', age: 12, country: 'Argentina' },
  86. { name: 'Estefanía', email: 'estefania@email.com', age: 21, country: 'Argentina' },
  87. { name: 'Adrian', email: 'adrian@email.com', age: 21, country: 'Ecuador' },
  88. { name: 'Wladimir', email: 'wladimir@email.com', age: 30, country: 'Ecuador' },
  89. { name: 'Samantha', email: 'samantha@email.com', age: 30, country: 'United States' },
  90. { name: 'Nicole', email: 'nicole@email.com', age: 43, country: 'Colombia' },
  91. { name: 'Natasha', email: 'natasha@email.com', age: 54, country: 'Ecuador' },
  92. { name: 'Michael', email: 'michael@email.com', age: 15, country: 'Colombia' },
  93. { name: 'Nicolás', email: 'nicolas@email.com', age: 43, country: 'Colombia' }
  94. ];
  95. $scope.availableColors = ['Red','Green','Blue','Yellow','Magenta','Maroon','Umbra','Turquoise'];
  96. $scope.multipleDemo = {};
  97. $scope.multipleDemo.colors = ['Blue','Red'];
  98. $scope.multipleDemo.selectedPeople = [$scope.people[5], $scope.people[4]];
  99. $scope.multipleDemo.selectedPeopleWithGroupBy = [$scope.people[8], $scope.people[6]];
  100. $scope.multipleDemo.selectedPeopleSimple = ['samantha@email.com','wladimir@email.com'];
  101. $scope.address = {};
  102. $scope.refreshAddresses = function(address) {
  103. var params = {address: address, sensor: false};
  104. return $http.get(
  105. 'http://maps.googleapis.com/maps/api/geocode/json',
  106. {params: params}
  107. ).then(function(response) {
  108. $scope.addresses = response.data.results;
  109. });
  110. };
  111. $scope.country = {};
  112. $scope.countries = [ // Taken from https://gist.github.com/unceus/6501985
  113. {name: 'Afghanistan', code: 'AF'},
  114. {name: 'Åland Islands', code: 'AX'},
  115. {name: 'Albania', code: 'AL'},
  116. {name: 'Algeria', code: 'DZ'},
  117. {name: 'American Samoa', code: 'AS'},
  118. {name: 'Andorra', code: 'AD'},
  119. {name: 'Angola', code: 'AO'},
  120. {name: 'Anguilla', code: 'AI'},
  121. {name: 'Antarctica', code: 'AQ'},
  122. {name: 'Antigua and Barbuda', code: 'AG'},
  123. {name: 'Argentina', code: 'AR'},
  124. {name: 'Armenia', code: 'AM'},
  125. {name: 'Aruba', code: 'AW'},
  126. {name: 'Australia', code: 'AU'},
  127. {name: 'Austria', code: 'AT'},
  128. {name: 'Azerbaijan', code: 'AZ'},
  129. {name: 'Bahamas', code: 'BS'},
  130. {name: 'Bahrain', code: 'BH'},
  131. {name: 'Bangladesh', code: 'BD'},
  132. {name: 'Barbados', code: 'BB'},
  133. {name: 'Belarus', code: 'BY'},
  134. {name: 'Belgium', code: 'BE'},
  135. {name: 'Belize', code: 'BZ'},
  136. {name: 'Benin', code: 'BJ'},
  137. {name: 'Bermuda', code: 'BM'},
  138. {name: 'Bhutan', code: 'BT'},
  139. {name: 'Bolivia', code: 'BO'},
  140. {name: 'Bosnia and Herzegovina', code: 'BA'},
  141. {name: 'Botswana', code: 'BW'},
  142. {name: 'Bouvet Island', code: 'BV'},
  143. {name: 'Brazil', code: 'BR'},
  144. {name: 'British Indian Ocean Territory', code: 'IO'},
  145. {name: 'Brunei Darussalam', code: 'BN'},
  146. {name: 'Bulgaria', code: 'BG'},
  147. {name: 'Burkina Faso', code: 'BF'},
  148. {name: 'Burundi', code: 'BI'},
  149. {name: 'Cambodia', code: 'KH'},
  150. {name: 'Cameroon', code: 'CM'},
  151. {name: 'Canada', code: 'CA'},
  152. {name: 'Cape Verde', code: 'CV'},
  153. {name: 'Cayman Islands', code: 'KY'},
  154. {name: 'Central African Republic', code: 'CF'},
  155. {name: 'Chad', code: 'TD'},
  156. {name: 'Chile', code: 'CL'},
  157. {name: 'China', code: 'CN'},
  158. {name: 'Christmas Island', code: 'CX'},
  159. {name: 'Cocos (Keeling) Islands', code: 'CC'},
  160. {name: 'Colombia', code: 'CO'},
  161. {name: 'Comoros', code: 'KM'},
  162. {name: 'Congo', code: 'CG'},
  163. {name: 'Congo, The Democratic Republic of the', code: 'CD'},
  164. {name: 'Cook Islands', code: 'CK'},
  165. {name: 'Costa Rica', code: 'CR'},
  166. {name: 'Cote D\'Ivoire', code: 'CI'},
  167. {name: 'Croatia', code: 'HR'},
  168. {name: 'Cuba', code: 'CU'},
  169. {name: 'Cyprus', code: 'CY'},
  170. {name: 'Czech Republic', code: 'CZ'},
  171. {name: 'Denmark', code: 'DK'},
  172. {name: 'Djibouti', code: 'DJ'},
  173. {name: 'Dominica', code: 'DM'},
  174. {name: 'Dominican Republic', code: 'DO'},
  175. {name: 'Ecuador', code: 'EC'},
  176. {name: 'Egypt', code: 'EG'},
  177. {name: 'El Salvador', code: 'SV'},
  178. {name: 'Equatorial Guinea', code: 'GQ'},
  179. {name: 'Eritrea', code: 'ER'},
  180. {name: 'Estonia', code: 'EE'},
  181. {name: 'Ethiopia', code: 'ET'},
  182. {name: 'Falkland Islands (Malvinas)', code: 'FK'},
  183. {name: 'Faroe Islands', code: 'FO'},
  184. {name: 'Fiji', code: 'FJ'},
  185. {name: 'Finland', code: 'FI'},
  186. {name: 'France', code: 'FR'},
  187. {name: 'French Guiana', code: 'GF'},
  188. {name: 'French Polynesia', code: 'PF'},
  189. {name: 'French Southern Territories', code: 'TF'},
  190. {name: 'Gabon', code: 'GA'},
  191. {name: 'Gambia', code: 'GM'},
  192. {name: 'Georgia', code: 'GE'},
  193. {name: 'Germany', code: 'DE'},
  194. {name: 'Ghana', code: 'GH'},
  195. {name: 'Gibraltar', code: 'GI'},
  196. {name: 'Greece', code: 'GR'},
  197. {name: 'Greenland', code: 'GL'},
  198. {name: 'Grenada', code: 'GD'},
  199. {name: 'Guadeloupe', code: 'GP'},
  200. {name: 'Guam', code: 'GU'},
  201. {name: 'Guatemala', code: 'GT'},
  202. {name: 'Guernsey', code: 'GG'},
  203. {name: 'Guinea', code: 'GN'},
  204. {name: 'Guinea-Bissau', code: 'GW'},
  205. {name: 'Guyana', code: 'GY'},
  206. {name: 'Haiti', code: 'HT'},
  207. {name: 'Heard Island and Mcdonald Islands', code: 'HM'},
  208. {name: 'Holy See (Vatican City State)', code: 'VA'},
  209. {name: 'Honduras', code: 'HN'},
  210. {name: 'Hong Kong', code: 'HK'},
  211. {name: 'Hungary', code: 'HU'},
  212. {name: 'Iceland', code: 'IS'},
  213. {name: 'India', code: 'IN'},
  214. {name: 'Indonesia', code: 'ID'},
  215. {name: 'Iran, Islamic Republic Of', code: 'IR'},
  216. {name: 'Iraq', code: 'IQ'},
  217. {name: 'Ireland', code: 'IE'},
  218. {name: 'Isle of Man', code: 'IM'},
  219. {name: 'Israel', code: 'IL'},
  220. {name: 'Italy', code: 'IT'},
  221. {name: 'Jamaica', code: 'JM'},
  222. {name: 'Japan', code: 'JP'},
  223. {name: 'Jersey', code: 'JE'},
  224. {name: 'Jordan', code: 'JO'},
  225. {name: 'Kazakhstan', code: 'KZ'},
  226. {name: 'Kenya', code: 'KE'},
  227. {name: 'Kiribati', code: 'KI'},
  228. {name: 'Korea, Democratic People\'s Republic of', code: 'KP'},
  229. {name: 'Korea, Republic of', code: 'KR'},
  230. {name: 'Kuwait', code: 'KW'},
  231. {name: 'Kyrgyzstan', code: 'KG'},
  232. {name: 'Lao People\'s Democratic Republic', code: 'LA'},
  233. {name: 'Latvia', code: 'LV'},
  234. {name: 'Lebanon', code: 'LB'},
  235. {name: 'Lesotho', code: 'LS'},
  236. {name: 'Liberia', code: 'LR'},
  237. {name: 'Libyan Arab Jamahiriya', code: 'LY'},
  238. {name: 'Liechtenstein', code: 'LI'},
  239. {name: 'Lithuania', code: 'LT'},
  240. {name: 'Luxembourg', code: 'LU'},
  241. {name: 'Macao', code: 'MO'},
  242. {name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK'},
  243. {name: 'Madagascar', code: 'MG'},
  244. {name: 'Malawi', code: 'MW'},
  245. {name: 'Malaysia', code: 'MY'},
  246. {name: 'Maldives', code: 'MV'},
  247. {name: 'Mali', code: 'ML'},
  248. {name: 'Malta', code: 'MT'},
  249. {name: 'Marshall Islands', code: 'MH'},
  250. {name: 'Martinique', code: 'MQ'},
  251. {name: 'Mauritania', code: 'MR'},
  252. {name: 'Mauritius', code: 'MU'},
  253. {name: 'Mayotte', code: 'YT'},
  254. {name: 'Mexico', code: 'MX'},
  255. {name: 'Micronesia, Federated States of', code: 'FM'},
  256. {name: 'Moldova, Republic of', code: 'MD'},
  257. {name: 'Monaco', code: 'MC'},
  258. {name: 'Mongolia', code: 'MN'},
  259. {name: 'Montserrat', code: 'MS'},
  260. {name: 'Morocco', code: 'MA'},
  261. {name: 'Mozambique', code: 'MZ'},
  262. {name: 'Myanmar', code: 'MM'},
  263. {name: 'Namibia', code: 'NA'},
  264. {name: 'Nauru', code: 'NR'},
  265. {name: 'Nepal', code: 'NP'},
  266. {name: 'Netherlands', code: 'NL'},
  267. {name: 'Netherlands Antilles', code: 'AN'},
  268. {name: 'New Caledonia', code: 'NC'},
  269. {name: 'New Zealand', code: 'NZ'},
  270. {name: 'Nicaragua', code: 'NI'},
  271. {name: 'Niger', code: 'NE'},
  272. {name: 'Nigeria', code: 'NG'},
  273. {name: 'Niue', code: 'NU'},
  274. {name: 'Norfolk Island', code: 'NF'},
  275. {name: 'Northern Mariana Islands', code: 'MP'},
  276. {name: 'Norway', code: 'NO'},
  277. {name: 'Oman', code: 'OM'},
  278. {name: 'Pakistan', code: 'PK'},
  279. {name: 'Palau', code: 'PW'},
  280. {name: 'Palestinian Territory, Occupied', code: 'PS'},
  281. {name: 'Panama', code: 'PA'},
  282. {name: 'Papua New Guinea', code: 'PG'},
  283. {name: 'Paraguay', code: 'PY'},
  284. {name: 'Peru', code: 'PE'},
  285. {name: 'Philippines', code: 'PH'},
  286. {name: 'Pitcairn', code: 'PN'},
  287. {name: 'Poland', code: 'PL'},
  288. {name: 'Portugal', code: 'PT'},
  289. {name: 'Puerto Rico', code: 'PR'},
  290. {name: 'Qatar', code: 'QA'},
  291. {name: 'Reunion', code: 'RE'},
  292. {name: 'Romania', code: 'RO'},
  293. {name: 'Russian Federation', code: 'RU'},
  294. {name: 'Rwanda', code: 'RW'},
  295. {name: 'Saint Helena', code: 'SH'},
  296. {name: 'Saint Kitts and Nevis', code: 'KN'},
  297. {name: 'Saint Lucia', code: 'LC'},
  298. {name: 'Saint Pierre and Miquelon', code: 'PM'},
  299. {name: 'Saint Vincent and the Grenadines', code: 'VC'},
  300. {name: 'Samoa', code: 'WS'},
  301. {name: 'San Marino', code: 'SM'},
  302. {name: 'Sao Tome and Principe', code: 'ST'},
  303. {name: 'Saudi Arabia', code: 'SA'},
  304. {name: 'Senegal', code: 'SN'},
  305. {name: 'Serbia and Montenegro', code: 'CS'},
  306. {name: 'Seychelles', code: 'SC'},
  307. {name: 'Sierra Leone', code: 'SL'},
  308. {name: 'Singapore', code: 'SG'},
  309. {name: 'Slovakia', code: 'SK'},
  310. {name: 'Slovenia', code: 'SI'},
  311. {name: 'Solomon Islands', code: 'SB'},
  312. {name: 'Somalia', code: 'SO'},
  313. {name: 'South Africa', code: 'ZA'},
  314. {name: 'South Georgia and the South Sandwich Islands', code: 'GS'},
  315. {name: 'Spain', code: 'ES'},
  316. {name: 'Sri Lanka', code: 'LK'},
  317. {name: 'Sudan', code: 'SD'},
  318. {name: 'Suriname', code: 'SR'},
  319. {name: 'Svalbard and Jan Mayen', code: 'SJ'},
  320. {name: 'Swaziland', code: 'SZ'},
  321. {name: 'Sweden', code: 'SE'},
  322. {name: 'Switzerland', code: 'CH'},
  323. {name: 'Syrian Arab Republic', code: 'SY'},
  324. {name: 'Taiwan, Province of China', code: 'TW'},
  325. {name: 'Tajikistan', code: 'TJ'},
  326. {name: 'Tanzania, United Republic of', code: 'TZ'},
  327. {name: 'Thailand', code: 'TH'},
  328. {name: 'Timor-Leste', code: 'TL'},
  329. {name: 'Togo', code: 'TG'},
  330. {name: 'Tokelau', code: 'TK'},
  331. {name: 'Tonga', code: 'TO'},
  332. {name: 'Trinidad and Tobago', code: 'TT'},
  333. {name: 'Tunisia', code: 'TN'},
  334. {name: 'Turkey', code: 'TR'},
  335. {name: 'Turkmenistan', code: 'TM'},
  336. {name: 'Turks and Caicos Islands', code: 'TC'},
  337. {name: 'Tuvalu', code: 'TV'},
  338. {name: 'Uganda', code: 'UG'},
  339. {name: 'Ukraine', code: 'UA'},
  340. {name: 'United Arab Emirates', code: 'AE'},
  341. {name: 'United Kingdom', code: 'GB'},
  342. {name: 'United States', code: 'US'},
  343. {name: 'United States Minor Outlying Islands', code: 'UM'},
  344. {name: 'Uruguay', code: 'UY'},
  345. {name: 'Uzbekistan', code: 'UZ'},
  346. {name: 'Vanuatu', code: 'VU'},
  347. {name: 'Venezuela', code: 'VE'},
  348. {name: 'Vietnam', code: 'VN'},
  349. {name: 'Virgin Islands, British', code: 'VG'},
  350. {name: 'Virgin Islands, U.S.', code: 'VI'},
  351. {name: 'Wallis and Futuna', code: 'WF'},
  352. {name: 'Western Sahara', code: 'EH'},
  353. {name: 'Yemen', code: 'YE'},
  354. {name: 'Zambia', code: 'ZM'},
  355. {name: 'Zimbabwe', code: 'ZW'}
  356. ];
  357. });