JSONデータに含まれるコメントPadding設定の読み込みに失敗する

文書番号 : 39622     文書種別 : 不具合     登録日 : 2016/10/03     最終更新日 : 2017/03/29
文書を印刷する
対象製品
SpreadJS 9J
発生環境
9.20161.0
状況
修正済み
詳細
JSONデータからのコメント設定(Padding)読み込みに失敗する現象が発生します。

【再現手順】
1.以下の再現コードを実行します。

【現象】
JSONデータに含まれているコメントのPadding情報が復元されない現象が発生します。

【再現コード JavaScript ファイル名Sample.js】
window.onload = function(){
  var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss1"));
  var sheet = spread.getActiveSheet();

  sheet.suspendPaint();  

  var comment = new GC.Spread.Sheets.Comments.Comment();
  comment.fromJSON(testJson);
  
  sheet.getCell(1,1).comment(comment);

  sheet.resumePaint();  
}

【再現コード HTML ファイル名Sample.html】
<!DOCTYPE html>
<html>
  <head>
    <title>SpreadJS Sample</title>
    <meta charset="utf-8" />
    
    <!-- SpreadJS CSS、Libraries -->
    <link type="text/css" href="http://cdn.grapecity.com/spreadjs/9201610/css/gc.spread.sheets.excel2013white.9.20161.0.css" rel="stylesheet"/>
    <script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/9201610/scripts/gc.spread.sheets.all.9.20161.0.min.js"></script>

    <!-- SpreadJS JP locale, resource -->
    <meta name="spreadjs culture" content="ja-jp" />
    <script src='http://cdn.grapecity.com/spreadjs/9201610/scripts/resources/ja/gc.spread.sheets.resources.ja.9.20161.0.min.js' type='text/javascript'></script>
    
    <!-- Logic codes -->
    <link href="./Sample.css" rel="stylesheet" type="text/css" />
    <script src="./data.js" type="text/javascript"></script>
    <script src="./Sample.js" type="text/javascript"></script>
  </head>
  
  <body>
    <h1>SpreadJS Sample</h1>
    
    <!-- SpreadJS Markup -->
    <div id="ss1" style="width: 800px; height: 300px; border: 1px solid gray;"></div>
  </body>
</html>

【再現コード CSS ファイル名Sample.css】
h1,h2,B { 
  font-family: "メイリオ",
            "Meiryo",
            "ヒラギノ角ゴ ProN W3",
            "Hiragino Kaku Gothic ProN",
            "MS Pゴシック", 
            "MS P Gothic",
            Verdana, Arial, Helvetica, sans-serif;
  font-weight: bold;
}

【再現コード JSON ファイル名data.js】
var testJson ={"dynamicMove":false,"dynamicSize":false,"padding":{"top":2,"left":2,"bottom":3,"right":3},"fontFamily":"Meiryo UI","displayMode":1,"location":{"x":56,"y":-46},"width":180,"height":110,"zIndex":896,"showShadow":true,"text":"TEST"};
回避方法
SpreadJS 9J SP2(Ver.9.20171.0)で修正済み
SpreadJS 9J SP2(Ver.9.20171.0)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

下記のようにJSON処理をオーバーライドし、回避処理をご実装することで現象の回避が可能です。

【回避コード】
--------------------------------------------------
//現在のJSON処理をオーバーライドし、回避処理を実装します
var oldFromJSON = GC.Spread.Sheets.Comments.Comment.prototype.fromJSON;
GC.Spread.Sheets.Comments.Comment.prototype.fromJSON = function (jsonData) {
   oldFromJSON.apply(this, arguments);
   var padding = jsonData["padding"];
   if (padding) {
     this.padding(new GC.Spread.Sheets.Comments.Padding(
     padding.top, padding.right, padding.bottom, padding.left));
   }
}
--------------------------------------------------


この回避策はSP1(9.20161.0)でのみ有効です。修正版適用などを行う場合には、上記回避策の使用を中止してください。