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

Comments

Projects
None yet
1 participant
@toshirot
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

This comment has been minimized.

Show comment
Hide comment
@toshirot

toshirot Sep 12, 2016

Owner

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

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

Owner

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

@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