jenkins-bot has submitted this change and it was merged.

Change subject: Add npm and composer-test tests
......................................................................


Add npm and composer-test tests

Also fix jslint tests.

Bug: T65668
Change-Id: I81c3be6973d660006b60f2ffadd85db5e7e919ff
---
A .gitignore
A .jshintignore
A .jshintrc
A Gruntfile.js
A composer.json
M js/spreadsheet.bootstrap.js
M js/spreadsheet.zip.adapter.js
A package.json
8 files changed, 179 insertions(+), 47 deletions(-)

Approvals:
  Hashar: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..53bbca6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,42 @@
+# git-deploy status file:
+/.deploy
+
+# Editors
+*.kate-swp
+*~
+\#*#
+.#*
+.*.swp
+.project
+cscope.files
+cscope.out
+## NetBeans
+nbproject*
+project.index
+## Sublime
+sublime-*
+sftp-config.json
+
+# Building & testing
+node_modules/
+
+# Composer
+/vendor
+/composer.lock
+
+# Operating systems
+## Mac OS X
+.DS_Store
+## Windows
+Thumbs.db
+
+# Misc
+.buildpath
+.classpath
+.idea
+.metadata*
+.settings
+/static*
+/tags
+/.htaccess
+/.htpasswd
diff --git a/.jshintignore b/.jshintignore
new file mode 100644
index 0000000..022b988
--- /dev/null
+++ b/.jshintignore
@@ -0,0 +1,2 @@
+node_modules
+vendor
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..e908333
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,26 @@
+{
+       // Enforcing
+       "bitwise": true,
+       "eqeqeq": true,
+       "freeze": true,
+       "latedef": true,
+       "noarg": true,
+       "nonew": false,
+       "undef": true,
+       "unused": false,
+       "strict": false,
+
+       // Relaxing
+       "es5": false,
+
+       // Environment
+       "browser": true,
+       "jquery": true,
+
+       "globals": {
+               "mediaWiki": false,
+               "Spreadsheet": true,
+               "Highcharts": true,
+               "SpreadsheetZipAdapter": false
+       }
+}
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000..36b6671
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,30 @@
+/*jshint node:true */
+module.exports = function ( grunt ) {
+       grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+       grunt.loadNpmTasks( 'grunt-jsonlint' );
+       grunt.loadNpmTasks( 'grunt-banana-checker' );
+
+       grunt.initConfig( {
+               jshint: {
+                       options: {
+                               jshintrc: true
+                       },
+                       all: [
+                               '**/*.js',
+                               '!node_modules/**'
+                       ]
+               },
+               banana: {
+                       all: 'i18n/'
+               },
+               jsonlint: {
+                       all: [
+                               '**/*.json',
+                               '!node_modules/**'
+                       ]
+               }
+       } );
+
+       grunt.registerTask( 'test', [ 'jshint', 'jsonlint', 'banana' ] );
+       grunt.registerTask( 'default', 'test' );
+};
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..1c63f9e
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,10 @@
+{
+       "require-dev": {
+               "jakub-onderka/php-parallel-lint": "0.9.2"
+       },
+       "scripts": {
+               "test": [
+                       "parallel-lint . --exclude vendor"
+               ]
+       }
+}
diff --git a/js/spreadsheet.bootstrap.js b/js/spreadsheet.bootstrap.js
index 2c3211b..4427ec8 100644
--- a/js/spreadsheet.bootstrap.js
+++ b/js/spreadsheet.bootstrap.js
@@ -1,10 +1,11 @@
-$(document).ready(function(){
+/*jshint -W083 */
+jQuery(document).ready(function(){
        function createSpreadsheet(container,cellData){
                return new Spreadsheet.Slick(container,cellData);
        }
 
        //TODO create conversion logic that supports all possible excel graphs?
-       function convertChartDataToHighCharts(c,cellData){
+       function convertChartDataToHighCharts(c){
                var hc = {
                        start: c.start.cell,
                        end: c.end.cell,
@@ -16,6 +17,7 @@
                        chart: {},
                        plotOptions: {}
                };
+               var x;
 
                var plotGroup = c.data.plotGroup[0];
                var data = plotGroup.data;
@@ -36,14 +38,14 @@
                        }
                        break;
                        case 'scatterChart':
-                       hc.chart = $.extend(hc.chart,{
+                       hc.chart = jQuery.extend(hc.chart,{
                                type: 'scatter',
                                zoomType: 'xy',
                                inverted: 'true'
                        });
                        hc.xAxis.labels.rotation = 0;
 
-                       for(var x = 0; x < data.length; x++){
+                       for(x = 0; x < data.length; x++){
                                if(!hc.series[x]){
                                        hc.series[x] = {};
                                }
@@ -79,7 +81,7 @@
                }
 
                if(hc.series.length === 0){
-                       for(var x = 0; x < data.length; x++){
+                       for(x = 0; x < data.length; x++){
                                if(!hc.series[x]){
                                        hc.series[x] = {};
                                }
@@ -126,7 +128,7 @@
                                        })(c),1000);
                                }
                        }catch(err){
-                               alert('Error occurred while updating point!');
+                               window.alert('Error occurred while updating 
point!');
                        }
                };
        }
@@ -134,8 +136,6 @@
        function renderChart(config,spreadsheetSlick){
                var grid = spreadsheetSlick.getGrid();
                var spreadsheet = spreadsheetSlick.getSpreadsheet();
-
-               var appendChartInterval = setInterval(appendChart,500);
 
                function appendChart(){
                        var startPos = Spreadsheet.parsePosition(config.start);
@@ -151,30 +151,30 @@
                        delete config.end;
 
                        var chartStartPos = {
-                               left: $(startCellNode).position().left,
-                               top: $(startCellNode).parent().position().top
+                               left: jQuery(startCellNode).position().left,
+                               top: 
jQuery(startCellNode).parent().position().top
                        };
 
                        var chartEndPos = {
-                               left: $(endCellNode).position().left,
-                               top: $(endCellNode).parent().position().top
+                               left: jQuery(endCellNode).position().left,
+                               top: jQuery(endCellNode).parent().position().top
                        };
 
-                       var chartX = chartStartPos.top;
-                       var chartY = chartStartPos.left;
+                       // var chartX = chartStartPos.top;
+                       // var chartY = chartStartPos.left;
                        var chartWidth = chartEndPos.left-chartStartPos.left;
                        var chartHeight = chartEndPos.top-chartStartPos.top;
 
                        var chartId = 'chart-'+Date.now();
-                       var chartNode = $('<div></div>').css({
+                       /*var chartNode = jQuery('<div></div>').css({
                                position: 'absolute',
                                top:chartX,
                                left:chartY,
                                zIndex:100
-                       }).attr('id',chartId).appendTo('.grid-canvas');
+                       }).attr('id',chartId).appendTo('.grid-canvas');*/
 
 
-                       config = $.extend(true,{
+                       config = jQuery.extend(true,{
                                chart: {
                                        renderTo: chartId,
                                        width: chartWidth,
@@ -230,26 +230,28 @@
                        //Chart is now appended, so lets clear the interval
                        clearInterval(appendChartInterval);
                }
+               var appendChartInterval = setInterval(appendChart,500);
        }
 
        for(var key in window.spreadsheet){
                if(window.spreadsheet[key]){
                        var spreadsheetData = window.spreadsheet[key];
                        var selector = '#'+key;
-                       if(spreadsheetData['adapter'] === 'phpexcel'){
+                       if(spreadsheetData.adapter === 'phpexcel'){
                                //PHPEXCEL ADAPTER (Server side prosessing of 
excel documents)
-                               $( selector).find('.progressbar').progressbar({
+                               
jQuery(selector).find('.progressbar').progressbar({
                                        value: false
                                });
                                var file = window.spreadsheet[key].file;
                                var sheet = window.spreadsheet[key].sheet;
-                               $.get(
-                                       mw.util.wikiScript(), {
+                               jQuery.get(
+                                       mediaWiki.util.wikiScript(), {
                                                action: 'ajax',
                                                rs: 'SpreadsheetAjax::getData',
                                                rsargs: [file,sheet]
                                        }
                                        ).done(function(resp){
+                                               var json;
                                                json = JSON.parse(resp);
                                                var cellData = json.data;
                                                var chartData = json.charts;
@@ -279,24 +281,24 @@
                                });
 
 
-                               }else if(spreadsheetData['adapter'] === 'zip'){
-                               //ZIP ADAPTER (client side prosessing of excel 
documents)
-                               spreadsheetZipAdapter = new 
SpreadsheetZipAdapter(
-                                       spreadsheetData.url,
-                                       spreadsheetData.sheetIndex,
-                                       function(data){
-                                               console.log(data);
-                                               
createSpreadsheet(selector,data);
-                                       },
-                                       function(c,max){
-                                               var progressbar = 
$(selector).children('.progressbar');
-                                               progressbar.progressbar( 
"option", {
-                                                       value:c/max*100
-                                               });
-                                       }
+                               }else if(spreadsheetData.adapter === 'zip'){
+                                       var spreadsheetZipAdapter;
+                                       //ZIP ADAPTER (client side prosessing 
of excel documents)
+                                       spreadsheetZipAdapter = new 
SpreadsheetZipAdapter(
+                                               spreadsheetData.url,
+                                               spreadsheetData.sheetIndex,
+                                               function(data){
+                                                       
window.console.log(data);
+                                                       
createSpreadsheet(selector,data);
+                                               },
+                                               function(c,max){
+                                                       var progressbar = 
jQuery(selector).children('.progressbar');
+                                                       
progressbar.progressbar( "option", {
+                                                               value:c/max*100
+                                                       });
+                                               }
                                        );
                        }
-
                }
        }
-});
+}());
diff --git a/js/spreadsheet.zip.adapter.js b/js/spreadsheet.zip.adapter.js
index 6eff7ce..ae72fec 100644
--- a/js/spreadsheet.zip.adapter.js
+++ b/js/spreadsheet.zip.adapter.js
@@ -1,7 +1,10 @@
-function SpreadsheetZipAdapter(URL,sheet,dataCb,progressCb){
+/*jshint -W083 */
+( function SpreadsheetZipAdapter(URL,sheet,dataCb,progressCb){
 
        function getParsedText(text){
+               var xmlDoc, ActiveXObject;
                if (window.DOMParser){
+                       var parser;
                        parser = new DOMParser();
                        xmlDoc = parser.parseFromString(text,"text/xml");
                }else{
@@ -32,8 +35,8 @@
                if (len >= 100){
                        mod = Math.floor(len/100);
                }
-               console.log(len);
-               console.log(mod);
+               window.console.log(len);
+               window.console.log(mod);
                for(var c = 0; c < len; c++){
                        (function(cell){
                                var type = cell.getAttribute('t');
@@ -118,18 +121,20 @@
                });
        }
 
+       var zip;
+
        if(!zip){
                throw "Requires zip library";
        }
        if( window.Worker ){
                //TODO this should probably not be hardcoded like this
-               zip.workerScriptsPath = 
"/mw/extensions/Spreadsheet/lib/zip/WebContent/";
+               zip.workerScriptsPath = 
"/extensions/Spreadsheet/lib/zip/WebContent/";
        }else{
                zip.useWebWorkers = false;
        }
 
        zip.createReader(new zip.HttpReader(URL), function(reader) {
-               console.log(reader);
+               window.console.log(reader);
                reader.getEntry = getEntry;
 
                reader.getEntry('xl/sharedStrings.xml',function(entry){
@@ -137,7 +142,7 @@
                                var sst = readSharedStrings(text);
 
                                var sheetFileName = 
'xl/worksheets/sheet'+(sheet+1)+'.xml';
-                               console.log(sheetFileName);
+                               window.console.log(sheetFileName);
                                var sheetEntry = 
reader.getEntry(sheetFileName,function(entry){
                                        entry.getData(new zip.TextWriter(), 
function(text){
                                                
dataCb(readData(sst,text,progressCb));
@@ -148,8 +153,11 @@
                });
                
                reader.close();
-       }, 
+       });/*,*/
+       /*
        function(error) {
        // onerror callback
-       });
-}
\ No newline at end of file
+       }
+       */
+       /*);*/
+}());
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ebf5796
--- /dev/null
+++ b/package.json
@@ -0,0 +1,12 @@
+{
+  "scripts": {
+    "test": "grunt test"
+  },
+  "devDependencies": {
+    "grunt": "0.4.5",
+    "grunt-cli": "0.1.13",
+    "grunt-contrib-jshint": "0.11.3",
+    "grunt-banana-checker": "0.4.0",
+    "grunt-jsonlint": "1.0.7"
+  }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/263069
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I81c3be6973d660006b60f2ffadd85db5e7e919ff
Gerrit-PatchSet: 15
Gerrit-Project: mediawiki/extensions/Spreadsheet
Gerrit-Branch: master
Gerrit-Owner: Paladox <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Paladox <[email protected]>
Gerrit-Reviewer: Reedy <[email protected]>
Gerrit-Reviewer: Umherirrender <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to