Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/js/Field.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,14 @@
this.showingDefaultData = true;
}

if(!Alpaca.isValEmpty(this.data) &&
!Alpaca.isEmpty(this.options["prefix"]) &&
!Alpaca.startsWith(this.data, this.options["prefix"])){
this.data = `${this.options["prefix"]}${this.data}`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have an .eslintrc at the root of the DocSpring repo, and this should run some linting rules on any JavaScript code in the app or vendor directory. It's configured with "plugins": ["es5"], which excludes any new ES6 syntax. Unfortunately this is needed because we are still using Sprockets with the Rails asset pipeline, and Sprockets doesn't support any newer JavaScript syntax, such as the backticks for interpolation `...`. This is normally not an issue in modern browsers, but it can cause issues in browsers that don't support newer features, since we don't have any BabelJS processor setup for browser compatibility.

So we just have to be careful about only using the old ES5 JavaScript for any JS in our Rails app assets. That means that this line should be changed to standard ES5 JavaScript:

this.data = this.options["prefix"] + this.data

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But also I'm not too sure if this is right place for this code. I think prefix is only used in the CurrencyField, and is not used by Field or any other descendants. So I would probably put this in the constructor of CurrencyField, underneath the call to this.base(...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another thing to note is that prefix is an option that is passed to the jQuery Price Format plugin, during $(field).priceFormat(self.options);. I'm still not sure what's going wrong with this library, but I would like to investigate further and perhaps find a cleaner solution

}



Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are too many blank newlines here, I would just like to have one blank line at the top and bottom:

...

            if(!Alpaca.isValEmpty(this.data) &&
                !Alpaca.isEmpty(this.options["prefix"]) &&
                !Alpaca.startsWith(this.data, this.options["prefix"])){
                this.data = `${this.options["prefix"]}${this.data}`
            }

...

// default path
this.path = "/";

Expand Down
5 changes: 1 addition & 4 deletions src/js/fields/advanced/CurrencyField.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
*/
constructor: function(container, data, options, schema, view, connector, errorCallback) {
options = options || {};

var pfOptionsSchema = this.getSchemaOfPriceFormatOptions().properties;
for (var i in pfOptionsSchema) {
var option = pfOptionsSchema[i];
Expand All @@ -46,8 +45,7 @@
// Default should be true.
options.allowOptionalEmpty = true;
options.clearOnEmpty = true;

if (typeof(data) !== "undefined")
if (data!=null && typeof(data) !== "undefined")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add some spaces: data != null

{
data = "" + parseFloat(data).toFixed(options.centsLimit);
}
Expand Down Expand Up @@ -86,7 +84,6 @@
getControlValue: function() {

var field = this.getControlEl();

var val = $(field).is('input') ? field.val() : field.html();
if (this.options.unmask || this.options.round !== "none") {
var unmasked = function() {
Expand Down