Sophivorus has submitted this change and it was merged.

Change subject: Sort parameters by paramOrder
......................................................................


Sort parameters by paramOrder

Also code simplifications and improvements

Bug: T149025
Change-Id: I833f388801e0b24399653c4ad8ee16f402dc1b27
---
M proveit.js
1 file changed, 50 insertions(+), 112 deletions(-)

Approvals:
  Sophivorus: Verified; Looks good to me, approved



diff --git a/proveit.js b/proveit.js
index 85f83ab..28ff6de 100755
--- a/proveit.js
+++ b/proveit.js
@@ -677,7 +677,7 @@
                };
 
                /**
-                * Get the full template name, like "Template:Cite book"
+                * Get the template title, like "Template:Cite book"
                 *
                 * @return {string} full template name
                 */
@@ -694,15 +694,31 @@
                /**
                 * Get the template data for this reference
                 *
-                * @return {object}
+                * @return {object} Template data
                 */
                this.getTemplateData = function () {
-                       var templateData = {},
-                               templateTitle = this.getTemplateTitle();
-                       if ( templateTitle in proveit.templateData ) {
+                       var templateData = {};
+                       if ( this.template ) {
+                               var templateTitle = this.getTemplateTitle();
                                templateData = proveit.templateData[ 
templateTitle ];
                        }
                        return templateData;
+               };
+
+               /**
+                * Get the Map object for ProveIt from the template data
+                *
+                * @return {object} Map object
+                */
+               this.getTemplateMap = function () {
+                       var templateMap = {};
+                       if ( this.template ) {
+                               var templateData = this.getTemplateData();
+                               if ( 'maps' in templateData && 'proveit' in 
templateData.maps ) {
+                                       templateMap = templateData.maps.proveit;
+                               }
+                       }
+                       return templateMap;
                };
 
                /**
@@ -711,10 +727,12 @@
                 * @return {object} TemplateData of the registered parameters
                 */
                this.getRegisteredParams = function () {
-                       var registeredParams = {},
-                               templateData = this.getTemplateData();
-                       if ( 'params' in templateData ) {
-                               registeredParams = templateData.params;
+                       var registeredParams = {};
+                       if ( this.template ) {
+                               var templateData = this.getTemplateData();
+                               templateData.paramOrder.forEach( function ( 
paramName ) {
+                                       registeredParams[ paramName ] = 
templateData.params[ paramName ];
+                               });
                        }
                        return registeredParams;
                };
@@ -725,96 +743,21 @@
                 * @return {string} value of the main parameter for this 
reference
                 */
                this.getMainValue = function () {
-                       // Return the value of the parameter marked as "main", 
if any
-                       var templateMap = this.getTemplateMap();
-                       if ( 'main' in templateMap ) {
-                               var mainParam = templateMap.main;
-                               if ( mainParam in this.params ) {
-                                       return this.params[ mainParam ];
+                       var mainValue = this.content;
+                       if ( this.template ) {
+                               var templateMap = this.getTemplateMap();
+                               if ( 'main' in templateMap && templateMap.main 
in this.params ) {
+                                       mainValue = this.params[ 
templateMap.main ];
+                               } else {
+                                       var registeredParams = 
this.getRegisteredParams();
+                                       for ( var param in registeredParams ) {
+                                               if ( param in this.params ) {
+                                                       mainValue = 
this.params[ param ];
+                                               }
+                                       }
                                }
                        }
-                       // Else return the first param that has a value,
-                       // starting with the required, then suggested, last 
optional
-                       var sortedParams = this.getSortedParams()
-                       for ( var param in sortedParams ) {
-                               if ( param in this.params ) {
-                                       return this.params[ param ];
-                               }
-                       }
-               };
-
-               /**
-                * Get the required parameters for this reference
-                *
-                * @return {object} TemplateData of the required parameters
-                */
-               this.getRequiredParams = function () {
-                       var requiredParams = {},
-                               registeredParams = this.getRegisteredParams();
-                       for ( var registeredParam in registeredParams ) {
-                               if ( registeredParams[ registeredParam 
].required ) {
-                                       requiredParams[ registeredParam ] = 
registeredParams[ registeredParam ];
-                               }
-                       }
-                       return requiredParams;
-               };
-
-               /**
-                * Get the suggested parameters for this reference
-                *
-                * @return {object} TemplateData of the suggested parameters
-                */
-               this.getSuggestedParams = function () {
-                       var suggestedParams = {},
-                               registeredParams = this.getRegisteredParams();
-                       for ( var registeredParam in registeredParams ) {
-                               if ( registeredParams[ registeredParam 
].suggested ) {
-                                       suggestedParams[ registeredParam ] = 
registeredParams[ registeredParam ];
-                               }
-                       }
-                       return suggestedParams;
-               };
-
-               /**
-                * Get the optional parameters for this reference
-                *
-                * @return {object} TemplateData of the optional parameters
-                */
-               this.getOptionalParams = function () {
-                       var optionalParams = {},
-                               registeredParams = this.getRegisteredParams();
-                       for ( var registeredParam in registeredParams ) {
-                               if ( !registeredParams[ registeredParam 
].required && !registeredParams[ registeredParam ].suggested ) {
-                                       optionalParams[ registeredParam ] = 
registeredParams[ registeredParam ];
-                               }
-                       }
-                       return optionalParams;
-               };
-
-               /**
-                * Get the registered params but sorted by required first, 
suggested later, optional last
-                *
-                * @return {object} TemplateData of the sorted parameters
-                */
-               this.getSortedParams = function () {
-                       var requiredParams = this.getRequiredParams(),
-                               suggestedParams = this.getSuggestedParams(),
-                               optionalParams = this.getOptionalParams();
-                       return $.extend( requiredParams, suggestedParams, 
optionalParams );
-               };
-
-               /**
-                * Get the Map object for ProveIt from the template data
-                *
-                * @return {object} TemplateData of the sorted parameters
-                */
-               this.getTemplateMap = function () {
-                       var templateMap = {},
-                               templateData = this.getTemplateData();
-                       if ( templateData && 'maps' in templateData && 
'proveit' in templateData.maps ) {
-                               templateMap = templateData.maps.proveit;
-                       }
-                       return templateMap;
+                       return mainValue;
                };
 
                /**
@@ -858,20 +801,15 @@
                this.toListItem = function () {
                        var item = $( '<li>' ).addClass( 
'proveit-reference-item' );
 
-                       // Add the main content
+                       // Add the main template, if any
                        if ( this.template ) {
-
-                               // First add the template name
                                var templateSpan = $( '<span>' ).addClass( 
'proveit-reference-template' ).text( this.template );
                                item.html( templateSpan );
-
-                               // Then add the main value of the reference 
(usually the title)
-                               var mainValue = this.getMainValue();
-                               item.append( mainValue );
-
-                       } else {
-                               item.text( this.content );
                        }
+
+                       // Add the main value of the reference
+                       var mainValue = this.getMainValue();
+                       item.append( mainValue );
 
                        // Add the citations
                        var citations = $( '<span>' ).addClass( 
'proveit-citations' );
@@ -944,12 +882,12 @@
                        // Add the parameter fields
                        var templateData = this.getTemplateData(),
                                templateMap = this.getTemplateMap(),
-                               sortedParams = this.getSortedParams(),
+                               registeredParams = this.getRegisteredParams(),
                                paramData, paramLabel, paramPlaceholder, 
paramDescription, paramAlias, paramValue, row, label, paramNameInput, 
paramValueInput;
 
-                       for ( var paramName in sortedParams ) {
+                       for ( var paramName in registeredParams ) {
 
-                               paramData = sortedParams[ paramName ];
+                               paramData = registeredParams[ paramName ];
 
                                // Defaults
                                paramLabel = paramName;
@@ -1001,7 +939,7 @@
                                }
 
                                // Mark the required parameters
-                               if ( 'required' in paramData && 
paramData.required ) {
+                               if ( paramData.required ) {
                                        row.addClass( 'proveit-required' );
                                }
 
@@ -1081,4 +1019,4 @@
 
 $( proveit.init );
 
-}( mw, jQuery ) );
+}( mw, jQuery ) );
\ No newline at end of file

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I833f388801e0b24399653c4ad8ee16f402dc1b27
Gerrit-PatchSet: 2
Gerrit-Project: wikipedia/gadgets/ProveIt
Gerrit-Branch: master
Gerrit-Owner: Sophivorus <scheno...@gmail.com>
Gerrit-Reviewer: Sophivorus <scheno...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to