diff --git a/.gitignore b/.gitignore index f67beaab..37d00333 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,7 @@ node_modules/ *_i.c *_p.c *.ilk +*.log *.meta *.obj *.pch diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 00000000..32423c57 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,325 @@ +/*global module:false*/ +module.exports = function( grunt ) { + 'use strict'; + + var pkg = grunt.file.readJSON( 'package.json' ), + tasks, + widgetFilePrefix, + widgetFileSuffix, + + defaults = { + dependencies : { + widgets: { + 'saveSort resizable pager filter columnSelector' : 'storage', + 'filter-formatter-html5 filter-formatter-jui filter-formatter-select2' : 'filter' + // 'stickyHeaders' : 'addResizeEvent' // included with stickyHeaders widget (for now) + } + }, + standardWidgets: [ + 'storage', // req by saveSort; optional in others + 'uitheme', + 'columns', + 'filter', + 'stickyHeaders', + 'resizable', + 'saveSort' + // 'addResizeEvent', // included with stickyHeaders widget + // 'zeba' // included in core + ] + }, + + // example widgets = [ 'pager','column', 'filter', 'stickyHeaders' ]; + addWidgetDependencies = function(widgets) { + var indx, dep, + maxDeps = 40, // just in case (there are currently 27 widgets) + len = widgets.length, + deps = defaults.dependencies.widgets; + for ( dep in deps ) { + if ( typeof dep === 'string' ) { + for ( indx = 0; indx < len; indx++ ) { + // make sure indexOf is not matching "column" instead of "columnSelector" with surrounding spaces + if ( (' ' + dep + ' ').indexOf(' ' + widgets[indx] + ' ') >= 0 && widgets.indexOf( deps[dep] ) < 0 ) { + widgets.push( deps[dep] ); + // keep checking newly added widgets, in case "filter" is added and "storage" hasn't been + if (len < maxDeps) { len++; } + continue; + } + } + } + } + return widgets; + }, + formFileNames = function(){ + // add widget path & file extension + pkg.processedWidgets = ( widgetFilePrefix + + pkg.selectedWidgets.join( widgetFileSuffix + ',' + widgetFilePrefix ) + + widgetFileSuffix ).split( ',' ); + console.info( 'Creating a widgets file with: ' + pkg.selectedWidgets.join(', ') ); + }; + + // minified banner template - updated 2/9/2015 (v2.19.1) + pkg.banner = '/*! <%= pkg.name %> (FORK) widgets - updated ' + + '<%= grunt.template.today("mm-dd-yyyy") %> (v<%= pkg.version %>)*/\n'; + + widgetFilePrefix = 'js/widgets/widget-'; + widgetFileSuffix = '.js'; + + pkg.buildWidget = 'dist/js/jquery.tablesorter.widgets.js'; + + // Project configuration. + grunt.initConfig({ + pkg: pkg, + + clean: { + build: { + src: [ 'dist/**/**/**/*', 'dist/**/**/*', 'dist/**/*', 'dist' ] + }, + cleancss: { + src: [ 'dist/temp/*', 'dist/temp', 'dist/css/*.css', '!dist/css/*.min.css' ] + } + }, + + copy: { + main: { + expand: true, + src: [ + 'js/jquery.*.js', + '!js/_test-*.js', + '!js/*.min.js', + ], + dest: 'dist/', + filter: 'isFile' + }, + css: { + files : [{ + expand: true, + dot: true, + flatten: true, + src: ['css/*.css', 'addons/pager/*.css'], + dest: 'dist/temp/', + rename: function(dest, src) { + return dest + src.replace( /\./g, '+' ).replace( /\+css/g, '.css' ); + } + }] + }, + less: { + expand: true, + flatten: true, + src: 'css/*.less', + dest: 'dist/css/less/' + }, + images: { + expand: true, + flatten: true, + src: [ 'addons/pager/icons/*', 'css/images/*' ], + dest: 'dist/css/images/' + }, + fixnames: { + files : [{ + expand: true, + dot: true, + flatten: true, + src: ['dist/temp/*.css'], + dest: 'dist/css/', + rename: function(dest, src) { + return dest + src.replace( /\+/g, '.' ); + } + }] + } + }, + + concat: { + widgets: { + options: { + banner: '<%= pkg.banner %>/* Includes: <%= pkg.selectedWidgets %> */\n' + }, + src: [ + '<%= pkg.processedWidgets %>', + '!js/widgets/_test-*.js', + '!js/widgets/*.min.js' + ], + dest: '<%= pkg.buildWidget %>' + }, + // keep all the existing jsFiddle demos from breaking + copyback: { + options: { + banner: '/*** This file is dynamically generated ***\n' + + '█████▄ ▄████▄ █████▄ ▄████▄ ██████ ███████▄ ▄████▄ █████▄ ██ ██████ ██ ██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀▀██\n' + + '█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀\n*/\n' + }, + src : ['<%= pkg.buildWidget %>'], + dest: 'js/jquery.tablesorter.widgets.js' + } + }, + + jshint: { + files: { + src: [ + 'addons/pager/*.js', + '!addons/pager/*.min.js', + 'js/jquery.*.js', + 'js/**/*.js', + '!js/_test-*.js', + '!js/**/_test-*.js', + '!js/*.min.js', + '!js/**/semver*.js' + ] + }, + options: { + globals: { + "localStorage": false, + "navigator": false, + "console": false, + "alert": false + }, + "loopfunc": true, + "jquery": true, + "browser": true + } + }, + + uglify: { + options: { + preserveComments: 'some', + report: 'gzip' + }, + allFiles: { + files: [ + { + expand: true, + cwd: './js/', // Src matches are relative to this path. + src: [ + '*.js', + '**/*.js', + '!_test-*.js', + '!**/_test-*.js', + '!*.min.js', + '!**/semver.js' + ], + dest: 'dist/js/', + ext: '.min.js', // Dist files will have this extension. + extDot: 'last' // Extensions in filenames begin after the first dot + } + ] + }, + pageraddon: { + files: { + 'dist/js/extras/jquery.tablesorter.pager.min.js': [ 'addons/pager/*.js' ] + } + } + }, + + cssmin: { + target: { + files: [{ + expand: true, + flatten: true, + cwd: 'dist/temp', + src: ['*.css'], + dest: 'dist/temp', + ext: '.min.css' + }] + } + }, + + qunit: { + files: [ 'test.html' ] + }, + + watch: { + scripts: { + files: [ + 'js/*.js', + 'js/**/*.js', + '!js/_test-*.js', + '!js/*.min.js' + ], + tasks: [ 'build' ] + } + } + + }); + + grunt.loadNpmTasks( 'grunt-contrib-clean' ); + grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + grunt.loadNpmTasks( 'grunt-contrib-qunit' ); + grunt.loadNpmTasks( 'grunt-contrib-concat' ); + grunt.loadNpmTasks( 'grunt-contrib-uglify' ); + grunt.loadNpmTasks( 'grunt-contrib-copy' ); + grunt.loadNpmTasks( 'grunt-contrib-watch' ); + grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); + + grunt.registerTask( 'test', [ 'jshint', 'qunit' ] ); + + /* grunt-contrib-cssmin does not work with multiple periods in the file name. + * see https://github.com/gruntjs/grunt-contrib-cssmin/issues/175 + * Css files are copied to 'dist/temp' folder & '.' are replaced with '+'. + * Css files are minified & copied to 'dist/css'. + * 'dist/temp' is deleted. + */ + tasks = [ + 'clean:build', + 'copy:main', + 'copy:css', + 'copy:less', + 'copy:images', + 'concat', + 'jshint', + 'uglify', + 'cssmin', + 'copy:fixnames', + 'clean:cleancss', + 'updateManifest' + ]; + + // basic = same as before: core, widgets, filterformatter all separate + grunt.registerTask( 'default', 'Default build', function(){ + pkg.selectedWidgets = addWidgetDependencies( defaults.standardWidgets ); + formFileNames(); + grunt.task.run(tasks); + }); + + // enter "grunt custom:{filename}" (not including the ".json") + // to load in a custom json file + // the expected JSON format is (with custom widgets in a string): + // { "widgets" : "columnHighlight filter resizable saveSort stickyHeaders uitheme" } + grunt.registerTask( 'custom', 'Custom build', function(file){ + var temp, deps = true; + + /* Allow developer to set up a custom widget build (json file will have settings)*/ + try { + temp = grunt.file.readJSON( file ); + if (temp) { + deps = ('includeDependencies' in temp) ? temp.includeDependencies : true; + temp = temp.widgets.split(/\s+/); + } + } catch (err) { + grunt.log.error('Custom build json not found - Use "grunt custom:{filename}" (no .json ending)'); + temp = defaults.standardWidgets; + } + + // add dependencies + pkg.selectedWidgets = deps ? addWidgetDependencies( temp ) : temp; + formFileNames(); + grunt.task.run(tasks); + }); + + // update bower.json & tablesorter.jquery.json file version numbers to match the package.json version + grunt.registerTask( 'updateManifest', function() { + var i, project, + projectFile = [ 'tablesorter.jquery.json', 'bower.json' ], + len = projectFile.length; + for ( i = 0; i < len; i++ ) { + if ( !grunt.file.exists( projectFile[ i ] ) ) { + grunt.log.error( "file " + projectFile[ i ] + " not found" ); + return true; // return false to abort the execution + } + project = grunt.file.readJSON( projectFile[ i ] ); // get file as json object + project.version = pkg.version; + grunt.file.write( projectFile[i], JSON.stringify( project, null, 2 ) ); // serialize it back to file + } + }); + +}; diff --git a/bower.json b/bower.json index 675aab07..64360d07 100644 --- a/bower.json +++ b/bower.json @@ -4,5 +4,8 @@ "dependencies": { "jquery": ">=1.2.6" }, - "main": "js/jquery.tablesorter.js" -} + "main": [ + "js/jquery.tablesorter.js", + "js/jquery.tablesorter.widgets.js" + ] +} \ No newline at end of file diff --git a/css/theme.black-ice.css b/css/theme.black-ice.css index 1b38c528..00ee11d6 100644 --- a/css/theme.black-ice.css +++ b/css/theme.black-ice.css @@ -79,7 +79,7 @@ .tablesorter-blackice .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.blue.css b/css/theme.blue.css index 662b185f..440fa499 100644 --- a/css/theme.blue.css +++ b/css/theme.blue.css @@ -114,7 +114,7 @@ .tablesorter-blue .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.dark.css b/css/theme.dark.css index adca809b..b7e7c7f6 100644 --- a/css/theme.dark.css +++ b/css/theme.dark.css @@ -78,7 +78,7 @@ .tablesorter-dark .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.default.css b/css/theme.default.css index 20fc153b..2fea9067 100644 --- a/css/theme.default.css +++ b/css/theme.default.css @@ -81,7 +81,7 @@ Default Theme .tablesorter-default .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.dropbox.css b/css/theme.dropbox.css index e48b1696..11e65a21 100644 --- a/css/theme.dropbox.css +++ b/css/theme.dropbox.css @@ -111,7 +111,7 @@ .tablesorter-dropbox .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.green.css b/css/theme.green.css index f839af36..1e54a7a1 100644 --- a/css/theme.green.css +++ b/css/theme.green.css @@ -96,7 +96,7 @@ .tablesorter-green .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.grey.css b/css/theme.grey.css index 540c35da..9fe9b678 100644 --- a/css/theme.grey.css +++ b/css/theme.grey.css @@ -132,7 +132,7 @@ .tablesorter-grey .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.ice.css b/css/theme.ice.css index 25192eb0..2bd7afb3 100644 --- a/css/theme.ice.css +++ b/css/theme.ice.css @@ -88,7 +88,7 @@ .tablesorter-ice .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.jui.css b/css/theme.jui.css index 17e53c34..aaeea2c8 100644 --- a/css/theme.jui.css +++ b/css/theme.jui.css @@ -71,7 +71,7 @@ .tablesorter-jui .tablesorter-processing .tablesorter-header-inner { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; } diff --git a/css/theme.metro-dark.css b/css/theme.metro-dark.css index 7649bb87..6a1edb54 100644 --- a/css/theme.metro-dark.css +++ b/css/theme.metro-dark.css @@ -79,7 +79,7 @@ Metro Dark Theme .tablesorter-metro-dark .tablesorter-processing { background-position: center center !important; background-repeat: no-repeat !important; - /* background-image: url(../addons/pager/icons/loading.gif) !important; */ + /* background-image: url(images/loading.gif) !important; */ background-image: url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=) !important; } diff --git a/docs/example-meta-headers.html b/docs/example-meta-headers.html index fdf3b37f..d839eed3 100644 --- a/docs/example-meta-headers.html +++ b/docs/example-meta-headers.html @@ -19,7 +19,7 @@ - + - + - + - + - + @@ -140,7 +140,7 @@