Ver.1.12.07以降 "height" : "800","width" : "1260" で400px/600pxになってしまう。 #30

Closed
toshirot opened this Issue Sep 12, 2016 · 1 comment

Projects

None yet

1 participant

@toshirot
Owner
toshirot commented Sep 12, 2016 edited

"height" : "800","width" : "1260" で指定すると400px/600pxになってしまう。
thanx Petbottleさん。

ver.1.12.07 #26 で追加したsetConfigNumメソッド内でNumber以外が与えられたケースを判定していないせいですね。
したがって、
"height" : "800","width" : "1260" ではなく
"height" : 800,"width" : 1260 と書くと動作します。
しかしこれでは今までと異なり使いにくいので、

ccchart.util.setConfigNum() を下記のように修正しました。

  setConfigNum: function(it, propName, configVal, gfcVal, defaultVal){
    //暫定
    //数値タイプのコンフィグ値をセットする configVal||gfcVal では0の時にうまく動作しないので
    //defaultValが無ければundefinedを返す
    //e.g. setConfigNum(this, 'minY', this.op.config.minY, this.gcf.minY, 0)
    it[propName+'Default'] = defaultVal;
    if(typeof configVal === 'number') return it[propName] = configVal;
    if(typeof gfcVal === 'number') return it[propName] = gfcVal;
    if(typeof defaultVal === 'number')return it[propName] = defaultVal;
    return undefined;
  }
         ↓ 
         ↓ change

  setConfigNum: function(it, propName, configVal, gfcVal, defaultVal){
    //暫定
    //数値タイプのコンフィグ値をセットする configVal||gfcVal では0の時にうまく動作しないので
    //defaultValが無ければundefinedを返す
    //e.g. setConfigNum(this, 'minY', this.op.config.minY, this.gcf.minY, 0)
    configVal=_regex(configVal);
    gfcVal=_regex(gfcVal);
    defaultVal=_regex(defaultVal);
    it[propName+'Default'] = defaultVal;
    if(typeof configVal === 'number') return it[propName] = configVal;
    if(typeof gfcVal === 'number') return it[propName] = gfcVal;
    if(typeof defaultVal === 'number')return it[propName] = defaultVal;
    return undefined;

    function _regex(val){
      //一旦文字列化して数値以外の文字列除去後Number化して返す
      var _val=parseFloat((''+val).replace(/[^-{0,1}[0-9]\.]/g,''));
      if(isNaN(_val))_val='';//NaNは""{string}にする 
      return _val
    }
  }

TEST===================
_regex("80.6px")
80.6
_regex(80)
80
_regex(-80)
-80
_regex(+80)
80
_regex(80.12345)
80.12345
_regex(undefined)
""
_regex("")
""
_regex(".0")
0
_regex(".123")
0.123
_regex("-123")
-123

暫定
http://ccchart.org/js/ccchart-v1.12.082b1.js

ミスしてたので再修正しました。
「//defaultValが無ければundefinedを返す」なので、、、

     ↓ change
  setConfigNum: function(it, propName, configVal, gfcVal, defaultVal){
    //暫定
    //数値タイプのコンフィグ値をセットする configVal||gfcVal では0の時にうまく動作しないので
    //defaultValが無ければundefinedを返す
    //e.g. setConfigNum(this, 'minY', this.op.config.minY, this.gcf.minY, 0)
    configVal=_regex(configVal);
    gfcVal=_regex(gfcVal);
    defaultVal=_regex(defaultVal);
    it[propName+'Default'] = defaultVal;
    if(typeof configVal === 'number') return it[propName] = configVal;
    if(typeof gfcVal === 'number') return it[propName] = gfcVal;
    if(typeof defaultVal === 'number')return it[propName] = defaultVal;
    return undefined;

    function _regex(val){
      //一旦文字列化して数値以外の文字列除去後Number化して返す
      var _val=parseFloat((''+val).replace(/[^-{0,1}[0-9]\.]/g,''));
      if(isNaN(_val))_val=undefined;//NaNはundefinedにする 
      return _val
    }
  }

TEST===================
_regex("80.6px")
80.6
_regex(80)
80
_regex(-80)
-80
_regex(+80)
80
_regex(80.12345)
80.12345
_regex(undefined)
undefined //undefined
_regex("")
undefined //undefined
_regex(".0")
0
_regex("0")
0
_regex(".123")
0.123
_regex("-123")
-123

暫定2 http://ccchart.org/js/ccchart-v1.12.082b2.js

リリース
2016/09/15 v1.12.082
bug fixed. at ver.1.12.07 setConfigNum #30. thanx Petbottle

@toshirot toshirot added the bug label Sep 12, 2016
@toshirot
Owner
toshirot commented Sep 12, 2016 edited

ちなみに、全角数字の修正はないのでこうなる

_regex("123")
undefined
_regex("123")
1
_regex("123")
1

まぁ、置き換えればできるけど、
どうしよう。ここまでサービスするべきだろうか?

もしやるなら例えばこんな感じ。

 ↓ change
  setConfigNum: function(it, propName, configVal, gfcVal, defaultVal){
      //暫定
      //数値タイプのコンフィグ値をセットする configVal||gfcVal では0の時にうまく動作しないので
      //defaultValが無ければundefinedを返す
      //e.g. setConfigNum(this, 'minY', this.op.config.minY, this.gcf.minY, 0)
      configVal=_regex(_zenNum2hanNum(configVal));
      gfcVal=_regex(_zenNum2hanNum(gfcVal));
      defaultVal=_regex(_zenNum2hanNum(defaultVal));
      it[propName+'Default'] = defaultVal;
      if(typeof configVal === 'number') return it[propName] = configVal;
      if(typeof gfcVal === 'number') return it[propName] = gfcVal;
      if(typeof defaultVal === 'number')return it[propName] = defaultVal;
      return undefined;

    function _regex(val){
      //一旦文字列化して数値以外の文字列除去後Number化して返す
      var _val=parseFloat((''+val).replace(/[^-{0,1}[0-9]\.]/g,''));
      if(isNaN(_val))_val=undefined;//NaNはundefinedにする 
      return _val
    }
    function _zenNum2hanNum(keywords){
      //全角数字を半角に変えて返す
      keywords=keywords.replace(/./g, ".");//小数点も
      return keywords.replace(/[0-9]/g, function(s) {
            return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);//String
      });
    }
  }

TEST===================
_zenNum2hanNum("123")
"123"
_zenNum2hanNum("123")
"123"
_zenNum2hanNum("123")
"123"
_zenNum2hanNum("123PX")
"123PX"
_regex(_zenNum2hanNum("123PX"))
123
_regex(_zenNum2hanNum("123px"))
123
_regex(_zenNum2hanNum("123"))
123
_regex(_zenNum2hanNum("123.33"))
123.33
regex(_zenNum2hanNum("123.33"))//小数点も全角の場合
123.33

でもここまでやると、全角のままでOKとなってしまうのが耐えられないかもしれない、、、まぁ。今回はパスかなぁ。。。
個々のユーザーによってはこういう手もあるかもということで。

@toshirot toshirot closed this Sep 15, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment