JSONデータに含まれるコメントPadding設定の読み込みに失敗する
対象製品
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"};
【再現手順】
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)でのみ有効です。修正版適用などを行う場合には、上記回避策の使用を中止してください。
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)でのみ有効です。修正版適用などを行う場合には、上記回避策の使用を中止してください。