_zSpread.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /**
  2. * Created by Syusuke on 2017/3/17.
  3. *
  4. */
  5. (function($){
  6. var _spSetting = {
  7. spType:"",
  8. view:{
  9. comboBox:[],
  10. lockedCells:[]
  11. },
  12. private:{
  13. spType:"",
  14. colCount:0,
  15. cellPrimValue:null,
  16. celCurrValue:null
  17. }
  18. }
  19. _tools = {
  20. isArray:function(arr){
  21. return Object.prototype.toString.apply(arr) === "[object Array]"
  22. },
  23. clone:function(obj){ //���colon���� �������ֱ����ȸ��ƣ����󲻿���
  24. if(obj===null) return null;
  25. var o = _tools.isArray(obj)?[]:{};
  26. for(var i in obj){
  27. o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()): (typeof obj[i] === "object"? _tools.clone(obj[i]): obj[i]);
  28. }
  29. return o;
  30. }
  31. }
  32. var _initSpread = function(spID,spSetting,headerItems){
  33. spSetting.private.colCount = headerItems.length;
  34. var spread = new GC.Spread.Sheets.Workbook(spID[0],{sheetCount:1});
  35. var ActiveSheet = spread.getActiveSheet();
  36. ActiveSheet.setColumnCount(headerItems.length, GC.Spread.Sheets.SheetArea.viewport);
  37. ActiveSheet.options.isProtected = true;
  38. ActiveSheet.getRange(-1, 0, -1 ,100, GC.Spread.Sheets.SheetArea.viewport).locked(false);
  39. spread.options.tabStripVisible = false;
  40. spread.options.scrollbarMaxAlign = false;
  41. for(var i=0;i<headerItems.length;i++){
  42. ActiveSheet.setValue(0, i, headerItems[i].headerName, GC.Spread.Sheets.SheetArea.colHeader);
  43. ActiveSheet.setColumnWidth(i,headerItems[i].headerWidth, GC.Spread.Sheets.SheetArea.colHeader);
  44. }
  45. for(var i=0;i<spSetting.view.comboBox.length;i++){
  46. var c = spSetting.view.comboBox[i]
  47. var cellType = new GC.Spread.Sheets.CellTypes.ComboBox();
  48. cellType.items(c.items);
  49. ActiveSheet.getRange(c.row,c.col,c.rowCount,c.colCount, GC.Spread.Sheets.SheetArea.viewport).cellType(cellType);
  50. }
  51. ActiveSheet.getRange(-1, 1, -1 , 100, GC.Spread.Sheets.SheetArea.viewport).locked(true);
  52. ActiveSheet.bind(GC.Spread.Sheets.Events.EditStarting,function(sender,args){
  53. spSetting.private.cellCurrValue = null;
  54. spSetting.private.cellPriValue = ActiveSheet.getValue(args.row,args.col);
  55. })
  56. ActiveSheet.bind(GC.Spread.Sheets.Events.EditEnding,function(sender,args){
  57. spSetting.private.celCurrValue = ActiveSheet.getValue(args.row,args.col);
  58. if(args.col == 0){
  59. var a = spSetting.view.lockedCells;
  60. var b = [];
  61. ActiveSheet.getRange(args.row, 1, 1 , 100, GC.Spread.Sheets.SheetArea.viewport).locked(args.editingText == null);
  62. a.forEach(function(x){
  63. b.push(x.col);
  64. })
  65. b.forEach(function(x){
  66. ActiveSheet.getCell(args.row,x).locked(true);
  67. });
  68. if(args.editingText == null){
  69. removeAction(spSetting)
  70. for(var i=0;i<spSetting.private.colCount;i++){
  71. ActiveSheet.setValue(args.row,i,null);
  72. }
  73. }else{
  74. upsertAction(spSetting);
  75. }
  76. }else
  77. upsertAction(spSetting);
  78. })
  79. return spread;
  80. }
  81. function upsertAction(spSetting){
  82. var value =JSON.parse(spSetting.private);
  83. $.ajax({
  84. type:"POST",
  85. url:"http://localhost:6060/rationLibEditor/insert" + spSetting.view.spType,
  86. data:{"rationLibName":properties.realLibName,"value":value},
  87. dataType:"json",
  88. cache:false,
  89. timeout:1000,
  90. success:function(result){
  91. spSetting.private.celCurrValue = null;
  92. spSetting.private.cellPrimValue = null;
  93. },
  94. error:function(){
  95. }
  96. })
  97. }
  98. function removeAction(spSetting){
  99. var value =JSON.parse(spSetting.private);
  100. $.ajax({
  101. type:"POST",
  102. url:"http://localhost:6060/rationLibEditor/delete" + spSetting.view.spType,
  103. data:{"rationLibName":properties.realLibName,"value":value},
  104. dataType:"json",
  105. cache:false,
  106. timeout:1000,
  107. success:function(result){
  108. spSetting.private.celCurrValue = null;
  109. spSetting.private.cellPrimValue = null;
  110. },
  111. error:function(){
  112. }
  113. })
  114. }
  115. $.fn.Spread = {
  116. init:function(spID,zSetting,headerItems){
  117. var spSetting = _tools.clone(_spSetting);
  118. $.extend(true,spSetting,zSetting);
  119. return _initSpread(spID,spSetting,headerItems);
  120. }
  121. }
  122. }(jQuery))