app.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. (function ($) {
  2. 'use strict';
  3. window.app = {
  4. name: 'Flatkit',
  5. version: '1.1.3',
  6. // for chart colors
  7. color: {
  8. 'primary': '#0cc2aa',
  9. 'accent': '#a88add',
  10. 'warn': '#fcc100',
  11. 'info': '#6887ff',
  12. 'success': '#6cc788',
  13. 'warning': '#f77a99',
  14. 'danger': '#f44455',
  15. 'white': '#ffffff',
  16. 'light': '#f1f2f3',
  17. 'dark': '#2e3e4e',
  18. 'black': '#2a2b3c'
  19. },
  20. setting: {
  21. theme: {
  22. primary: 'primary',
  23. accent: 'accent',
  24. warn: 'warn'
  25. },
  26. color: {
  27. primary: '#0cc2aa',
  28. accent: '#a88add',
  29. warn: '#fcc100'
  30. },
  31. folded: false,
  32. boxed: false,
  33. container: false,
  34. themeID: 1,
  35. bg: ''
  36. }
  37. };
  38. var setting = 'jqStorage-'+app.name+'-Setting',
  39. storage = $.localStorage;
  40. if( storage.isEmpty(setting) ){
  41. storage.set(setting, app.setting);
  42. }else{
  43. app.setting = storage.get(setting);
  44. }
  45. var v = window.location.search.substring(1).split('&');
  46. for (var i = 0; i < v.length; i++)
  47. {
  48. var n = v[i].split('=');
  49. app.setting[n[0]] = (n[1] == "true" || n[1]== "false") ? (n[1] == "true") : n[1];
  50. storage.set(setting, app.setting);
  51. }
  52. // init
  53. function setTheme(){
  54. $('body').removeClass($('body').attr('ui-class')).addClass(app.setting.bg).attr('ui-class', app.setting.bg);
  55. app.setting.folded ? $('#aside').addClass('folded') : $('#aside').removeClass('folded');
  56. app.setting.boxed ? $('body').addClass('container') : $('body').removeClass('container');
  57. $('.switcher input[value="'+app.setting.themeID+'"]').prop('checked', true);
  58. $('.switcher input[value="'+app.setting.bg+'"]').prop('checked', true);
  59. $('[data-target="folded"] input').prop('checked', app.setting.folded);
  60. $('[data-target="boxed"] input').prop('checked', app.setting.boxed);
  61. }
  62. // click to switch
  63. $(document).on('click.setting', '.switcher input', function(e){
  64. var $this = $(this), $target;
  65. $target = $this.parent().attr('data-target') ? $this.parent().attr('data-target') : $this.parent().parent().attr('data-target');
  66. app.setting[$target] = $this.is(':checkbox') ? $this.prop('checked') : $(this).val();
  67. ($(this).attr('name')=='color') && (app.setting.theme = eval('[' + $(this).parent().attr('data-value') +']')[0]) && setColor();
  68. storage.set(setting, app.setting);
  69. setTheme(app.setting);
  70. });
  71. function setColor(){
  72. app.setting.color = {
  73. primary: getColor( app.setting.theme.primary ),
  74. accent: getColor( app.setting.theme.accent ),
  75. warn: getColor( app.setting.theme.warn )
  76. };
  77. };
  78. function getColor(name){
  79. return app.color[ name ] ? app.color[ name ] : palette.find(name);
  80. };
  81. function init(){
  82. $('[ui-jp]').uiJp();
  83. $('body').uiInclude();
  84. }
  85. $(document).on('pjaxStart', function() {
  86. $('#aside').modal('hide');
  87. $('body').removeClass('modal-open').find('.modal-backdrop').remove();
  88. $('.navbar-toggleable-sm').collapse('hide');
  89. });
  90. init();
  91. setTheme();
  92. })(jQuery);