Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
toshirot opened this issue Sep 12, 2016 · 1 comment
Labels

Comments

@toshirot
Copy link
Owner

toshirot commented Sep 12, 2016

"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
Copy link
Owner Author

toshirot commented Sep 12, 2016

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

_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となってしまうのが耐えられないかもしれない、、、まぁ。今回はパスかなぁ。。。
個々のユーザーによってはこういう手もあるかもということで。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant