core.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. import defaultSetting from './config.js';
  2. import { common_extend } from './utils/util';
  3. import Store from './store';
  4. import { locales } from './locale/locale';
  5. import server from './controllers/server';
  6. import luckysheetConfigsetting from './controllers/luckysheetConfigsetting';
  7. import sheetmanage from './controllers/sheetmanage';
  8. import luckysheetsizeauto from './controllers/resize';
  9. import luckysheetHandler from './controllers/handler';
  10. import {initialFilterHandler} from './controllers/filter';
  11. import {initialMatrixOperation} from './controllers/matrixOperation';
  12. import {initialSheetBar} from './controllers/sheetBar';
  13. import {formulaBarInitial} from './controllers/formulaBar';
  14. import {rowColumnOperationInitial} from './controllers/rowColumnOperation';
  15. import {keyboardInitial} from './controllers/keyboard';
  16. import {orderByInitial} from './controllers/orderBy';
  17. import {initPlugins} from './controllers/expendPlugins';
  18. import {
  19. getluckysheetfile,
  20. getluckysheet_select_save,
  21. getconfig,
  22. } from './methods/get';
  23. import {
  24. setluckysheet_select_save
  25. } from './methods/set';
  26. import { luckysheetrefreshgrid, jfrefreshgrid } from './global/refresh';
  27. import functionlist from './function/functionlist';
  28. import { luckysheetlodingHTML } from './controllers/constant';
  29. import { getcellvalue, getdatabyselection } from './global/getdata';
  30. import { setcellvalue } from './global/setdata';
  31. import { selectHightlightShow } from './controllers/select';
  32. import {zoomInitial} from './controllers/zoom';
  33. import {printInitial} from './controllers/print';
  34. import method from './global/method';
  35. import * as api from './global/api';
  36. import flatpickr from 'flatpickr'
  37. import Mandarin from 'flatpickr/dist/l10n/zh.js'
  38. import { initListener } from './controllers/listener';
  39. import { hideloading, showloading } from './global/loading.js';
  40. import { luckysheetextendData } from './global/extend.js';
  41. let luckysheet = {};
  42. // mount api
  43. // luckysheet.api = api;
  44. // Object.assign(luckysheet, api);
  45. luckysheet = common_extend(api,luckysheet);
  46. //创建luckysheet表格
  47. luckysheet.create = function (setting) {
  48. method.destroy()
  49. // Store original parameters for api: toJson
  50. Store.toJsonOptions = {}
  51. for(let c in setting){
  52. if(c !== 'data'){
  53. Store.toJsonOptions[c] = setting[c];
  54. }
  55. }
  56. let extendsetting = common_extend(defaultSetting, setting);
  57. let loadurl = extendsetting.loadUrl,
  58. menu = extendsetting.menu,
  59. title = extendsetting.title;
  60. let container = extendsetting.container;
  61. Store.container = container;
  62. Store.luckysheetfile = extendsetting.data;
  63. Store.defaultcolumnNum = extendsetting.column;
  64. Store.defaultrowNum = extendsetting.row;
  65. Store.defaultFontSize = extendsetting.defaultFontSize;
  66. Store.fullscreenmode = extendsetting.fullscreenmode;
  67. Store.lang = extendsetting.lang; //language
  68. Store.allowEdit = extendsetting.allowEdit;
  69. Store.limitSheetNameLength = extendsetting.limitSheetNameLength;
  70. Store.defaultSheetNameMaxLength = extendsetting.defaultSheetNameMaxLength;
  71. Store.fontList = extendsetting.fontList;
  72. server.gridKey = extendsetting.gridKey;
  73. server.loadUrl = extendsetting.loadUrl;
  74. server.updateUrl = extendsetting.updateUrl;
  75. server.updateImageUrl = extendsetting.updateImageUrl;
  76. server.title = extendsetting.title;
  77. server.loadSheetUrl = extendsetting.loadSheetUrl;
  78. server.allowUpdate = extendsetting.allowUpdate;
  79. luckysheetConfigsetting.autoFormatw = extendsetting.autoFormatw;
  80. luckysheetConfigsetting.accuracy = extendsetting.accuracy;
  81. luckysheetConfigsetting.total = extendsetting.data[0].total;
  82. luckysheetConfigsetting.loading = extendsetting.loading;
  83. luckysheetConfigsetting.allowCopy = extendsetting.allowCopy;
  84. luckysheetConfigsetting.showtoolbar = extendsetting.showtoolbar;
  85. luckysheetConfigsetting.showtoolbarConfig = extendsetting.showtoolbarConfig;
  86. luckysheetConfigsetting.showinfobar = extendsetting.showinfobar;
  87. luckysheetConfigsetting.showsheetbar = extendsetting.showsheetbar;
  88. luckysheetConfigsetting.showsheetbarConfig = extendsetting.showsheetbarConfig;
  89. luckysheetConfigsetting.showstatisticBar = extendsetting.showstatisticBar;
  90. luckysheetConfigsetting.showstatisticBarConfig = extendsetting.showstatisticBarConfig;
  91. luckysheetConfigsetting.sheetFormulaBar = extendsetting.sheetFormulaBar;
  92. luckysheetConfigsetting.cellRightClickConfig = extendsetting.cellRightClickConfig;
  93. luckysheetConfigsetting.sheetRightClickConfig = extendsetting.sheetRightClickConfig;
  94. luckysheetConfigsetting.pointEdit = extendsetting.pointEdit;
  95. luckysheetConfigsetting.pointEditUpdate = extendsetting.pointEditUpdate;
  96. luckysheetConfigsetting.pointEditZoom = extendsetting.pointEditZoom;
  97. luckysheetConfigsetting.userInfo = extendsetting.userInfo;
  98. luckysheetConfigsetting.userMenuItem = extendsetting.userMenuItem;
  99. luckysheetConfigsetting.myFolderUrl = extendsetting.myFolderUrl;
  100. luckysheetConfigsetting.functionButton = extendsetting.functionButton;
  101. luckysheetConfigsetting.showConfigWindowResize = extendsetting.showConfigWindowResize;
  102. luckysheetConfigsetting.enableAddRow = extendsetting.enableAddRow;
  103. luckysheetConfigsetting.enableAddBackTop = extendsetting.enableAddBackTop;
  104. luckysheetConfigsetting.addRowCount = extendsetting.addRowCount;
  105. luckysheetConfigsetting.enablePage = extendsetting.enablePage;
  106. luckysheetConfigsetting.pageInfo = extendsetting.pageInfo;
  107. luckysheetConfigsetting.editMode = extendsetting.editMode;
  108. luckysheetConfigsetting.beforeCreateDom = extendsetting.beforeCreateDom;
  109. luckysheetConfigsetting.workbookCreateBefore = extendsetting.workbookCreateBefore;
  110. luckysheetConfigsetting.workbookCreateAfter = extendsetting.workbookCreateAfter;
  111. luckysheetConfigsetting.remoteFunction = extendsetting.remoteFunction;
  112. luckysheetConfigsetting.customFunctions = extendsetting.customFunctions;
  113. luckysheetConfigsetting.fireMousedown = extendsetting.fireMousedown;
  114. luckysheetConfigsetting.forceCalculation = extendsetting.forceCalculation;
  115. luckysheetConfigsetting.plugins = extendsetting.plugins;
  116. luckysheetConfigsetting.rowHeaderWidth = extendsetting.rowHeaderWidth;
  117. luckysheetConfigsetting.columnHeaderHeight = extendsetting.columnHeaderHeight;
  118. luckysheetConfigsetting.defaultColWidth = extendsetting.defaultColWidth;
  119. luckysheetConfigsetting.defaultRowHeight = extendsetting.defaultRowHeight;
  120. luckysheetConfigsetting.title = extendsetting.title;
  121. luckysheetConfigsetting.container = extendsetting.container;
  122. luckysheetConfigsetting.hook = extendsetting.hook;
  123. luckysheetConfigsetting.pager = extendsetting.pager;
  124. luckysheetConfigsetting.initShowsheetbarConfig = false;
  125. luckysheetConfigsetting.imageUpdateMethodConfig = extendsetting.imageUpdateMethodConfig;
  126. if (Store.lang === 'zh') flatpickr.localize(Mandarin.zh);
  127. // Store the currently used plugins for monitoring asynchronous loading
  128. Store.asyncLoad.push(...luckysheetConfigsetting.plugins);
  129. // Register plugins
  130. initPlugins(extendsetting.plugins , extendsetting.data);
  131. // Store formula information, including internationalization
  132. functionlist(extendsetting.customFunctions);
  133. let devicePixelRatio = extendsetting.devicePixelRatio;
  134. if(devicePixelRatio == null){
  135. devicePixelRatio = 1;
  136. }
  137. Store.devicePixelRatio = Math.ceil(devicePixelRatio);
  138. //loading
  139. const loadingObj=luckysheetlodingHTML("#" + container)
  140. Store.loadingObj=loadingObj
  141. if (loadurl == "") {
  142. sheetmanage.initialjfFile(menu, title);
  143. // luckysheetsizeauto();
  144. initialWorkBook();
  145. }
  146. else {
  147. $.post(loadurl, {"gridKey" : server.gridKey}, function (d) {
  148. let data = new Function("return " + d)();
  149. Store.luckysheetfile = data;
  150. sheetmanage.initialjfFile(menu, title);
  151. // luckysheetsizeauto();
  152. initialWorkBook();
  153. //需要更新数据给后台时,建立WebSocket连接
  154. if(server.allowUpdate){
  155. server.openWebSocket();
  156. }
  157. });
  158. }
  159. }
  160. function initialWorkBook(){
  161. luckysheetHandler();//Overall dom initialization
  162. initialFilterHandler();//Filter initialization
  163. initialMatrixOperation();//Right click matrix initialization
  164. initialSheetBar();//bottom sheet bar initialization
  165. formulaBarInitial();//top formula bar initialization
  166. rowColumnOperationInitial();//row and coloumn operate initialization
  167. keyboardInitial();//Keyboard operate initialization
  168. orderByInitial();//menu bar orderby function initialization
  169. zoomInitial();//zoom method initialization
  170. printInitial();//print initialization
  171. initListener();
  172. }
  173. //获取所有表格数据
  174. luckysheet.getluckysheetfile = getluckysheetfile;
  175. //获取当前表格 选区
  176. luckysheet.getluckysheet_select_save = getluckysheet_select_save;
  177. //设置当前表格 选区
  178. luckysheet.setluckysheet_select_save = setluckysheet_select_save;
  179. //获取当前表格 config配置
  180. luckysheet.getconfig = getconfig;
  181. //二维数组数据 转化成 {r, c, v}格式 一维数组 (传入参数为二维数据data)
  182. luckysheet.getGridData = sheetmanage.getGridData;
  183. //生成表格所需二维数组 (传入参数为表格数据对象file)
  184. luckysheet.buildGridData = sheetmanage.buildGridData;
  185. // Refresh the canvas display data according to scrollHeight and scrollWidth
  186. luckysheet.luckysheetrefreshgrid = luckysheetrefreshgrid;
  187. // Refresh canvas
  188. luckysheet.jfrefreshgrid = jfrefreshgrid;
  189. // Get the value of the cell
  190. luckysheet.getcellvalue = getcellvalue;
  191. // Set cell value
  192. luckysheet.setcellvalue = setcellvalue;
  193. // Get selection range value
  194. luckysheet.getdatabyselection = getdatabyselection;
  195. luckysheet.sheetmanage = sheetmanage;
  196. // Data of the current table
  197. luckysheet.flowdata = function () {
  198. return Store.flowdata;
  199. }
  200. // Set selection highlight
  201. luckysheet.selectHightlightShow = selectHightlightShow;
  202. // Reset parameters after destroying the table
  203. luckysheet.destroy = method.destroy;
  204. luckysheet.showLoadingProgress = showloading;
  205. luckysheet.hideLoadingProgress = hideloading;
  206. luckysheet.luckysheetextendData = luckysheetextendData;
  207. luckysheet.locales = locales;
  208. export {
  209. luckysheet
  210. }