UNPKG

free-jqgrid

Version:

grid as jQuery plugin - fork of jqGrid before licensing change

398 lines (395 loc) 13.1 kB
/*global module,require*/ module.exports = function (grunt) { grunt.initConfig({ pkgFreejqGrid: grunt.file.readJSON("package.json"), clean: [ "css/*.min.css", "css/*.min.css.map", "js/jquery.jqgrid.min.js", "js/jquery.jqgrid.min.map", "js/jquery.jqgrid.min.js.map", "js/jquery.jqgrid.src.js", "js/i18n/min/", "js/min/", "plugins/min/", "dist/", "plugins/*.min.js", "plugins/css/*.min.css", "plugins/css/*.min.css.map", "plugins/*.min.map", "ts/tests/*.js", "ts/tests/*.map", "js/i18n/grid.locale-*.min.js", "js/i18n/grid.locale-*.min.map", "js/i18n/grid.locale-*.min.js", "js/i18n/grid.locale-*.min.map" ], copy: { main: { files: [ { src: ["js/i18n/*"], dest: "dist/i18n/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["js/i18n/min/*"], dest: "dist/i18n/min/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["plugins/*"], dest: "dist/plugins/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["plugins/min/*"], dest: "dist/plugins/min/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["plugins/css/*"], dest: "dist/plugins/css/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["css/*"], dest: "dist/css/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["ts/*.d.ts"], dest: "dist/ts/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: ["js/jquery.jqgrid.src.js", "js/jquery.jqgrid.min.js", "js/jquery.jqgrid.min*.map"], dest: "dist/", expand: true, flatten: true }, { src: [ "js/*.js", "!js/min/*", "!js/jquery.jqgrid.*.js", "!js/jquery.jqgrid.min*.map" ], dest: "dist/modules/", //timestamp: true, expand: true, filter: "isFile", flatten: true }, { src: [ "js/min/*" ], dest: "dist/modules/min/", //timestamp: true, expand: true, filter: "isFile", flatten: true } ] } }, concat: { all: { options: { process: function (src, filepath) { // see https://github.com/gruntjs/grunt-contrib-concat#custom-process-function grunt.verbose.writeln("concat begin process the file " + filepath); // the below code is tested with Windows encoding of the files CRLF (\r\n for new line), // but it work with UNIX encoding LF (\n for new line) too. // One should modify the code to support other end-line characters (Macintosh CR, // Unicode line separator LS and Unicode pharagraph separator PS). var iBeginModule = src.indexOf("// begin module "), iLicenseEnd = 0, iBeginModuleStartLine, iEndModule, licenseComment = "", moduleCode = "", iRowStart, iRowEnd, margin = ""; if (iBeginModule >= 0) { //grunt.log.writeln("first 3 characters are: '" + src.substring(0, 3) + "'"); if (src.substring(0, 3) === "/**") { iLicenseEnd = src.substring(0, iBeginModule).indexOf("*/"); } iBeginModuleStartLine = src.lastIndexOf("\n", iBeginModule); margin = src.substring(iBeginModuleStartLine + 1, iBeginModule); //grunt.log.writeln("margin: '" + margin + "'"); iBeginModule = iBeginModuleStartLine + 1; if (iLicenseEnd > 0) { iLicenseEnd = src.indexOf("\n", iLicenseEnd); for (iRowStart = 0; iRowStart < iLicenseEnd; iRowStart = iRowEnd + 1) { iRowEnd = src.indexOf("\n", iRowStart); licenseComment += (iRowStart + 1 !== iRowEnd ? margin : "") + src.substring(iRowStart, iRowEnd + 1); } //grunt.log.writeln("License:\n" + licenseComment); } iEndModule = src.lastIndexOf("// end module "); if (iEndModule >= 0) { iEndModule = src.indexOf("\n", iEndModule); moduleCode = licenseComment + src.substring(iBeginModule, iEndModule + 1); } } if (filepath.lastIndexOf("grid.base.js") >= 0) { return src.substring(0, src.indexOf("}));", iEndModule)); } return moduleCode; }, footer: "}));\n" }, src: [ "js/grid.base.js", "js/grid.celledit.js", "js/grid.common.js", "js/grid.custom.js", "js/grid.filter.js", "js/jsonxml.js", "js/grid.formedit.js", "js/grid.grouping.js", "js/grid.import.js", "js/grid.inlinedit.js", "js/grid.jqueryui.js", "js/grid.pivot.js", "js/grid.subgrid.js", "js/grid.tbltogrid.js", "js/grid.treegrid.js", "js/jqdnr.js", "js/jqmodal.js", "js/jquery.fmatter.js" ], dest: "js/jquery.jqgrid.src.js" } }, jshint: { all: { src: ["js/jquery.jqgrid.src.js"], options: { //'-W069': false //"-W041": false, "boss": true, "curly": true, "eqeqeq": true, "eqnull": true, "expr": true, "immed": true, "noarg": true, //"quotmark": "double", "undef": true, "unused": true, "node": true } } }, tslint: { options: { configuration: "tslint.json", force: false, fix: false }, files: { src: [ "ts/free-jqgrid.d.ts", "ts/tests/*.ts" ] } }, jscs: { all: { src: ["gruntfile.js", "js/*.js", "!js/*.min.js"], options: { config: ".jscsrc" } } }, ts: { all: { src: ["ts/**/*.ts"], options: { target: "es5", lib: ["es2015", "es2017", "dom"] } } }, cssmin: { options: { // compatibility: "ie8" sourceMap: true, report: "gzip" }, target: { files: [ { src: "css/ui.jqgrid.css", dest: "css/ui.jqgrid.min.css" // "sources":["css/ui.jqgrid.css"] in ui.jqgrid.min.css.map is wrong!!! // one have to fix it to "sources":["ui.jqgrid.css"] }, { src: "plugins/css/ui.multiselect.css", dest: "plugins/css/ui.multiselect.min.css" // "sources":["plugins/ui.multiselect.css"] in ui.multiselect.min.css.map is wrong!!! // one have to fix it to "sources":["ui.multiselect.css"] } ] } }, watch: { files: [ "js/*.js", "plugins/*.js", "css/*.css", "plugins/*.css", "ts/free-jqgrid.d.ts", "ts/tests/*.ts", "!css/*.min.css", "!js/*.min.js", "!js/min/*.js", "!ts/*.js", "!ts/tests/*.js", "!js/jquery.jqgrid.*.js", "!plugins/*.min.js", "!plugins/*.min.css", "!js/i18n/grid.locale-*.min.js", "!dist/**", '!node_modules/**' ], tasks: ["default"] }, replace: { cssmin_jqgrid: { src: "css/ui.jqgrid.min.css.map", dest: "./", options: { patterns: [{ // "sources":["css\\ui.jqgrid.css"] match: /\"sources\":\[\"css\\\\ui\.jqgrid\.css\"\],/, replacement: "\"sources\":[\"ui.jqgrid.css\"]," }] } }, cssmin_multiselect: { src: "plugins/css/ui.multiselect.min.css.map", dest: "./", options: { patterns: [{ // "sources":["plugins\\css\\ui.multiselect.css"] match: /\"sources\":\[\"plugins\\\\css\\\\ui\.multiselect\.css\"\],/, replacement: "\"sources\":[\"ui.multiselect.css\"]," }] } } }, uglify: { all: { files: { "js/min/grid.base.js": ["js/grid.base.js"], "js/min/grid.celledit.js": ["js/grid.celledit.js"], "js/min/grid.common.js": ["js/grid.common.js"], "js/min/grid.custom.js": ["js/grid.custom.js"], "js/min/grid.filter.js": ["js/grid.filter.js"], "js/min/jsonxml.js": ["js/jsonxml.js"], "js/min/grid.formedit.js": ["js/grid.formedit.js"], "js/min/grid.grouping.js": ["js/grid.grouping.js"], "js/min/grid.import.js": ["js/grid.import.js"], "js/min/grid.inlinedit.js": ["js/grid.inlinedit.js"], "js/min/grid.jqueryui.js": ["js/grid.jqueryui.js"], "js/min/grid.pivot.js": ["js/grid.pivot.js"], "js/min/grid.subgrid.js": ["js/grid.subgrid.js"], "js/min/grid.tbltogrid.js": ["js/grid.tbltogrid.js"], "js/min/grid.treegrid.js": ["js/grid.treegrid.js"], "js/min/jqdnr.js": ["js/jqdnr.js"], "js/min/jqmodal.js": ["js/jqmodal.js"], "js/min/jquery.fmatter.js": ["js/jquery.fmatter.js"], "plugins/min/grid.odata.js": ["plugins/grid.odata.js"], "plugins/min/jquery.contextmenu-ui.js": ["plugins/jquery.contextmenu-ui.js"], "plugins/min/jquery.contextmenu.js": ["plugins/jquery.contextmenu.js"], "plugins/min/jquery.createcontexmenufromnavigatorbuttons.js": ["plugins/jquery.createcontexmenufromnavigatorbuttons.js"], "plugins/min/jquery.jqgrid.showhidecolumnmenu.js": ["plugins/jquery.jqgrid.showhidecolumnmenu.js"], "plugins/min/ui.multiselect.js": ["plugins/ui.multiselect.js"], "js/i18n/min/grid.locale-ar.js": ["js/i18n/grid.locale-ar.js"], "js/i18n/min/grid.locale-bg.js": ["js/i18n/grid.locale-bg.js"], "js/i18n/min/grid.locale-ca.js": ["js/i18n/grid.locale-ca.js"], "js/i18n/min/grid.locale-cn.js": ["js/i18n/grid.locale-cn.js"], "js/i18n/min/grid.locale-cs.js": ["js/i18n/grid.locale-cs.js"], "js/i18n/min/grid.locale-da.js": ["js/i18n/grid.locale-da.js"], "js/i18n/min/grid.locale-de.js": ["js/i18n/grid.locale-de.js"], "js/i18n/min/grid.locale-el.js": ["js/i18n/grid.locale-el.js"], "js/i18n/min/grid.locale-en.js": ["js/i18n/grid.locale-en.js"], "js/i18n/min/grid.locale-es.js": ["js/i18n/grid.locale-es.js"], "js/i18n/min/grid.locale-fa.js": ["js/i18n/grid.locale-fa.js"], "js/i18n/min/grid.locale-fi.js": ["js/i18n/grid.locale-fi.js"], "js/i18n/min/grid.locale-fr.js": ["js/i18n/grid.locale-fr.js"], "js/i18n/min/grid.locale-gl.js": ["js/i18n/grid.locale-gl.js"], "js/i18n/min/grid.locale-he.js": ["js/i18n/grid.locale-he.js"], "js/i18n/min/grid.locale-hr.js": ["js/i18n/grid.locale-hr.js"], "js/i18n/min/grid.locale-hu.js": ["js/i18n/grid.locale-hu.js"], "js/i18n/min/grid.locale-id.js": ["js/i18n/grid.locale-id.js"], "js/i18n/min/grid.locale-is.js": ["js/i18n/grid.locale-is.js"], "js/i18n/min/grid.locale-it.js": ["js/i18n/grid.locale-it.js"], "js/i18n/min/grid.locale-ja.js": ["js/i18n/grid.locale-ja.js"], "js/i18n/min/grid.locale-kr.js": ["js/i18n/grid.locale-kr.js"], "js/i18n/min/grid.locale-lt.js": ["js/i18n/grid.locale-lt.js"], "js/i18n/min/grid.locale-me.js": ["js/i18n/grid.locale-me.js"], "js/i18n/min/grid.locale-nl.js": ["js/i18n/grid.locale-nl.js"], "js/i18n/min/grid.locale-no.js": ["js/i18n/grid.locale-no.js"], "js/i18n/min/grid.locale-pl.js": ["js/i18n/grid.locale-pl.js"], "js/i18n/min/grid.locale-pt-br.js": ["js/i18n/grid.locale-pt-br.js"], "js/i18n/min/grid.locale-pt.js": ["js/i18n/grid.locale-pt.js"], "js/i18n/min/grid.locale-ro.js": ["js/i18n/grid.locale-ro.js"], "js/i18n/min/grid.locale-ru.js": ["js/i18n/grid.locale-ru.js"], "js/i18n/min/grid.locale-sk.js": ["js/i18n/grid.locale-sk.js"], "js/i18n/min/grid.locale-sr.js": ["js/i18n/grid.locale-sr.js"], "js/i18n/min/grid.locale-sv.js": ["js/i18n/grid.locale-sv.js"], "js/i18n/min/grid.locale-th.js": ["js/i18n/grid.locale-th.js"], "js/i18n/min/grid.locale-tr.js": ["js/i18n/grid.locale-tr.js"], "js/i18n/min/grid.locale-tw.js": ["js/i18n/grid.locale-tw.js"], "js/i18n/min/grid.locale-ua.js": ["js/i18n/grid.locale-ua.js"], "js/i18n/min/grid.locale-vi.js": ["js/i18n/grid.locale-vi.js"], "js/jquery.jqgrid.min.js": ["js/jquery.jqgrid.src.js"] }, options: { output: { comments: "some" }, sourceMap: true } } } }); grunt.loadNpmTasks("grunt-contrib-clean"); grunt.loadNpmTasks("grunt-contrib-copy"); grunt.loadNpmTasks("grunt-contrib-jshint"); grunt.loadNpmTasks("grunt-tslint"); grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-cssmin"); grunt.loadNpmTasks("grunt-replace"); grunt.loadNpmTasks("grunt-jscs"); grunt.loadNpmTasks("grunt-ts"); grunt.loadNpmTasks("grunt-contrib-watch"); grunt.loadNpmTasks("grunt-contrib-uglify"); grunt.loadNpmTasks("grunt-newer"); grunt.registerTask("default", ["newer:concat:all", "newer:jshint:all", "newer:tslint", "ts:all", "newer:jscs:all", "newer:cssmin:target", "newer:replace:cssmin_jqgrid", "newer:replace:cssmin_multiselect", "uglify:all", "copy"]); grunt.registerTask("all", ["clean", "default"]); };