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