Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ribbon.js 161KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073
  1. var Unibase;
  2. (function (Unibase) {
  3. let Apps;
  4. (function (Apps) {
  5. let Collaboration;
  6. (function (Collaboration) {
  7. let Components;
  8. (function (Components) {
  9. let Sheets;
  10. (function (Sheets) {
  11. class Ribbon {
  12. constructor() {
  13. this.hederText = {};
  14. this.imageInCell = false;
  15. }
  16. init(result) {
  17. this.result = result;
  18. this.FileName = this.result.FileTitle;
  19. this.FileId = this.result.FileId;
  20. this.documentGroup = this.result.DocumentGroup;
  21. this.documentId = this.result.DocumentId;
  22. this.filepath = this.result.TempFilePath;
  23. this.fileDownload = Unibase.Apps.Collaboration.Components.Common.Download.Instance();
  24. this.base = Unibase.Apps.Collaboration.Components.Sheets.Base.Instance();
  25. this.dialogue = Unibase.Apps.Collaboration.Components.Sheets.Dialogue.Instance();
  26. this.spreadsheetMenuBar(this.FileId, this.documentGroup, this.FileName);
  27. this.dialogue.init(this.base);
  28. }
  29. addListeners() {
  30. }
  31. destroy() {
  32. }
  33. removeListeners() {
  34. }
  35. renderOpenNewDialogue() {
  36. this.importOpenSelectButton = new ej.buttons.Button({ cssClass: `e-flat` });
  37. this.importOpenCancelButton = new ej.buttons.Button({ cssClass: `e-flat` });
  38. var elem = document.getElementById("importopenfile");
  39. if (elem == null) {
  40. this.ssImportOpenDialougObj = new ej.popups.Dialog({
  41. isModal: true,
  42. header: 'Open File',
  43. content: `<div id='tabobjforopen'></div>`,
  44. target: document.getElementById("container"),
  45. width: '470px',
  46. height: '330px',
  47. animationSettings: { effect: 'Zoom' },
  48. cssClass: "biz-ss-importopen-dialog"
  49. });
  50. this.ssImportOpenDialougObj.appendTo('#dialog');
  51. var tabObjForOpen = new ej.navigations.Tab({
  52. items: [{
  53. header: { 'text': 'Upload' },
  54. content: `<div id="importopenfile-wrapper">
  55. <h2 style="color: #ccc">Drag a file...</h2>
  56. <label id='importopenfilelable'>
  57. select file from device
  58. <br>
  59. <input type="file" name="" id="importopenfile" accept=".xlsx, .xls, .csv" placeholder="select a file from your device" >
  60. </label>
  61. <div id="filename"></div>
  62. </div>
  63. </div>
  64. <button id='importopenfile-select-btn' class='e-disabled'>select</button>
  65. <button id='importopenfile-cancel-btn'>cancel</button>`
  66. }, {
  67. header: { 'text': 'Drive' },
  68. content: ''
  69. }, {
  70. header: { 'text': 'Recent' },
  71. content: ''
  72. }]
  73. });
  74. tabObjForOpen.appendTo('#tabobjforopen');
  75. }
  76. else {
  77. this.ssImportOpenDialougObj.show();
  78. }
  79. this.importOpenDialogcreated();
  80. }
  81. renderImportDialogue(driveList) {
  82. this.importSelectButton = new ej.buttons.Button({ cssClass: `e-flat` });
  83. this.importCancelButton = new ej.buttons.Button({ cssClass: `e-flat` });
  84. var elem = document.getElementById("tabobj");
  85. let height = window.innerHeight - 200;
  86. let width = window.innerWidth - 600;
  87. if (elem == null) {
  88. this.ssImportDialougObj = new ej.popups.Dialog({
  89. isModal: true,
  90. header: 'Import File',
  91. content: `<div id='tabobj'></div>`,
  92. target: document.getElementById("container"),
  93. width: width + 'px',
  94. height: height + 'px',
  95. animationSettings: { effect: 'Zoom' },
  96. cssClass: "biz-ss-import-dialog"
  97. });
  98. this.ssImportDialougObj.appendTo('#dialog');
  99. var tabObj = new ej.navigations.Tab({
  100. selected: this.tabSelected.bind(this),
  101. items: [{
  102. header: { 'text': 'Upload' },
  103. content: `<div id="importfile-wrapper">
  104. <h2 style="color: #ccc">Drag a file...</h2>
  105. <label id='importfilelable'>
  106. select file from device
  107. <br>
  108. <input type="file" name="" id="importfile" accept=".xlsx, .xls, .csv" placeholder="select a file from your device" >
  109. </label>
  110. <div id="filename"></div>
  111. </div>
  112. </div>
  113. <button id='importfile-upload-select-btn' class='e-disabled'>select</button>
  114. <button id='importfile-upload-cancel-btn'>cancel</button>`
  115. }, {
  116. header: { 'text': 'Drive' },
  117. content: driveList,
  118. }, {
  119. header: { 'text': 'Recent' },
  120. content: ''
  121. }]
  122. });
  123. tabObj.appendTo('#tabobj');
  124. }
  125. else {
  126. this.ssImportDialougObj.show();
  127. }
  128. this.importDialogcreated();
  129. }
  130. renderCloudSavedDialogue() {
  131. var elem = document.getElementById("biz-ss-cloudsave-container");
  132. if (elem == null) {
  133. this.ssCloudSavedDialougObj = new ej.popups.Dialog({
  134. isModal: false,
  135. content: `<div id="biz-ss-cloudsave-container" style="max-width: 420px;min-width: 320px;padding: 10px;border-radius: 10px;display: block;border: 1px solid;" >
  136. <div id="biz-ss-cloudsave-container-title" style = "font-size: 15px;border-color: green;color: green;background-color: #e6f4ea;min-height: 40px;padding: 10px;" >
  137. <img class="biz-ss-cloudsave-container-img" src="imgs/cloud-computing.svg" >
  138. All changes saved to Drive
  139. </div>
  140. <div id="biz-ss-cloudsave-container-body" style = "padding: 10px;font-size: 10px;">
  141. Every change you make is automatically saved to Drive.
  142. </div>
  143. </div>`,
  144. target: document.getElementById("container"),
  145. width: '340px',
  146. height: '95px',
  147. animationSettings: { effect: 'Zoom' },
  148. cssClass: "biz-ss-cloudsave-container",
  149. position: { X: 260, Y: 34 },
  150. });
  151. this.ssCloudSavedDialougObj.appendTo('#dialog');
  152. }
  153. else {
  154. this.ssCloudSavedDialougObj.show();
  155. }
  156. document.getElementById('dialog_dialog-content').style.padding = "0px";
  157. document.getElementById('dialog_dialog-content').style.borderRadius = "10px";
  158. }
  159. renderCloudSavingDialogue() {
  160. var elem = document.getElementById("biz-ss-cloudloading-container");
  161. if (elem == null) {
  162. this.ssCloudSavingDialougObj = new ej.popups.Dialog({
  163. isModal: false,
  164. content: `<div id="biz-ss-cloudloading-container" style="max-width: 420px;min-width: 320px;padding: 10px;border-radius: 10px;display: block;border: 1px solid;" >
  165. <div id="biz-ss-cloudloading-container-title" style = "font-size: 15px;border-color: green;color: green;background-color: #e6f4ea;min-height: 40px;padding: 10px;" >
  166. <div class="biz-ss-cloudloading-container-img e-icons">
  167. </div>
  168. Saving...
  169. </div>
  170. <div id="biz-ss-cloudloading-container-body" style = "padding: 10px;font-size: 10px;">
  171. Every change you make is automatically saved to Drive.
  172. </div>
  173. </div>`,
  174. target: document.getElementById("container"),
  175. width: '340px',
  176. height: '95px',
  177. animationSettings: { effect: 'Zoom' },
  178. cssClass: "biz-ss-cloudloading-container",
  179. position: { X: 260, Y: 34 },
  180. });
  181. this.ssCloudSavingDialougObj.appendTo('#dialog');
  182. }
  183. else {
  184. this.ssCloudSavingDialougObj.show();
  185. }
  186. document.getElementById('dialog_dialog-content').style.padding = "0px";
  187. document.getElementById('dialog_dialog-content').style.borderRadius = "10px";
  188. }
  189. tabSelected(args) {
  190. if (args.selectedItem.firstElementChild.firstElementChild.textContent == "Drive") {
  191. this.importSelectButton.appendTo('#importfile-drive-select-btn');
  192. this.importCancelButton.appendTo('#importfile-drive-cancel-btn');
  193. let dailogHeight = document.getElementsByClassName("biz-ss-import-dialog")[0].offsetHeight;
  194. document.getElementsByClassName("biz_drive_list")[0].style.height = dailogHeight - 165 + "px";
  195. }
  196. }
  197. openSpreadSheetDocument() {
  198. Unibase.Apps.Collaboration.DocumentManager.Instance().importCreateSpreadSheet(this.spreadsheetImportedFileData).then((response) => {
  199. var result = response.result;
  200. this.ssImportOpenDialougObj.hide();
  201. });
  202. }
  203. importSpreadSheetDocument() {
  204. Unibase.Apps.Collaboration.DocumentManager.Instance().importCreateSpreadSheet(this.spreadsheetImportedFileData).then((response) => {
  205. var result = response.result;
  206. var newtaburl = this._url + result + "/Excel/0";
  207. document.getElementById('sucessfullmessage').style.display = 'inline-block';
  208. document.getElementById('importcreatenewdocument').setAttribute('href', newtaburl);
  209. });
  210. }
  211. importReplaceSpreadSheet() {
  212. Unibase.Apps.Collaboration.DocumentManager.Instance().importReplaceSpreadSheet(this.spreadsheetImportedReplaceFileData).then((response) => {
  213. this.base.ssObj.destroy();
  214. this.base.filedata = JSON.parse(response.result[0]);
  215. this.base.customresult = JSON.parse(response.result[1]);
  216. this.base.unwireEvents();
  217. this.base.unwireBootStrapKeyEvent();
  218. this.base.ssRender();
  219. this.ssImprotedFileDailogueObj.hide();
  220. this.importedFile.value = null;
  221. let args = { action: 'importReplace', origin: 'biz', };
  222. this.base.bizSignalr(args);
  223. });
  224. }
  225. insertSheet() {
  226. Unibase.Apps.Collaboration.DocumentManager.Instance().insertNewSpreadsheet(this.spreadsheetImportedFileData).then((response) => {
  227. let importedStr = response.result[0];
  228. let importedSheets = JSON.parse(importedStr).Workbook.sheets;
  229. this.base.ssObj.saveAsJson().then((e) => {
  230. let wb = e.jsonObject;
  231. let curentSheets = wb.Workbook.sheets;
  232. let sheetNames = [];
  233. for (let i = 0; i < curentSheets.length; i++) {
  234. sheetNames.push(curentSheets[i].name);
  235. }
  236. for (let i = 0; i < importedSheets.length; i++) {
  237. let name = importedSheets[i].name;
  238. importedSheets[i].name = this.generateSheetName(sheetNames, name);
  239. }
  240. curentSheets = curentSheets.concat(importedSheets);
  241. wb.Workbook.sheets = curentSheets;
  242. this.base.removeSheetIndexProp(wb.Workbook);
  243. this.base.ssObj.openFromJson({ file: wb });
  244. });
  245. this.ssImprotedFileDailogueObj.hide();
  246. });
  247. }
  248. documentCopy() {
  249. var data = {
  250. FileId: this.FileId,
  251. FileName: this.FileName,
  252. };
  253. this.copyDocumentDataDailog(data);
  254. }
  255. copyDocumentDataDailog(data) {
  256. var copyDocumentOk = new ej.buttons.Button({ cssClass: `e-flat`, content: 'OK' });
  257. var copyDocumentCancel = new ej.buttons.Button({ cssClass: `e-flat`, content: 'Cancel' });
  258. let inputobj = new ej.inputs.TextBox({ placeholder: 'Enter Document Name', floatLabelType: 'Auto' });
  259. this._url = window.location.origin + "/#/documents/";
  260. var elem = document.getElementById("copyobj");
  261. if (elem == null) {
  262. this.copyDocumentDailogue = new ej.popups.Dialog({
  263. isModal: true,
  264. header: 'Copy Document',
  265. content: `<div id='copyobj'><div id='copy-document-container'>
  266. <div id='copy-document-div'>
  267. <div class='row'>
  268. <div class='col-md-12'>
  269. <input id='copydocument-textbox' type='text' value='Copy Of ` + data.FileName + `'/>
  270. </div></div>
  271. <div id='sucessfullmessagecopy' style="display:none">File imported successfully. <a id="spreadsheetopennowcopy" target="_blank">Open now »</a></div>
  272. </div></div>
  273. <br><br>
  274. <br>
  275. <button id="copy-document-ok-btn" class="pull-right"></button>
  276. <button id="copy-document-close-btn" class="pull-right"></button>
  277. </div>`,
  278. target: document.getElementById("container"),
  279. placeholder: "Please Enter File Name",
  280. popupHeight: "100px",
  281. width: '350px',
  282. height: '250px',
  283. animationSettings: { effect: 'Zoom' },
  284. });
  285. this.copyDocumentDailogue.appendTo('#copydocument-container');
  286. copyDocumentOk.appendTo('#copy-document-ok-btn');
  287. copyDocumentCancel.appendTo('#copy-document-close-btn');
  288. inputobj.appendTo("#copydocument-textbox");
  289. this.copyDocumentDailogue.show();
  290. document.getElementById('copy-document-ok-btn').addEventListener('click', () => {
  291. var FileId = this.FileId;
  292. var FileName = $("#copydocument-textbox").val();
  293. var data = {
  294. FileId: FileId,
  295. FileTitle: FileName,
  296. };
  297. Unibase.Apps.Collaboration.FileManager.Instance().copyFile(data).then((response) => {
  298. var result = response.result;
  299. this.copyDocumentDailogue.destroy();
  300. });
  301. });
  302. document.getElementById('copy-document-close-btn').addEventListener('click', () => {
  303. this.copyDocumentDailogue.hide();
  304. });
  305. }
  306. else {
  307. this.copyDocumentDailogue.show();
  308. }
  309. }
  310. spreadSheetTrim() {
  311. let range = this.base.ssObj.biz.getIndexes();
  312. this.base.ssObj.updateUndoRedoCollection({ name: 'bizAction', args: { action: 'trim', range: range, oldCells: this.base.getCellsFromIndexes(range) } });
  313. let count = this.processTrim(range);
  314. this.setSpreadsheettrimDialouge(count);
  315. let args = { range: range, action: 'trim', origin: 'biz', sheetIndex: this.base.getSheetIndex() };
  316. Unibase.Apps.Collaboration.Components.Sheets.Base.Instance().bizSignalr(args);
  317. }
  318. processTrim(ranges) {
  319. var sheet = this.base.ssObj.biz.getActiveSheet();
  320. var fromRowCell = ranges[0];
  321. var fromColumnCell = ranges[1];
  322. var toRowCell = ranges[2];
  323. var toColumnCell = ranges[3];
  324. var count = 0;
  325. for (var i = fromRowCell; i <= toRowCell; i++) {
  326. if (!sheet.rows[i]) {
  327. continue;
  328. }
  329. for (var j = fromColumnCell; j <= toColumnCell; j++) {
  330. var rowandcell = { rowindex: i, cellindex: j };
  331. var cellObj = ej.spreadsheet.getCell(rowandcell.rowindex, rowandcell.cellindex, sheet);
  332. if (cellObj && cellObj.value != null) {
  333. if (cellObj.value.indexOf(' ') >= 0) {
  334. cellObj.value = cellObj.value.replace(/\s+/g, ' ');
  335. ;
  336. cellObj.value = cellObj.value.trim();
  337. this.base.ssObj.biz.setCell(rowandcell.rowindex, rowandcell.cellindex, sheet, cellObj);
  338. count++;
  339. }
  340. else if (cellObj.value.indexOf(' ') == 0) {
  341. cellObj.value = cellObj.value.trim();
  342. this.base.ssObj.biz.setCell(rowandcell.rowindex, rowandcell.cellindex, sheet, cellObj);
  343. count++;
  344. }
  345. else {
  346. continue;
  347. }
  348. }
  349. else {
  350. continue;
  351. }
  352. }
  353. }
  354. return count;
  355. }
  356. setSpreadsheettrimDialouge(count) {
  357. var temp = 0;
  358. if (temp != count) {
  359. temp = count;
  360. }
  361. var countPara = "";
  362. if (temp > 1) {
  363. countPara = `Trimmed whitespace from the ` + temp + ` selected cells.`;
  364. }
  365. else if (temp == 1) {
  366. countPara = `Trimmed whitespace from the ` + temp + ` selected cell.`;
  367. }
  368. else if (temp == 0) {
  369. countPara = `No selected cells had whitespace trimmed.`;
  370. }
  371. var elem = document.getElementById("trimobj");
  372. if (elem == null) {
  373. this.spreadhsheetTrimDialog = new ej.popups.Dialog({
  374. isModal: true,
  375. content: `<div id='trimobj'><div id="trimdialoguebox1"><p id="trimpara">` + countPara + `</p>
  376. <button id='spreadsheettrimedok' class='btn btn-secondary btn-sm pull-right'>Ok</button></div>`,
  377. target: document.getElementById("container"),
  378. width: '500px',
  379. height: '100px',
  380. animationSettings: { effect: 'Zoom' },
  381. });
  382. this.spreadhsheetTrimDialog.appendTo('#spreadsheettrim-container');
  383. document.getElementById('spreadsheettrimedok').addEventListener('click', () => {
  384. this.spreadhsheetTrimDialog.hide();
  385. });
  386. }
  387. else {
  388. document.getElementById("trimpara").innerHTML = '';
  389. document.getElementById("trimpara").innerHTML = countPara;
  390. this.spreadhsheetTrimDialog.show();
  391. }
  392. (temp != 0) && Unibase.Apps.Collaboration.Components.Common.Download.Instance().ssAutoSave({ action: "trim", eventArgs: {} }, this.base, true);
  393. }
  394. generateSheetName(names, name) {
  395. if (names.indexOf(name) < 0) {
  396. return name;
  397. }
  398. let i = 1;
  399. while (names.indexOf(name + ' (' + i + ')') > -1) {
  400. i++;
  401. }
  402. return name + ' (' + i + ')';
  403. }
  404. importOpenDialogcreated() {
  405. document.getElementById('importopenfile-select-btn').setAttribute("disabled", 'true');
  406. document.getElementById('importopenfile-select-btn').addEventListener('click', () => {
  407. this.openSpreadSheetDocument();
  408. this.ssImportOpenDialougObj.destroy();
  409. });
  410. document.getElementById('importopenfile-cancel-btn').addEventListener('click', () => {
  411. this.ssImportOpenDialougObj.hide();
  412. document.getElementById('importopenfile-select-btn').classList.add('e-disabled');
  413. document.getElementById('filename').innerHTML = "";
  414. (this.importedFile) && (this.importedFile.value = null);
  415. if (this.ssImportOpenDialougObj) {
  416. this.ssImportOpenDialougObj.destroy();
  417. this.ssImportOpenDialougObj = null;
  418. }
  419. });
  420. this.importOpenSelectButton.appendTo('#importopenfile-select-btn');
  421. this.importOpenCancelButton.appendTo('#importopenfile-cancel-btn');
  422. document.body.addEventListener('dragover', (e) => {
  423. e.preventDefault();
  424. });
  425. document.getElementsByClassName('biz-ss-importopen-dialog')[0].addEventListener('dragover', (e) => {
  426. e.preventDefault();
  427. });
  428. document.getElementsByClassName('biz-ss-importopen-dialog')[0].addEventListener("drop", (e) => {
  429. e.preventDefault();
  430. document.getElementById('importopenfile').files = e.dataTransfer.files;
  431. var ele = { target: { files: e.dataTransfer.files } };
  432. this.openFileSelected(ele);
  433. });
  434. document.getElementById('importopenfile').addEventListener('change', (e) => {
  435. debugger;
  436. this.openFileSelected(e);
  437. });
  438. }
  439. importDialogcreated() {
  440. document.getElementById('importfile-upload-select-btn').setAttribute("disabled", 'true');
  441. let ele = document.getElementById("importfile-wrapper");
  442. ele.style.height = window.innerHeight - 375 + "px";
  443. ele.style.width = window.innerWidth - 635 + "px";
  444. document.getElementById('importfile-upload-select-btn').addEventListener('click', () => {
  445. this.ssImportDialougObj.hide();
  446. this.ssimportedFileDataDailog();
  447. document.getElementById('filename').innerHTML = "";
  448. document.getElementById('importedfilename').innerHTML = this.importedFile.files[0].name;
  449. });
  450. document.getElementById('importfile-upload-cancel-btn').addEventListener('click', () => {
  451. this.ssImportDialougObj.hide();
  452. document.getElementById('importfile-upload-select-btn').classList.add('e-disabled');
  453. document.getElementById('filename').innerHTML = "";
  454. (this.importedFile) && (this.importedFile.value) && (this.importedFile.value = null);
  455. if (this.ssImportDialougObj) {
  456. this.ssImportDialougObj.destroy();
  457. this.ssImportDialougObj = null;
  458. }
  459. });
  460. this.importSelectButton.appendTo('#importfile-upload-select-btn');
  461. this.importCancelButton.appendTo('#importfile-upload-cancel-btn');
  462. document.body.addEventListener('dragover', (e) => {
  463. e.preventDefault();
  464. });
  465. document.getElementsByClassName('biz-ss-import-dialog')[0].addEventListener('dragover', (e) => {
  466. e.preventDefault();
  467. });
  468. document.getElementsByClassName('biz-ss-import-dialog')[0].addEventListener("drop", (e) => {
  469. e.preventDefault();
  470. document.getElementById('importfile').files = e.dataTransfer.files;
  471. var ele = { target: { files: e.dataTransfer.files } };
  472. this.fileSelected(ele);
  473. });
  474. document.getElementById('importfile').addEventListener('change', (e) => {
  475. this.fileSelected(e);
  476. });
  477. document.getElementsByClassName('biz-ss-import-dialog')[0].style.maxHeight = "";
  478. }
  479. getAll(parentid) {
  480. let driveList = ``;
  481. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/collaboration/managers/filemanager.js", () => {
  482. Unibase.Apps.Collaboration.FileManager.Instance().getAll(parentid).then((response) => {
  483. let folders = response.result.Folders;
  484. let foldershtml = ``;
  485. for (let i = 0; i < folders.length; i++) {
  486. var foldername = folders[i].FolderName;
  487. folders[i].FolderName = folders[i].Title;
  488. if (folders[i].FolderName == null) {
  489. folders[i].FolderName = foldername;
  490. }
  491. foldershtml += `<li class="list-group-item copyto_list copyto_folder" id="li_folder_` + folders[i].FolderId + `" style="border: none;cursor:pointer;font-size:14px;"><a onclick="Unibase.Apps.Collaboration.Components.UniCloud.Instance().getFolderItems(` + folders[i].FolderId + `,'` + folders[i].FolderName + `',` + true + `)"><i class="fa fa-folder mr-15 text-light"></i> ` + folders[i].FolderName + `<i class="fa fa-angle-right pull-right"></i></a></li>`;
  492. }
  493. let fileshtml = ``;
  494. let files = response.result.Files;
  495. for (let i = 0; i < files.length; i++) {
  496. fileshtml += `<li class="list-group-item copyto_list copyto_file " id="li_file_` + files[i].FileId + `" style="border: none;cursor:pointer;font-size:14px;" onselect="this.style.background='#e5e5e5'"> <a onclick=""><div class="d-flex flex-row " > <img src="/tenants/default/documenttypes/sheet.svg" data-dynamic="1" data-loaded="0" alt = "filetype" onerror = "ReloadImage(event)" class="w-25p h-25p img-fluid mr-10" > <span class="text-truncate importfile-drive-filename" > ` + files[i].FileTitle + ` </span> </div ></a></li>`;
  497. }
  498. if (!this.ssImportDialougObj) {
  499. driveList = `<div class="biz_drive_list">
  500. <ul class="list-group" id="biz_drive_foldersList">` + foldershtml + ` </ul>
  501. <ul class="list-group" id="biz_drive_filesList">` + fileshtml + `</ul>
  502. <div id="div_createfolder" class="hidden row"><i class="fa fa-arrow-left col-sm-1 mt-10" id="back_create"
  503. onclick=" Unibase.Apps.Collaboration.Components.UniCloud.Instance().getAll(` + Unibase.Apps.Collaboration.Components.UniCloud.Instance().selectedfolderid + `)"></i>
  504. <input type="text" class="form-control col-sm-11" placeholder="Folder Name" id="createfolder"></div></div>
  505. <div class="pull-down">
  506. <button id='importfile-drive-select-btn' class='e-disabled'>select</button>
  507. <button id='importfile-drive-cancel-btn'>cancel</button></div>`;
  508. this.renderImportDialogue(driveList);
  509. }
  510. else {
  511. if (document.getElementById("breadcrumb-ul"))
  512. document.getElementById("breadcrumb-ul").remove();
  513. document.getElementById("biz_drive_foldersList") && (document.getElementById("biz_drive_foldersList").innerHTML = "");
  514. document.getElementById("biz_drive_foldersList") && (document.getElementById("biz_drive_foldersList").innerHTML = foldershtml);
  515. document.getElementById("biz_drive_filesList") && (document.getElementById("biz_drive_filesList").innerHTML = "");
  516. document.getElementById("biz_drive_filesList") && (document.getElementById("biz_drive_filesList").innerHTML = fileshtml);
  517. }
  518. });
  519. });
  520. }
  521. getFolderList() {
  522. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/collaboration/managers/filemanager.js", () => {
  523. Unibase.Apps.Collaboration.FileManager.Instance().getFolders().then((response) => {
  524. let folders = response.result;
  525. var foldershtml = ``;
  526. for (let i = 0; i <= folders.length; i++) {
  527. foldershtml += `<li class="list-group-item" id="li_folder_` + folders[i].FolderId + `"><a onclick="Unibase.Apps.Collaboration.Components.old_unicloud.Instance().getFolderItems(` + folders[i].FolderId + `,'` + folders[i].FolderName + `')"><input class="hidden" id="hdn_folder_` + folders[i].FolderId + `" value="` + folders[i].FolderId + `"><i class="fa fa-folder mr-15 text-light"></i>` + folders[i].FolderName + `<i class="fa fa-angle-right pull-right"></i></a></li>`;
  528. }
  529. return foldershtml;
  530. });
  531. });
  532. }
  533. getFilesList() {
  534. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/collaboration/managers/filemanager.js", function () {
  535. Unibase.Apps.Collaboration.FileManager.Instance().getFiles(0).then((response) => {
  536. var parentid = response.result.Parentid;
  537. var folders = response.result.Folders;
  538. var breadcrumb;
  539. breadcrumb = `<a href="javascript:void(0);" onclick="Unibase.Apps.Collaboration.Components.old_unicloud.Instance().getAll(` + parentid + "," + true + `)"> ` + +` ></a>`;
  540. $("#folder_breadcrumb").append(breadcrumb);
  541. for (let j = 0; j < folders.length; j++) {
  542. var childfolderhtml = `<li class="list-group-item" id="li_childfolder_` + folders[j].FolderId + `" style="border: none;cursor:pointer;font-size:14px;" onmouseover="this.style.background='#e5e5e5'" onmouseout="this.style.background='#FFF'"><a onclick=""><input class="hidden" id="hdn_childfolderid_` + folders[j].FolderId + `" value="` + folders[j].FolderId + `"><i class="fa fa-folder mr-15 text-light"></i> ` + folders[j].FolderName + `</a></li>`;
  543. $("#li_hdn_childfolders:last").after(childfolderhtml);
  544. }
  545. var files = response.result.Files;
  546. $("#ul_filesList").html(`<li class="list-group-item hidden" id="li_hdn_file"></li><li class="list-group-item hidden" id="li_hdn_childfolders"></li> `);
  547. for (let i = 0; i < files.length; i++) {
  548. var fileshtml = `<li class="list-group-item disabled" id="li_file_` + files[i].FileId + `" style="border: none;cursor:pointer;font-size:14px;"><a onclick=""><input class="hidden" id="hdn_file_` + files[i].FileId + `" value="` + files[i].FileId + `"><input class="hidden" id="hdn_file_folderid_` + files[i].FolderId + `" value="` + files[i].FolderId + `"><div class="d-flex flex-row " > <img src="/tenants/default/documenttypes/sheet.svg" data-dynamic="1" data-loaded="0" alt = "filetype" onerror = "ReloadImage(event)" class="w-25p h-25p img-fluid mr-10" > <span class="text-truncate" > ` + files[i].FileName + ` </span> </div ></a></li>`;
  549. $("#li_hdn_file:last").after(fileshtml);
  550. }
  551. });
  552. $("#ul_filesList").removeClass("hidden");
  553. });
  554. }
  555. getFolderItems(folderid, foldername, copyto) {
  556. let fldrname = foldername;
  557. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/collaboration/managers/filemanager.js", () => {
  558. Unibase.Apps.Collaboration.FileManager.Instance().getFiles(folderid).then((response) => {
  559. debugger;
  560. let parentid = response.result.Parentid;
  561. let breadcrumb = `<ul id="breadcrumb-ul"><li id="breadcrumb-li"><a href="javascript:void(0);" onclick="Unibase.Apps.Collaboration.Components.Sheets.Ribbon.Instance().getAll(` + parentid + `)"> ` + fldrname + ` ></a></li></ul>`;
  562. $(".biz_drive_list").empty();
  563. let folders = response.result.Folders;
  564. let foldershtml = ``;
  565. for (let i = 0; i < folders.length; i++) {
  566. var foldername = folders[i].FolderName;
  567. folders[i].FolderName = folders[i].Title;
  568. if (!folders[i].FolderName)
  569. folders[i].FolderName = foldername;
  570. foldershtml += `<li class="list-group-item copyto_list copyto_folder" id="li_folder_` + folders[i].FolderId + `" style="border: none;cursor:pointer;font-size:14px;"><a onclick="Unibase.Apps.Collaboration.Components.old_unicloud.Instance().getFolderItems(` + folders[i].FolderId + `,'` + folders[i].FolderName + `',` + true + `)"><i class="fa fa-folder mr-15 text-light"></i> ` + folders[i].FolderName + `<i class="fa fa-angle-right pull-right"></i></a></li>`;
  571. }
  572. let fileshtml = ``;
  573. let files = response.result.Files;
  574. for (let i = 0; i < files.length; i++) {
  575. fileshtml += `<li class="list-group-item copyto_list copyto_file " id="li_file_` + files[i].FileId + `" style="border: none;cursor:pointer;font-size:14px;" onselect="this.style.background='#e5e5e5'"> <a onclick=""><div class="d-flex flex-row " > <img src="/tenants/default/documenttypes/sheet.svg" data-dynamic="1" data-loaded="0" alt = "filetype" onerror = "ReloadImage(event)" class="w-25p h-25p img-fluid mr-10" > <span class="text-truncate" > ` + files[i].FileTitle + ` </span> </div ></a></li>`;
  576. }
  577. let html = breadcrumb + `<ul class="list-group" id="biz_drive_foldersList">` + foldershtml + ` </ul>
  578. <ul class="list-group" id="biz_drive_filesList">` + fileshtml + `</ul>`;
  579. $(".biz_drive_list").append(html);
  580. });
  581. });
  582. }
  583. openFileSelected(e) {
  584. document.getElementById('importopenfile-select-btn').removeAttribute('disabled');
  585. document.getElementById('importopenfile-select-btn').classList.remove('e-disabled');
  586. this.importedFile = document.getElementById('importopenfile');
  587. document.getElementById('filename').innerHTML = this.importedFile.files[0].name;
  588. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/core/helpers/file/filehelper.js', () => {
  589. Unibase.Platform.Helpers.FileHelper.Instance().getBase64(e).then((response) => {
  590. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length != 0) {
  591. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  592. var refId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_recordid").Value);
  593. if (refId != 0 && refId != null && refId != undefined) {
  594. }
  595. }
  596. var fileobject = {
  597. filedata: response.FileData,
  598. filename: response.FileName,
  599. filetype: response.FileType,
  600. RefId: refId,
  601. FileId: this.FileId,
  602. Upload: true,
  603. };
  604. this.spreadsheetImportedFileData = fileobject;
  605. });
  606. });
  607. }
  608. fileSelected(e) {
  609. document.getElementById('importfile-upload-select-btn').removeAttribute('disabled');
  610. document.getElementById('importfile-upload-select-btn').classList.remove('e-disabled');
  611. this.importedFile = document.getElementById('importfile');
  612. document.getElementById('filename').innerHTML = this.importedFile.files[0].name;
  613. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile('platform/core/helpers/file/filehelper.js', () => {
  614. Unibase.Platform.Helpers.FileHelper.Instance().getBase64(e).then((response) => {
  615. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length != 0) {
  616. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  617. var refId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_recordid").Value);
  618. if (refId != 0 && refId != null && refId != undefined) {
  619. }
  620. }
  621. var fileobject = {
  622. filedata: response.FileData,
  623. filename: response.FileName,
  624. filetype: response.FileType,
  625. RefId: refId,
  626. FileId: this.FileId,
  627. Upload: true,
  628. };
  629. this.spreadsheetImportedFileData = fileobject;
  630. var fileobjectreplace = {
  631. filedata: response.FileData,
  632. filename: response.FileName,
  633. filetype: response.FileType,
  634. RefId: refId,
  635. FileId: this.FileId,
  636. FilePath: this.filepath,
  637. Upload: true,
  638. };
  639. this.spreadsheetImportedReplaceFileData = fileobjectreplace;
  640. });
  641. });
  642. }
  643. spreadsheetMenuBar(FileId, documentGroup, filename) {
  644. var menuItems = [
  645. {
  646. text: 'File',
  647. items: [
  648. { text: 'New', iconCss: 'e-icons add-new' },
  649. { text: 'Open', iconCss: 'e-icons e-open' },
  650. { text: 'Import', iconCss: 'e-icons e-import', cssClass: "menuitem-viewonly" },
  651. { text: 'Make a copy', iconCss: 'e-icons e-makeacopy' },
  652. {
  653. text: 'Download', iconCss: 'e-icons e-save', items: [
  654. { text: 'Microsoft excel (.xlsx)', iconCss: 'e-icons M_ExcelExport' },
  655. { text: 'Microsoft excel 97-2003 (.xls)', iconCss: 'e-icons M_ExcelExport' },
  656. { text: 'Comma-Seperated values (.csv)', iconCss: 'e-icons M_CSVExport' },
  657. { text: 'PDF document (.pdf)', iconCss: 'e-icons M_PDF' },
  658. { text: 'OpenDocument spreadsheet (.ods)', iconCss: 'e-icons M_ODS' },
  659. ]
  660. },
  661. { text: 'Close', iconCss: 'e-icons cross-close' },
  662. ]
  663. },
  664. {
  665. text: 'Edit',
  666. items: [
  667. { text: 'Undo', iconCss: "e-icons MT_Undo" },
  668. { text: 'Redo', iconCss: "e-icons MT_Redo" },
  669. { text: 'Cut', iconCss: "e-icons MT_Cut" },
  670. { text: 'Copy', iconCss: "e-icons MT_Copy" },
  671. { text: 'Paste', iconCss: "e-icons MT_Paste" },
  672. { text: 'Special paste', iconCss: "e-icons MT_Paste", items: [{ text: 'All' }, { text: 'Values' }, { text: 'Formats' }] },
  673. { text: 'Find and replace', iconCss: "e-icons MT_Search" },
  674. { text: 'Delete value' },
  675. { text: 'Delete row' },
  676. { text: 'Delete column' },
  677. { text: 'Delete cells and shift up' },
  678. { text: 'Delete cells and shift left' },
  679. { text: 'Clear Notes' },
  680. ]
  681. },
  682. {
  683. text: 'View',
  684. items: [
  685. {
  686. text: 'Freeze', iconCss: 'e-icons b_freezepane', items: [
  687. { text: 'No rows' }, { text: '1 row' }, { text: '2 rows' }, { text: 'Upto current row ()' }, { separator: true },
  688. { text: 'No columns' }, { text: '1 column' }, { text: '2 columns' }, { text: 'Upto current column ()' }, { separator: true },
  689. { text: 'Freeze panes' },
  690. ]
  691. },
  692. { separator: true },
  693. { text: 'Hide headers', iconCss: 'e-icons e-hideheadings' },
  694. { text: 'Hide gridlines', iconCss: 'e-icons e-hidegridlines' },
  695. { separator: true },
  696. { text: 'Formula bar', iconCss: 'e-icons ' },
  697. { text: 'Show formula', iconCss: 'e-icons ' },
  698. { separator: true },
  699. {
  700. text: 'Hidden sheets', iconCss: 'e-icons ', items: [
  701. { text: 'dummyHiddenSheet' }
  702. ]
  703. },
  704. { separator: true },
  705. { text: 'Full screen', iconCss: 'e-icons biz-enterfullscreen' },
  706. ]
  707. },
  708. {
  709. text: 'Insert',
  710. items: [
  711. { text: 'Row above' },
  712. { text: 'Row below' },
  713. { separator: true },
  714. { text: 'Column left' },
  715. { text: 'Column right' },
  716. { separator: true },
  717. { text: 'Cells and shift down' },
  718. { text: 'Cells and shift right' },
  719. { separator: true },
  720. { text: 'Link', iconCss: 'e-icons e-hyperlink' },
  721. { text: 'Note', iconCss: 'e-icons biz-comment-icon' },
  722. { text: 'Function', iconCss: 'e-icons f_formulafunction' },
  723. {
  724. text: 'Image', iconCss: 'e-icons b_image',
  725. items: [
  726. { text: 'Image in cell' },
  727. { text: 'Image over cells' },
  728. ]
  729. },
  730. {
  731. text: 'Chart', iconCss: 'e-icons m_chart',
  732. items: [
  733. { text: 'Column', iconCss: 'e-icons m_3d_column2', items: [{ text: 'Clustered column' }, { text: 'Stacked column' }, { text: '100% stacked column' }] },
  734. { text: 'Bar', iconCss: 'e-icons b_bar_chart', items: [{ text: 'Clustered bar' }, { text: 'Stacked bar' }, { text: '100% stacked bar' }] },
  735. { text: 'Area', iconCss: 'e-icons b_area_chart', items: [{ text: 'Clustered area' }, { text: 'Stacked area' }, { text: '100% stacked area' }] },
  736. { text: 'Pie/Doughnut', iconCss: 'e-icons f_pie_chart', items: [{ text: 'Pie' }, { text: 'Doughnut' }] },
  737. { text: 'Line', iconCss: 'e-icons f_2d_line6', items: [{ text: 'Clustered line' }, { text: 'Stacked line' }, { text: '100% stacked line' }] },
  738. { text: 'Scatter', iconCss: 'e-icons b_more_scatter_charts', items: [{ text: 'Scatter chart' }] }
  739. ]
  740. },
  741. ]
  742. },
  743. {
  744. text: 'Format',
  745. items: [
  746. {
  747. text: 'Number formatting', iconCss: 'e-icons ', items: [
  748. { text: 'General', iconCss: "e-icons" },
  749. { text: 'Number', iconCss: "e-icons" },
  750. { text: 'Currency', iconCss: "e-icons" },
  751. { text: 'Currency (rounded)', iconCss: "e-icons" },
  752. { text: 'Accounting', iconCss: "e-icons" },
  753. { text: 'Short date', iconCss: "e-icons" },
  754. { text: 'Long date', iconCss: "e-icons" },
  755. { text: 'Time', iconCss: "e-icons" },
  756. { text: 'Percentage', iconCss: "e-icons" },
  757. { text: 'Fraction', iconCss: "e-icons" },
  758. { text: 'Scientific', iconCss: "e-icons" },
  759. { text: 'Text', iconCss: "e-icons" },
  760. ]
  761. },
  762. { text: 'Bold', iconCss: 'e-icons ' },
  763. { text: 'Italic', iconCss: 'e-icons ' },
  764. { text: 'Underline', iconCss: 'e-icons ' },
  765. { text: 'Strikethrough', iconCss: 'e-icons ' },
  766. {
  767. text: 'Font size', iconCss: 'e-icons ', items: [
  768. { text: '8', iconCss: 'e-icons ' },
  769. { text: '9', iconCss: 'e-icons ' },
  770. { text: '10', iconCss: 'e-icons ' },
  771. { text: '11', iconCss: 'e-icons ' },
  772. { text: '12', iconCss: 'e-icons ' },
  773. { text: '14', iconCss: 'e-icons ' },
  774. { text: '16', iconCss: 'e-icons ' },
  775. { text: '18', iconCss: 'e-icons ' },
  776. { text: '20', iconCss: 'e-icons ' },
  777. { text: '22', iconCss: 'e-icons ' },
  778. { text: '24', iconCss: 'e-icons ' },
  779. { text: '26', iconCss: 'e-icons ' },
  780. { text: '28', iconCss: 'e-icons ' },
  781. { text: '36', iconCss: 'e-icons ' },
  782. { text: '48', iconCss: 'e-icons ' },
  783. { text: '72', iconCss: 'e-icons ' },
  784. ]
  785. },
  786. {
  787. text: 'Align', iconCss: 'e-icons ', items: [
  788. { text: 'Left', iconCss: 'e-icons ' },
  789. { text: 'Center', iconCss: 'e-icons ' },
  790. { text: 'Right', iconCss: 'e-icons ' },
  791. { separator: true },
  792. { text: 'Top', iconCss: 'e-icons ' },
  793. { text: 'Middle', iconCss: 'e-icons ' },
  794. { text: 'Bottom', iconCss: 'e-icons ' },
  795. ]
  796. },
  797. {
  798. text: 'Merge cells', iconCss: 'e-icons Merge_cells', items: [
  799. { text: 'Merge all', iconCss: 'e-icons' },
  800. { text: 'Merge vertically', iconCss: 'e-icons' },
  801. { text: 'Merge horizontally', iconCss: 'e-icons' },
  802. { text: 'Unmerge', iconCss: 'e-icons' },
  803. ]
  804. },
  805. { text: 'Wrap text', iconCss: 'e-icons M_Wrap' },
  806. {
  807. text: 'Conditional formatting', iconCss: 'e-icons M_ConditionalFormatting', items: [
  808. {
  809. text: 'Highlight Cells Rules', items: [
  810. { text: 'Greater than' },
  811. { text: 'Less than' },
  812. { text: 'Between' },
  813. { text: 'Equal to' },
  814. { text: 'Text that contains' },
  815. { text: 'A date occuring' },
  816. { text: 'Duplicate values' },
  817. ]
  818. },
  819. {
  820. text: 'Top/Bottom rules', items: [
  821. { text: 'Top 10 items' },
  822. { text: 'Top 10%' },
  823. { text: 'Bottom 10 items' },
  824. { text: 'Bottom 10%' },
  825. { text: 'Above average' },
  826. { text: 'Below average' },
  827. ]
  828. },
  829. {
  830. text: 'Data bars', items: [
  831. { text: 'Blue data bar' },
  832. { text: 'Green data bar' },
  833. { text: 'Red data dar' },
  834. { text: 'Orange data bar' },
  835. { text: 'Light blue data bar' },
  836. { text: 'Purple data bar' },
  837. ]
  838. },
  839. {
  840. text: 'Color scales',
  841. items: [
  842. { text: 'Green -yellow - red' },
  843. { text: 'Red - yellow - green' },
  844. { text: 'Green - white - red' },
  845. { text: 'Red - white - green' },
  846. { text: 'Blue - white - red' },
  847. { text: 'Red - white - Blue' },
  848. { text: 'White - red' },
  849. { text: 'Red - white' },
  850. { text: 'Green - white' },
  851. { text: 'White - green' },
  852. { text: 'Green - yellow' },
  853. { text: 'Yellow - Green' },
  854. ]
  855. },
  856. {
  857. text: 'Icon sets',
  858. items: [
  859. { text: '3 arrows (colored)' },
  860. { text: '3 arrows (gray)' },
  861. { text: '4 arrows (colored)' },
  862. { text: '4 arrows (gray)' },
  863. { text: '5 arrows (colored)' },
  864. { text: '5 arrows (gray)' },
  865. { text: '3 triangles' },
  866. { text: '3 triangles lights (unrimmed)' },
  867. { text: '3 triangles lights (rimmed)' },
  868. { text: '3 signs' },
  869. { text: '4 traffic lights' },
  870. { text: 'Red to black' },
  871. { text: '3 symbols (circled)' },
  872. { text: '3 symbols (uncircled)' },
  873. { text: '3 flags' },
  874. { text: '3 stars' },
  875. { text: '5 quarters' },
  876. { text: '5 quarters' },
  877. { text: '4 ratings' },
  878. { text: '5 ratings' },
  879. { text: '5 boxes' },
  880. ]
  881. },
  882. {
  883. text: 'Clear rules', items: [
  884. { text: 'Selected cells' },
  885. { text: 'Entire sheet' },
  886. ]
  887. },
  888. ]
  889. },
  890. {
  891. text: 'Clear formatting', iconCss: 'e-icons M_CFormatting', items: [
  892. { text: 'Clear all' },
  893. { text: 'Clear formats' },
  894. { text: 'Clear contents' },
  895. { text: 'Clear hyperlinks' },
  896. ]
  897. },
  898. ]
  899. },
  900. {
  901. text: 'Data',
  902. items: [
  903. { text: 'Sort sheet by column asc, A → Z', iconCss: 'e-icons' },
  904. { text: 'Sort sheet by column dsc, Z → A', iconCss: 'e-icons' },
  905. { separator: true },
  906. { text: 'Protect sheet', iconCss: 'e-icons b_protectsheet' },
  907. { text: 'Protect workbook', iconCss: 'e-icons m_protectworkbook' },
  908. { separator: true },
  909. {
  910. text: 'Validation', iconCss: 'e-icons m_datavalidation',
  911. items: [
  912. { text: 'Data validation', iconCss: 'e-icons b_datavalidation' },
  913. { text: 'Highlight invalid data', iconCss: 'e-icons m_pv_highlight' },
  914. { text: 'Clear highlight', iconCss: 'e-icons mt_clearall' },
  915. { text: 'Clear validation', iconCss: 'e-icons mt_clearall' }
  916. ]
  917. },
  918. { separator: true },
  919. { text: 'Remove duplicates' },
  920. { text: 'Split text to columns' },
  921. { text: 'Trim whitespaces' },
  922. ]
  923. },
  924. {
  925. text: 'Tools',
  926. items: [
  927. { text: 'Spelling' }
  928. ]
  929. }
  930. ];
  931. let ExcelFormat;
  932. (function (ExcelFormat) {
  933. ExcelFormat[ExcelFormat["Xlsx"] = 0] = "Xlsx";
  934. ExcelFormat[ExcelFormat["Xls"] = 1] = "Xls";
  935. ExcelFormat[ExcelFormat["CSV"] = 2] = "CSV";
  936. ExcelFormat[ExcelFormat["PDF"] = 3] = "PDF";
  937. ExcelFormat[ExcelFormat["ODS"] = 4] = "ODS";
  938. })(ExcelFormat || (ExcelFormat = {}));
  939. ;
  940. if (!this.ssMenubarObj) {
  941. var menuitems = ['File', 'Edit', 'View', "Insert", "Format", "Formulas", "Data", "Tools"];
  942. this.ssMenubarObj = new ej.navigations.Menu({
  943. cssClass: 'biz-ss-menu',
  944. beforeClose: e => {
  945. if (menuitems.indexOf(e.parentItem.text) > -1) {
  946. this.ssMenubarObj.showItemOnClick = true;
  947. }
  948. let hiddensheet = this.base.ssObj.sheets.filter(sheet => sheet.state == "Hidden");
  949. if (hiddensheet.length > 0) {
  950. if (e.parentItem.text === "View") {
  951. let hiddenSheetNames = [];
  952. hiddensheet.forEach(state => hiddenSheetNames.push(state.name));
  953. this.ssMenubarObj.insertBefore([{ text: 'dummyHiddenSheet' }], hiddenSheetNames[0], false);
  954. this.ssMenubarObj.removeItems(hiddenSheetNames, false);
  955. }
  956. }
  957. },
  958. showItemOnClick: true,
  959. beforeItemRender: (ele) => {
  960. let sheet = this.base.ssObj.biz.getActiveSheet();
  961. if (sheet.frozenColumns != 0 || sheet.frozenRows != 0) {
  962. if (ele.item.text == "Freeze panes") {
  963. ele.element.innerHTML = "Unfreeze panes";
  964. }
  965. }
  966. if (!sheet.showHeaders) {
  967. if (ele.item.text == "Hide headers") {
  968. var child = ele.element.firstElementChild;
  969. ele.element.innerHTML = child.outerHTML + "Show Headers";
  970. }
  971. }
  972. if (!sheet.showGridLines) {
  973. if (ele.item.text == "Hide gridlines") {
  974. var child = ele.element.firstElementChild;
  975. ele.element.innerHTML = child.outerHTML + "Show Gridlines";
  976. }
  977. }
  978. if (ele.item.text == "Formula bar") {
  979. let formulaBarDisplay = document.getElementsByClassName("e-formula-bar-panel")[0];
  980. if (formulaBarDisplay.style.display == "") {
  981. this.addOrRemoveSelectIcon(ele);
  982. }
  983. }
  984. var index = this.base.getIndexesFromAddress(sheet.activeCell);
  985. var cellInfo = ej.spreadsheet.getCell(index[0], index[1], sheet);
  986. if (cellInfo) {
  987. if (ele.item.text === "Bold") {
  988. cellInfo.style && (cellInfo.style.fontWeight) && (cellInfo.style.fontWeight.toLowerCase() == "bold") && this.addOrRemoveSelectIcon(ele);
  989. }
  990. if (ele.item.text === "Italic") {
  991. cellInfo.style && (cellInfo.style.fontStyle) && (cellInfo.style.fontStyle.toLowerCase() == "italic") && this.addOrRemoveSelectIcon(ele);
  992. }
  993. if (ele.item.text === "Underline") {
  994. cellInfo.style && (cellInfo.style.textDecoration) && (((cellInfo.style.textDecoration.toLowerCase() == "underline line-through")) || (cellInfo.style.textDecoration.toLowerCase() == "underline")) && this.addOrRemoveSelectIcon(ele);
  995. }
  996. if (ele.item.text === "Strikethrough") {
  997. (cellInfo.style) && (cellInfo.style.textDecoration) && (((cellInfo.style.textDecoration.toLowerCase() == "underline line-through")) || (cellInfo.style.textDecoration.toLowerCase() == "line-through")) && this.addOrRemoveSelectIcon(ele);
  998. }
  999. if (ele.item.text === "Font size") {
  1000. this.addOrRemoveSelectIcon(ele);
  1001. }
  1002. if (ele.item.text === "Wrap text") {
  1003. (cellInfo.wrap) && (cellInfo.wrap == true) && this.addOrRemoveSelectIcon(ele);
  1004. }
  1005. if (ele.item.text === "Number formatting") {
  1006. this.addOrRemoveSelectIcon(ele);
  1007. }
  1008. if (ele.item.text === "Align") {
  1009. this.addOrRemoveSelectIcon(ele);
  1010. }
  1011. if (ele.item.text === "Merge cells") {
  1012. (cellInfo.rowSpan || cellInfo.colSpan) && this.addOrRemoveSelectIcon(ele);
  1013. }
  1014. if (ele.item.text === "Merge all") {
  1015. (cellInfo.rowSpan && cellInfo.colSpan) && this.addOrRemoveSelectIcon(ele);
  1016. }
  1017. if (ele.item.text === "Merge vertically") {
  1018. (cellInfo.rowSpan) && this.addOrRemoveSelectIcon(ele);
  1019. }
  1020. if (ele.item.text === "Merge horizontally") {
  1021. (cellInfo.colSpan) && this.addOrRemoveSelectIcon(ele);
  1022. }
  1023. if (ele.item.text === "General") {
  1024. !(cellInfo.format) && this.addOrRemoveSelectIcon(ele);
  1025. }
  1026. var numberformat = ["General", "Number", "Currency", "Accounting", "Short date", "Long date", "Time", "Percentage", "Fraction", "Scientific", "Text"];
  1027. if (numberformat.includes(ele.item.text)) {
  1028. if (cellInfo.format) {
  1029. if (ele.item.text === "General") {
  1030. (cellInfo.format.toLowerCase() == "general") && this.addOrRemoveSelectIcon(ele);
  1031. }
  1032. else if (ele.item.text === "Number") {
  1033. (cellInfo.format === "0.00") && this.addOrRemoveSelectIcon(ele);
  1034. }
  1035. else if (ele.item.text === "Currency") {
  1036. (cellInfo.format.startsWith("$#,##0.00")) && this.addOrRemoveSelectIcon(ele);
  1037. }
  1038. else if (ele.item.text === "Accounting") {
  1039. (cellInfo.format == "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)") && this.addOrRemoveSelectIcon(ele);
  1040. }
  1041. else if (ele.item.text === "Short date") {
  1042. (cellInfo.format == "mm-dd-yyyy") && this.addOrRemoveSelectIcon(ele);
  1043. }
  1044. else if (ele.item.text === "Long date") {
  1045. (cellInfo.format == "dddd, mmmm dd, yyyy") && this.addOrRemoveSelectIcon(ele);
  1046. }
  1047. else if (ele.item.text === "Time") {
  1048. (cellInfo.format == "h:mm:ss AM/PM") && this.addOrRemoveSelectIcon(ele);
  1049. }
  1050. else if (ele.item.text === "Percentage") {
  1051. (cellInfo.format.startsWith("0.00%")) && this.addOrRemoveSelectIcon(ele);
  1052. }
  1053. else if (ele.item.text === "Fraction") {
  1054. (cellInfo.format == "# ?/?") && this.addOrRemoveSelectIcon(ele);
  1055. }
  1056. else if (ele.item.text === "Scientific") {
  1057. (cellInfo.format == "0.00E+00") && this.addOrRemoveSelectIcon(ele);
  1058. }
  1059. else if (ele.item.text === "Text") {
  1060. (cellInfo.format == "@") && this.addOrRemoveSelectIcon(ele);
  1061. }
  1062. }
  1063. }
  1064. let numbers = ["8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26", "28", "36", "48", "72"];
  1065. if (numbers.includes(ele.item.text)) {
  1066. if (cellInfo.style && cellInfo.style.fontSize) {
  1067. if (ele.item.text == cellInfo.style.fontSize.slice(0, -2)) {
  1068. this.addOrRemoveSelectIcon(ele);
  1069. }
  1070. }
  1071. else if (ele.item.text == "11") {
  1072. this.addOrRemoveSelectIcon(ele);
  1073. }
  1074. }
  1075. let textAlign = ["Center", "Right"];
  1076. let verticalAlign = ["Middle", "Top"];
  1077. if (ele.item.text == "Left") {
  1078. cellInfo.style ? (!(cellInfo.style.textAlign) || cellInfo.style.textAlign.toLowerCase() == 'left') && this.addOrRemoveSelectIcon(ele) : this.addOrRemoveSelectIcon(ele);
  1079. }
  1080. if (ele.item.text == "Bottom") {
  1081. cellInfo.style ? (!(cellInfo.style.verticalAlign) || cellInfo.style.verticalAlign.toLowerCase() == 'bottom') && this.addOrRemoveSelectIcon(ele) : this.addOrRemoveSelectIcon(ele);
  1082. }
  1083. if (textAlign.includes(ele.item.text)) {
  1084. if ((cellInfo.style) && cellInfo.style.textAlign) {
  1085. (ele.item.text.toLowerCase() == cellInfo.style.textAlign.toLowerCase()) && this.addOrRemoveSelectIcon(ele);
  1086. }
  1087. }
  1088. if (verticalAlign.includes(ele.item.text)) {
  1089. if ((cellInfo.style) && cellInfo.style.verticalAlign) {
  1090. (ele.item.text.toLowerCase() == cellInfo.style.verticalAlign.toLowerCase()) && this.addOrRemoveSelectIcon(ele);
  1091. }
  1092. }
  1093. }
  1094. if (ele.item.parentObj.text === "Edit") {
  1095. if (!this.base.formatpainter.range) {
  1096. this.base.formatpainter.range = "A1:A1";
  1097. }
  1098. let spt = this.base.formatpainter.range.split(':');
  1099. let stCol = spt[0].replace(/[0-9]/g, '');
  1100. let endCol = spt[1].replace(/[0-9]/g, '');
  1101. let stRow = spt[0].match(/\d+$/)[0];
  1102. let endRow = spt[1].match(/\d+$/)[0];
  1103. switch (ele.item.text) {
  1104. case 'Delete row':
  1105. if (stRow === endRow) {
  1106. ele.element.innerHTML = 'Delete row ' + stRow;
  1107. }
  1108. else {
  1109. ele.element.innerHTML = 'Delete rows ' + stRow + ' - ' + endRow;
  1110. }
  1111. break;
  1112. case 'Delete column':
  1113. if (stCol === endCol) {
  1114. ele.element.innerHTML = 'Delete column ' + stCol;
  1115. }
  1116. else {
  1117. ele.element.innerHTML = 'Delete columns ' + stCol + ' - ' + endCol;
  1118. }
  1119. break;
  1120. }
  1121. }
  1122. if (ele.item.parentObj.text === "Insert") {
  1123. if (!this.base.formatpainter.range) {
  1124. this.base.formatpainter.range = "A1:A1";
  1125. }
  1126. let spt = this.base.formatpainter.range.split(':');
  1127. let stCol = spt[0].replace(/[0-9]/g, '');
  1128. let endCol = spt[1].replace(/[0-9]/g, '');
  1129. let stRow = spt[0].match(/\d+$/)[0];
  1130. let endRow = spt[1].match(/\d+$/)[0];
  1131. switch (ele.item.text) {
  1132. case 'Row above':
  1133. if (stRow !== endRow) {
  1134. ele.element.innerHTML = (this.base.formatpainter.formatIndexes[2] - this.base.formatpainter.formatIndexes[0] + 1) + ' Rows above';
  1135. }
  1136. break;
  1137. case 'Row below':
  1138. if (stRow !== endRow) {
  1139. ele.element.innerHTML = (this.base.formatpainter.formatIndexes[2] - this.base.formatpainter.formatIndexes[0] + 1) + ' Rows below';
  1140. }
  1141. break;
  1142. case 'Column left':
  1143. if (stCol !== endCol) {
  1144. ele.element.innerHTML = (this.base.formatpainter.formatIndexes[3] - this.base.formatpainter.formatIndexes[1] + 1) + ' Columns left ';
  1145. }
  1146. break;
  1147. case 'Column right':
  1148. if (stCol !== endCol) {
  1149. ele.element.innerHTML = (this.base.formatpainter.formatIndexes[3] - this.base.formatpainter.formatIndexes[1] + 1) + ' Columns right';
  1150. }
  1151. break;
  1152. }
  1153. }
  1154. if (ele.item.text === "Hidden sheets") {
  1155. this.hiddensheets = this.base.ssObj.sheets.filter(sheet => sheet.state == "Hidden");
  1156. if (this.hiddensheets.length > 0) {
  1157. let hiddenSheetNames = [];
  1158. this.hiddensheets.forEach(state => hiddenSheetNames.push({ text: state.name }));
  1159. this.ssMenubarObj.insertBefore(hiddenSheetNames, 'dummyHiddenSheet', false);
  1160. this.ssMenubarObj.removeItems(['dummyHiddenSheet'], false);
  1161. }
  1162. }
  1163. if (ele.item.text.startsWith("Upto current row (")) {
  1164. ele.element.innerHTML = "Up to current row (" + (index[0] + 1) + ")";
  1165. }
  1166. if (ele.item.text.startsWith("Upto current column (")) {
  1167. ele.element.innerHTML = "Up to current column (" + this.base.generateText(index[1] + 1) + ")";
  1168. }
  1169. if (ele.item.text.startsWith("Sort sheet by column asc")) {
  1170. ele.element.innerHTML = "Sort sheet by column " + this.base.generateText(index[1] + 1) + ", A → Z ";
  1171. }
  1172. if (ele.item.text.startsWith("Sort sheet by column dsc")) {
  1173. ele.element.innerHTML = "Sort sheet by column " + this.base.generateText(index[1] + 1) + ", Z → A ";
  1174. }
  1175. },
  1176. beforeOpen: (e) => {
  1177. (e.parentItem.text != "Special paste") && this.ssMenubarObj.enableItems(["Undo", "Redo", "Paste", "Special paste", "Hidden sheets"], false);
  1178. this.hiddensheets = this.base.ssObj.sheets.filter(sheet => sheet.state == "Hidden");
  1179. if (this.hiddensheets.length > 0) {
  1180. this.ssMenubarObj.enableItems(["Hidden sheets"], true);
  1181. }
  1182. if (menuitems.indexOf(e.parentItem.text) > -1) {
  1183. this.ssMenubarObj.showItemOnClick = false;
  1184. }
  1185. if (this.base.permissionLevel == 1) {
  1186. this.ssMenubarObj.enableItems(["Import", "Make a copy", "Freeze panes", "Hide headers", "Hide gridlines", "Freeze"], false);
  1187. }
  1188. if (e.parentItem.text === 'Icon sets') {
  1189. ej.base.closest(e.element, '.e-menu-wrapper').style.maxHeight = '450px';
  1190. ej.base.closest(e.element, '.e-menu-wrapper').style.overflowY = 'scroll';
  1191. }
  1192. if (e.items.find(x => x.text == "Undo") != null) {
  1193. if (this.base.ssObj.undoredoModule.undoCollection.length > 0) {
  1194. this.ssMenubarObj.enableItems(["Undo"], true);
  1195. }
  1196. }
  1197. if (e.items.find(x => x.text == "Redo") != null) {
  1198. if (this.base.ssObj.undoredoModule.redoCollection.length > 0) {
  1199. this.ssMenubarObj.enableItems(["Redo"], true);
  1200. }
  1201. }
  1202. if (e.items.find(x => x.text == "Paste") != null) {
  1203. if (this.base.ssObj.clipboardModule.copiedInfo != undefined) {
  1204. this.ssMenubarObj.enableItems(["Paste", "Special paste"], true);
  1205. }
  1206. }
  1207. },
  1208. onOpen: (e) => {
  1209. if (e.parentItem.text === 'Icon sets') {
  1210. ej.base.closest(e.element, '.e-menu-wrapper').style.maxHeight = '450px';
  1211. ej.base.closest(e.element, '.e-menu-wrapper').style.overflowY = 'scroll';
  1212. }
  1213. },
  1214. select: (e) => {
  1215. let gSheet = this.base.ssObj.biz.getActiveSheet();
  1216. var indexes = this.base.ssObj.biz.getIndexes();
  1217. let addr = this.base.ssObj.biz.getActiveSheet().selectedRange;
  1218. if (document.getElementById("DocumentViewer_number_format"))
  1219. var numberFormat = document.getElementById("DocumentViewer_number_format").ej2_instances[0];
  1220. if (document.getElementById("DocumentViewer_font_size"))
  1221. var fontSize = document.getElementById("DocumentViewer_font_size").ej2_instances[0];
  1222. if (document.getElementById("DocumentViewer_text_align"))
  1223. var textAlign = document.getElementById("DocumentViewer_text_align").ej2_instances[0];
  1224. if (document.getElementById("DocumentViewer_merge"))
  1225. var merge = document.getElementById("DocumentViewer_merge").ej2_instances[0];
  1226. if (document.getElementById("DocumentViewer_clear"))
  1227. var clear = document.getElementById("DocumentViewer_clear").ej2_instances[0];
  1228. if (document.getElementById("DocumentViewer_vertical_align"))
  1229. var verticalAlign = document.getElementById("DocumentViewer_vertical_align").ej2_instances[0];
  1230. if (document.getElementById("DocumentViewer_paste_dropdownbtn"))
  1231. var specialpaste = document.getElementById("DocumentViewer_paste_dropdownbtn").ej2_instances[0];
  1232. let verticalElem = this.base.ssObj.element.querySelector('.e-main-panel');
  1233. let horizontalElem = this.base.ssObj.getScrollElement();
  1234. let hiddenSheetNames = [];
  1235. this.base.ssObj.sheets.filter(sheet => sheet.state == "Hidden").forEach(state => hiddenSheetNames.push(state.name));
  1236. switch (e.item.text) {
  1237. case 'Undo':
  1238. document.getElementById(this.base.ssObj.element.id + "_undo").firstElementChild.click();
  1239. break;
  1240. case 'Redo':
  1241. document.getElementById(this.base.ssObj.element.id + "_redo").firstElementChild.click();
  1242. break;
  1243. case 'Copy':
  1244. document.getElementById(this.base.ssObj.element.id + "_copy").firstElementChild.click();
  1245. break;
  1246. case 'Cut':
  1247. document.getElementById(this.base.ssObj.element.id + "_cut").firstElementChild.click();
  1248. break;
  1249. case 'Paste':
  1250. document.getElementById(this.base.ssObj.element.id + "_paste").firstElementChild.click();
  1251. break;
  1252. case 'All':
  1253. specialpaste.trigger('select', { item: specialpaste.items[0] });
  1254. break;
  1255. case 'Values':
  1256. specialpaste.trigger('select', { item: specialpaste.items[1] });
  1257. break;
  1258. case 'Formats':
  1259. specialpaste.trigger('select', { item: specialpaste.items[2] });
  1260. break;
  1261. case 'Find and replace':
  1262. document.getElementById(this.base.ssObj.element.id + "_findbtn").firstElementChild.click();
  1263. break;
  1264. case 'Delete value':
  1265. this.base.ssObj.editModule.editingHandler('delete');
  1266. this.base.download.ssAutoSave({ action: "cellSave", eventArgs: { address: "sheet!" + this.base.ssObj.biz.getRange() } }, this.base, true);
  1267. break;
  1268. case 'Delete row':
  1269. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_delete_row' } });
  1270. break;
  1271. case 'Delete column':
  1272. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_delete_column' } });
  1273. break;
  1274. case 'Delete cells and shift up':
  1275. this.base.formatpainter.deleteShiftUp(addr);
  1276. break;
  1277. case 'Delete cells and shift left':
  1278. this.base.formatpainter.deleteShiftLeft(addr);
  1279. break;
  1280. case 'Clear Notes':
  1281. this.base.formatpainter.clearComment();
  1282. break;
  1283. case "Spelling":
  1284. this.base.spellchecker.renderSpellDialog();
  1285. break;
  1286. case "Bold":
  1287. document.getElementById("DocumentViewer_bold").click();
  1288. break;
  1289. case "Italic":
  1290. document.getElementById("DocumentViewer_italic").click();
  1291. break;
  1292. case "Underline":
  1293. document.getElementById("DocumentViewer_underline").click();
  1294. break;
  1295. case "Strikethrough":
  1296. document.getElementById("DocumentViewer_line-through").click();
  1297. ;
  1298. break;
  1299. case "New":
  1300. this.processNewSheet();
  1301. break;
  1302. case "Open":
  1303. debugger;
  1304. this.renderOpenNewDialogue();
  1305. break;
  1306. case "Import":
  1307. this.getAll(0);
  1308. break;
  1309. case "Make a copy":
  1310. this.documentCopy();
  1311. break;
  1312. case "Microsoft excel (.xlsx)":
  1313. this.fileDownload.downloadDocumentFile(FileId, documentGroup, filename, ExcelFormat.Xlsx, "");
  1314. break;
  1315. case "Microsoft excel 97-2003 (.xls)":
  1316. this.fileDownload.downloadDocumentFile(FileId, documentGroup, filename, ExcelFormat.Xls, "");
  1317. break;
  1318. case "Comma-Seperated values (.csv)":
  1319. this.fileDownload.downloadDocumentFile(FileId, documentGroup, filename, ExcelFormat.CSV, "");
  1320. break;
  1321. case "PDF document (.pdf)":
  1322. this.fileDownload.downloadDocumentFile(FileId, documentGroup, filename, ExcelFormat.PDF, "");
  1323. break;
  1324. case "OpenDocument spreadsheet (.ods)":
  1325. this.fileDownload.downloadDocumentFile(FileId, documentGroup, filename, ExcelFormat.ODS, "");
  1326. break;
  1327. case "Close":
  1328. this.closePopup();
  1329. break;
  1330. case "Show headers":
  1331. case "Hide headers":
  1332. this.imageInCell = false;
  1333. this.base.ssObj.ribbonModule.toolbarClicked({ item: { id: this.base.ssObj.element.id + "_headers" }, name: "clicked", originalEvent: { target: this.base.ssObj.element } });
  1334. break;
  1335. case "Show gridlines":
  1336. case "Hide gridlines":
  1337. this.imageInCell = false;
  1338. this.base.ssObj.element.querySelector('[data-id="tabitem_5"]').click();
  1339. this.base.ssObj.ribbonModule.toolbarClicked({ item: { id: this.base.ssObj.element.id + "_gridlines" }, name: "clicked", originalEvent: { target: this.base.ssObj.element } });
  1340. this.base.ssObj.element.querySelector('[data-id="tabitem_1"]').click();
  1341. break;
  1342. case "Freeze panes":
  1343. this.imageInCell = false;
  1344. let indexes = this.base.ssObj.biz.getIndexes();
  1345. if (gSheet.frozenColumns != 0 || gSheet.frozenRows != 0) {
  1346. this.base.ssObj.Unfreeze();
  1347. }
  1348. else {
  1349. this.base.ssObj.freezePanes(indexes[0] + 1, indexes[1] + 1);
  1350. }
  1351. break;
  1352. case "No rows":
  1353. this.imageInCell = false;
  1354. gSheet.frozenRows = 0;
  1355. break;
  1356. case "1 row":
  1357. this.imageInCell = false;
  1358. verticalElem.scrollTop = 0;
  1359. setTimeout(() => { gSheet.frozenRows = 1; }, 0);
  1360. break;
  1361. case "2 rows":
  1362. this.imageInCell = false;
  1363. verticalElem.scrollTop = 0;
  1364. setTimeout(() => { gSheet.frozenRows = 2; }, 0);
  1365. break;
  1366. case "No columns":
  1367. this.imageInCell = false;
  1368. gSheet.frozenColumns = 0;
  1369. break;
  1370. case "1 column":
  1371. this.imageInCell = false;
  1372. horizontalElem.scrollLeft = 0;
  1373. setTimeout(() => { gSheet.frozenColumns = 1; }, 0);
  1374. break;
  1375. case "2 columns":
  1376. this.imageInCell = false;
  1377. horizontalElem.scrollLeft = 0;
  1378. setTimeout(() => { gSheet.frozenColumns = 2; }, 0);
  1379. break;
  1380. case "Formula bar":
  1381. let formulaBarDisplay = document.getElementsByClassName("e-formula-bar-panel")[0];
  1382. let currentHeight = document.getElementById("DocumentViewer_sheet_panel").offsetHeight;
  1383. if (formulaBarDisplay.style.display == "") {
  1384. formulaBarDisplay.style.display = "none";
  1385. document.getElementById("DocumentViewer_sheet_panel").style.height = currentHeight + 24 + "px";
  1386. }
  1387. else {
  1388. formulaBarDisplay.style.display = "";
  1389. document.getElementById("DocumentViewer_sheet_panel").style.height = currentHeight - 24 + "px";
  1390. }
  1391. break;
  1392. case "Show formula":
  1393. this.setShowFormula();
  1394. break;
  1395. case "Full screen":
  1396. this.imageInCell = false;
  1397. Unibase.Apps.Collaboration.Components.Fullscreen.Instance().refreshSpreadsheetHeight(this.base.ssObj);
  1398. break;
  1399. case 'Row above':
  1400. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_insert_row_above' } });
  1401. break;
  1402. case 'Row below':
  1403. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_insert_row_below' } });
  1404. break;
  1405. case 'Column left':
  1406. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_insert_column_before' } });
  1407. break;
  1408. case 'Column right':
  1409. this.base.ssObj.contextMenuModule.selectHandler({ item: { id: this.base.ssObj.element.id + '_cmenu_insert_column_after' } });
  1410. break;
  1411. case 'Cells and shift down':
  1412. this.base.formatpainter.insertShiftDown(addr);
  1413. break;
  1414. case 'Cells and shift right':
  1415. this.base.formatpainter.insertShiftRight(addr);
  1416. break;
  1417. case "Link":
  1418. this.imageInCell = false;
  1419. this.base.ssObj.ribbonModule.getHyperlinkDlg();
  1420. break;
  1421. case "Note":
  1422. this.base.formatpainter.insertNote();
  1423. break;
  1424. case "Image over cells":
  1425. this.imageInCell = false;
  1426. ej.base.select('#' + this.base.ssObj.element.id + '_imageUpload', this.base.ssObj.element).click();
  1427. break;
  1428. case "Image in cell":
  1429. this.imageInCell = true;
  1430. ej.base.select('#' + this.base.ssObj.element.id + '_imageUpload', this.base.ssObj.element).click();
  1431. break;
  1432. case "Clustered column":
  1433. this.imageInCell = false;
  1434. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "column_chart", id: "clusteredColumn", isChart: true, name: "insertChart" });
  1435. break;
  1436. case "Stacked column":
  1437. this.imageInCell = false;
  1438. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "column_chart", id: "stackedColumn", isChart: true, name: "insertChart" });
  1439. break;
  1440. case "100% stacked column":
  1441. this.imageInCell = false;
  1442. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "column_chart", id: "stackedColumn100", isChart: true, name: "insertChart" });
  1443. break;
  1444. case "Clustered bar":
  1445. this.imageInCell = false;
  1446. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "bar_chart", id: "clusteredBar", isChart: true, name: "insertChart" });
  1447. break;
  1448. case "Stacked bar":
  1449. this.imageInCell = false;
  1450. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "bar_chart", id: "stackedBar", isChart: true, name: "insertChart" });
  1451. break;
  1452. case "100% stacked bar":
  1453. this.imageInCell = false;
  1454. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "bar_chart", id: "stackedBar100", isChart: true, name: "insertChart" });
  1455. break;
  1456. case "Clustered area":
  1457. this.imageInCell = false;
  1458. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "area_chart", id: "area", isChart: true, name: "insertChart" });
  1459. break;
  1460. case "Stacked area":
  1461. this.imageInCell = false;
  1462. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "area_chart", id: "stackedArea", isChart: true, name: "insertChart" });
  1463. break;
  1464. case "100% stacked area":
  1465. this.imageInCell = false;
  1466. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "area_chart", id: "stackedArea100", isChart: true, name: "insertChart" });
  1467. break;
  1468. case "Pie":
  1469. this.imageInCell = false;
  1470. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "pie_doughnut_chart", id: "pie", isChart: true, name: "insertChart" });
  1471. break;
  1472. case "Doughnut":
  1473. this.imageInCell = false;
  1474. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "pie_doughnut_chart", id: "doughnut", isChart: true, name: "insertChart" });
  1475. break;
  1476. case "Clustered line":
  1477. this.imageInCell = false;
  1478. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "line_chart", id: "line", isChart: true, name: "insertChart" });
  1479. break;
  1480. case "Stacked line":
  1481. this.imageInCell = false;
  1482. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "line_chart", id: "stackedLine", isChart: true, name: "insertChart" });
  1483. break;
  1484. case "100% stacked line":
  1485. this.imageInCell = false;
  1486. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "line_chart", id: "stackedLine100", isChart: true, name: "insertChart" });
  1487. break;
  1488. case "Scatter chart":
  1489. this.imageInCell = false;
  1490. this.base.ssObj.spreadsheetChartModule.insertChartHandler({ action: "scatter_chart", id: "scatter", isChart: true, name: "insertChart" });
  1491. break;
  1492. case "Function":
  1493. this.imageInCell = false;
  1494. this.base.ssObj.element.querySelector('.e-insert-function').click();
  1495. break;
  1496. case 'Split text to columns':
  1497. this.base.formatpainter.initSplitDialog();
  1498. break;
  1499. case "Trim whitespaces":
  1500. this.spreadSheetTrim();
  1501. break;
  1502. case "Protect sheet":
  1503. this.base.ssObj.setSheetPropertyOnMute(gSheet, "isProtected", !gSheet.isProtected);
  1504. this.base.ssObj.notify("applyProtect", { isActive: !gSheet.isProtected });
  1505. break;
  1506. case "Protect workbook":
  1507. this.base.ssObj.ribbonModule.toolbarClicked({ item: { id: this.base.ssObj.element.id + "_protectworkbook" }, name: "clicked", originalEvent: { target: this.base.ssObj.element } });
  1508. break;
  1509. case "Data validation":
  1510. this.base.ssObj.notify('initiatedatavalidation', null);
  1511. break;
  1512. case "Highlight invalid data":
  1513. this.base.ssObj.addInvalidHighlight();
  1514. break;
  1515. case "Clear highlight":
  1516. this.base.ssObj.removeInvalidHighlight();
  1517. break;
  1518. case "Clear validation":
  1519. this.base.ssObj.notify('removeDataValidation', null);
  1520. break;
  1521. case "Remove duplicates":
  1522. this.dialogue.renderDuplicateDailouge();
  1523. break;
  1524. case "General":
  1525. numberFormat.trigger('select', { item: numberFormat.items[0] });
  1526. break;
  1527. case "Number":
  1528. numberFormat.trigger('select', { item: numberFormat.items[1] });
  1529. break;
  1530. case "Currency":
  1531. numberFormat.trigger('select', { item: numberFormat.items[2] });
  1532. break;
  1533. case "Currency (rounded)":
  1534. this.updateCurrencyRounded();
  1535. numberFormat.trigger('select', { item: numberFormat.items[2] });
  1536. break;
  1537. case "Accounting":
  1538. numberFormat.trigger('select', { item: numberFormat.items[3] });
  1539. break;
  1540. case "Short date":
  1541. numberFormat.trigger('select', { item: numberFormat.items[4] });
  1542. break;
  1543. case "Long date":
  1544. numberFormat.trigger('select', { item: numberFormat.items[5] });
  1545. break;
  1546. case "Time":
  1547. numberFormat.trigger('select', { item: numberFormat.items[6] });
  1548. break;
  1549. case "Percentage":
  1550. numberFormat.trigger('select', { item: numberFormat.items[7] });
  1551. break;
  1552. case "Fraction":
  1553. numberFormat.trigger('select', { item: numberFormat.items[8] });
  1554. break;
  1555. case "Scientific":
  1556. numberFormat.trigger('select', { item: numberFormat.items[9] });
  1557. break;
  1558. case "Text":
  1559. numberFormat.trigger('select', { item: numberFormat.items[10] });
  1560. break;
  1561. case "8":
  1562. fontSize.trigger('select', { item: fontSize.items[0] });
  1563. break;
  1564. case "9":
  1565. fontSize.trigger('select', { item: fontSize.items[1] });
  1566. break;
  1567. case "10":
  1568. fontSize.trigger('select', { item: fontSize.items[2] });
  1569. break;
  1570. case "11":
  1571. fontSize.trigger('select', { item: fontSize.items[3] });
  1572. break;
  1573. case "12":
  1574. fontSize.trigger('select', { item: fontSize.items[4] });
  1575. break;
  1576. case "14":
  1577. fontSize.trigger('select', { item: fontSize.items[5] });
  1578. break;
  1579. case "16":
  1580. fontSize.trigger('select', { item: fontSize.items[6] });
  1581. break;
  1582. case "18":
  1583. fontSize.trigger('select', { item: fontSize.items[7] });
  1584. break;
  1585. case "20":
  1586. fontSize.trigger('select', { item: fontSize.items[8] });
  1587. break;
  1588. case "22":
  1589. fontSize.trigger('select', { item: fontSize.items[9] });
  1590. break;
  1591. case "24":
  1592. fontSize.trigger('select', { item: fontSize.items[10] });
  1593. break;
  1594. case "26":
  1595. fontSize.trigger('select', { item: fontSize.items[11] });
  1596. break;
  1597. case "28":
  1598. fontSize.trigger('select', { item: fontSize.items[12] });
  1599. break;
  1600. case "36":
  1601. fontSize.trigger('select', { item: fontSize.items[13] });
  1602. break;
  1603. case "48":
  1604. fontSize.trigger('select', { item: fontSize.items[14] });
  1605. break;
  1606. case "72":
  1607. fontSize.trigger('select', { item: fontSize.items[15] });
  1608. break;
  1609. case "Left":
  1610. textAlign.trigger('select', { item: textAlign.items[0] });
  1611. break;
  1612. case "Center":
  1613. textAlign.trigger('select', { item: textAlign.items[1] });
  1614. break;
  1615. case "Right":
  1616. textAlign.trigger('select', { item: textAlign.items[2] });
  1617. break;
  1618. case "Top":
  1619. verticalAlign.trigger('select', { item: verticalAlign.items[0] });
  1620. break;
  1621. case "Middle":
  1622. verticalAlign.trigger('select', { item: verticalAlign.items[1] });
  1623. break;
  1624. case "Bottom":
  1625. verticalAlign.trigger('select', { item: verticalAlign.items[2] });
  1626. break;
  1627. case "Merge all":
  1628. merge.trigger('select', { item: merge.items[0] });
  1629. break;
  1630. case "Merge vertically":
  1631. merge.trigger('select', { item: merge.items[2] });
  1632. break;
  1633. case "Merge horizontally":
  1634. merge.trigger('select', { item: merge.items[1] });
  1635. break;
  1636. case "Unmerge":
  1637. merge.trigger('select', { item: merge.items[4] });
  1638. break;
  1639. case "Wrap text":
  1640. document.getElementById("DocumentViewer_wrap").click();
  1641. break;
  1642. case "Clear all":
  1643. clear.trigger('select', { item: clear.items[0] });
  1644. break;
  1645. case "Clear formats":
  1646. clear.trigger('select', { item: clear.items[1] });
  1647. break;
  1648. case "Clear contents":
  1649. clear.trigger('select', { item: clear.items[2] });
  1650. break;
  1651. case "Clear hyperlinks":
  1652. clear.trigger('select', { item: clear.items[3] });
  1653. this.base.download.ssAutoSave({ action: 'multipleCells', eventArgs: { range: addr } }, this.base, true);
  1654. break;
  1655. case "Greater than":
  1656. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Greater Than...", name: "initiateConditionalFormat" });
  1657. break;
  1658. case "Less than":
  1659. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Less Than...", name: "initiateConditionalFormat" });
  1660. break;
  1661. case "Between":
  1662. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Between...", name: "initiateConditionalFormat" });
  1663. break;
  1664. case "Equal to":
  1665. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Equal To...", name: "initiateConditionalFormat" });
  1666. break;
  1667. case "Text that contains":
  1668. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Text that Contains...", name: "initiateConditionalFormat" });
  1669. break;
  1670. case "A date occuring":
  1671. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "A Date Occuring...", name: "initiateConditionalFormat" });
  1672. break;
  1673. case "Duplicate values":
  1674. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Duplicate Values...", name: "initiateConditionalFormat" });
  1675. break;
  1676. case "Top 10 items":
  1677. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Top 10 Items...", name: "initiateConditionalFormat" });
  1678. break;
  1679. case "Top 10%":
  1680. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Top 10 %...", name: "initiateConditionalFormat" });
  1681. break;
  1682. case "Bottom 10 items":
  1683. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Bottom 10 Items...", name: "initiateConditionalFormat" });
  1684. break;
  1685. case "Bottom 10%":
  1686. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Bottom 10 %...", name: "initiateConditionalFormat" });
  1687. break;
  1688. case "Above average":
  1689. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Above Average...", name: "initiateConditionalFormat" });
  1690. break;
  1691. case "Below average":
  1692. this.base.ssObj.conditionalFormattingModule.initiateCFHandler({ action: "Below Average...", name: "initiateConditionalFormat" });
  1693. break;
  1694. case "Blue data bar":
  1695. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "BlueDataBar", name: "setCF" });
  1696. break;
  1697. case "Green data bar":
  1698. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "GreenDataBar", name: "setCF" });
  1699. break;
  1700. case "Red data bar":
  1701. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "RedDataBar", name: "setCF" });
  1702. break;
  1703. case "Orange data bar":
  1704. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "OrangeDataBar", name: "setCF" });
  1705. break;
  1706. case "Light blue data bar":
  1707. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "LightBlueDataBar", name: "setCF" });
  1708. break;
  1709. case "Purple data bar":
  1710. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_databars", id: "PurpleDataBar", name: "setCF" });
  1711. break;
  1712. case "Green - yellow - red":
  1713. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "GYRColorScale", name: "setCF" });
  1714. break;
  1715. case "Red - yellow - green":
  1716. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "RYGColorScale", name: "setCF" });
  1717. break;
  1718. case "Green - white - red":
  1719. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "GWRColorScale", name: "setCF" });
  1720. break;
  1721. case "Red - white - green":
  1722. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "RWGColorScale", name: "setCF" });
  1723. break;
  1724. case "Blue - white - red":
  1725. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "BWRColorScale", name: "setCF" });
  1726. break;
  1727. case "Red - white - Blue":
  1728. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "RWBColorScale", name: "setCF" });
  1729. break;
  1730. case "White - red":
  1731. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "WRColorScale", name: "setCF" });
  1732. break;
  1733. case "Red - white":
  1734. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "RWColorScale", name: "setCF" });
  1735. break;
  1736. case "White - green":
  1737. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "WGColorScale", name: "setCF" });
  1738. break;
  1739. case "Green - white":
  1740. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "GWColorScale", name: "setCF" });
  1741. break;
  1742. case "Green - yellow":
  1743. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "GYColorScale", name: "setCF" });
  1744. break;
  1745. case "Yellow - green":
  1746. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_colorscales", id: "YGColorScale", name: "setCF" });
  1747. break;
  1748. case "3 arrows (colored)":
  1749. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeArrows", name: "setCF" });
  1750. break;
  1751. case "3 arrows (gray)":
  1752. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeArrowsGray", name: "setCF" });
  1753. break;
  1754. case "4 arrows (colored)":
  1755. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FourArrows", name: "setCF" });
  1756. break;
  1757. case "4 arrows (gray)":
  1758. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FourArrowsGray", name: "setCF" });
  1759. break;
  1760. case "5 arrows (colored)":
  1761. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveArrows", name: "setCF" });
  1762. break;
  1763. case "5 arrows (gray)":
  1764. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveArrowsGray", name: "setCF" });
  1765. break;
  1766. case "3 triangles":
  1767. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeTriangles", name: "setCF" });
  1768. break;
  1769. case "3 traffice lights (unrimmed)":
  1770. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeTrafficLights1", name: "setCF" });
  1771. break;
  1772. case "3 traffice lights (rimmed)":
  1773. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeTrafficLights2", name: "setCF" });
  1774. break;
  1775. case "3 signs":
  1776. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeSigns", name: "setCF" });
  1777. break;
  1778. case "4 traffice lights":
  1779. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FourTrafficLights", name: "setCF" });
  1780. break;
  1781. case "Red to black":
  1782. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FourRedToBlack", name: "setCF" });
  1783. break;
  1784. case "3 symbols (circled)":
  1785. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeSymbols", name: "setCF" });
  1786. break;
  1787. case "3 symbols (uncircled)":
  1788. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeSymbols2", name: "setCF" });
  1789. break;
  1790. case "3 flags":
  1791. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeFlags", name: "setCF" });
  1792. break;
  1793. case "3 stars":
  1794. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "ThreeStars", name: "setCF" });
  1795. break;
  1796. case "5 quarters":
  1797. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveQuarters", name: "setCF" });
  1798. break;
  1799. case "5 quarters":
  1800. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveQuarters", name: "setCF" });
  1801. break;
  1802. case "4 ratings":
  1803. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FourRating", name: "setCF" });
  1804. break;
  1805. case "5 ratings":
  1806. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveRating", name: "setCF" });
  1807. break;
  1808. case "5 boxes":
  1809. this.base.ssObj.conditionalFormattingModule.setCFHandler({ action: "cf_iconsets", id: "FiveBoxes", name: "setCF" });
  1810. break;
  1811. case "Selected cells":
  1812. this.base.ssObj.notify('clearCFRule', { range: gSheet.selectedRange, isPublic: !1 });
  1813. break;
  1814. case "Entire sheet":
  1815. let range = ej.spreadsheet.getRangeAddress([0, 0, gSheet.rowCount - 1, gSheet.colCount - 1]);
  1816. this.base.ssObj.conditionalFormat = null;
  1817. this.base.ssObj.notify("clearCFRule", { range: range, isPublic: false });
  1818. break;
  1819. }
  1820. if (hiddenSheetNames.includes(e.item.text)) {
  1821. this.ssMenubarObj.insertBefore([{ text: 'dummyHiddenSheet' }], e.item.text, false);
  1822. this.ssMenubarObj.removeItems([e.item.text], false);
  1823. this.base.ssObj.sheetTabsModule.updateSheetTab({ idx: this.base.ssObj.biz.getSheetIndexByname(e.item.text) });
  1824. }
  1825. else if (e.item.text === "Upto current row ()") {
  1826. this.base.ssObj.sheets[this.base.getSheetIndex()].frozenRows = indexes[0] + 1;
  1827. }
  1828. else if (e.item.text === "Upto current column ()") {
  1829. this.base.ssObj.sheets[this.base.getSheetIndex()].frozenColumns = indexes[1] + 1;
  1830. }
  1831. else if (e.item.text === 'Sort sheet by column asc, A → Z') {
  1832. this.base.ssObj.sort();
  1833. }
  1834. else if (e.item.text === 'Sort sheet by column dsc, Z → A') {
  1835. this.base.ssObj.sort({ sortDescriptors: { order: 'Descending' } });
  1836. }
  1837. const freezeActions = ["Upto current row ()", "Upto current column ()", "No rows", "1 row", "2 rows", "No columns", "1 column", "2 columns", "Freeze panes"];
  1838. if (freezeActions.includes(e.item.text)) {
  1839. setTimeout(() => {
  1840. let sheet = this.base.ssObj.biz.getActiveSheet();
  1841. this.base.download.ssAutoSave({ action: "freezePanes", eventArgs: { row: sheet.frozenRows, column: sheet.frozenColumns, sheetIdx: this.base.getSheetIndex() } }, this.base, true);
  1842. }, 500);
  1843. }
  1844. },
  1845. items: menuItems,
  1846. });
  1847. this.ssMenubarObj.appendTo("#menu");
  1848. }
  1849. }
  1850. setShowFormula() {
  1851. this.base.showFormula ? (this.base.showFormula = false) : (this.base.showFormula = true);
  1852. this.base.ssObj.refresh();
  1853. }
  1854. processNewSheet() {
  1855. var _type = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_folderid");
  1856. var type;
  1857. if (_type != undefined) {
  1858. type = btoa(_type.Value.toString());
  1859. }
  1860. else {
  1861. type = 0;
  1862. }
  1863. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFile("apps/collaboration/components/common/util.js", () => {
  1864. let urlStr = Unibase.Apps.Collaboration.Components.Common.Util.Instance().makeid(40);
  1865. window.open(window.origin + "#/newdocuments/" + type + "/" + urlStr + "/newexcel");
  1866. });
  1867. }
  1868. addOrRemoveSelectIcon(ele) {
  1869. if (!ele.element.firstElementChild.classList.contains("biz-ss-selecticon")) {
  1870. ele.element.firstElementChild.classList.add("biz-ss-selecticon");
  1871. }
  1872. }
  1873. closePopup() {
  1874. this.base.download.ssAutoSave({ action: "destroy" }, this.base, false);
  1875. if (!this.base.NewDocument) {
  1876. Unibase.Apps.Collaboration.Components.DocConnector.Instance().closeDoc();
  1877. }
  1878. }
  1879. ssimportedFileDataDailog() {
  1880. if (!document.getElementById('file-label')) {
  1881. var importSelectButton = new ej.buttons.Button({ cssClass: `e-flat`, content: 'Import Data' });
  1882. var importCancelButton = new ej.buttons.Button({ cssClass: `e-flat`, content: 'Cancel' });
  1883. var importFileDropDownListData = ['Create new spreadsheet', 'insert new sheet', 'Replace spreadsheet'];
  1884. this._url = window.location.origin + "/#/documents/";
  1885. this.ssImprotedFileDailogueObj = new ej.popups.Dialog({
  1886. isModal: true,
  1887. header: 'Import File',
  1888. content: `<div id='file-label'>File</div>
  1889. <div id='importedfilename'></div>
  1890. <div id='sucessfullmessage' style="display:none">File imported successfully. <a id="importcreatenewdocument" href="${this._url}" target="blank">Open now »</a></div>
  1891. <br><br>
  1892. <div id='import-location'>Import location</div>
  1893. <div id="import-dropdowncontainer">
  1894. <div id='import-dropdown'></div>
  1895. </div>
  1896. <br>
  1897. <button id="importdata-select-btn"></button>
  1898. <button id="importdata-cancel-btn"></button>`,
  1899. target: document.getElementById("container"),
  1900. width: '420px',
  1901. height: '290px',
  1902. animationSettings: { effect: 'Zoom' },
  1903. });
  1904. this.ssImprotedFileDailogueObj.appendTo('#importfile-container');
  1905. this.dropdownObj = new ej.dropdowns.DropDownList({
  1906. dataSource: importFileDropDownListData,
  1907. placeholder: "Select a Import",
  1908. popupHeight: "200px",
  1909. width: '345px',
  1910. });
  1911. this.dropdownObj.appendTo('#import-dropdown');
  1912. this.dropdownObj.index = 0;
  1913. importSelectButton.appendTo('#importdata-select-btn');
  1914. importCancelButton.appendTo('#importdata-cancel-btn');
  1915. document.getElementById('importedfilename').innerHTML = this.importedFile.files[0].name;
  1916. }
  1917. else {
  1918. this.ssImportDialougObj.show();
  1919. }
  1920. document.getElementById('importdata-cancel-btn').addEventListener('click', () => {
  1921. this.ssImportDialougObj.hide();
  1922. if (document.getElementById('importfile-upload-select-btn'))
  1923. document.getElementById('importfile-upload-select-btn').classList.add('e-disabled');
  1924. (this.importedFile) && (this.importedFile.value = null);
  1925. document.getElementById("importedfilename").innerHTML = "";
  1926. if (document.getElementById('filename'))
  1927. document.getElementById('filename').innerHTML = "";
  1928. this.hideImportandImportFileDialog();
  1929. });
  1930. document.getElementById('importdata-select-btn').addEventListener('click', () => {
  1931. var documentId = this.documentId;
  1932. var dropdownSelectedValue = this.dropdownObj.value;
  1933. if (dropdownSelectedValue == "Create new spreadsheet") {
  1934. this.importSpreadSheetDocument();
  1935. }
  1936. else if (dropdownSelectedValue == "insert new sheet") {
  1937. this.insertSheet();
  1938. this.hideImportandImportFileDialog();
  1939. }
  1940. else if (dropdownSelectedValue == "Replace spreadsheet") {
  1941. this.importReplaceSpreadSheet();
  1942. this.hideImportandImportFileDialog();
  1943. }
  1944. });
  1945. }
  1946. hideImportandImportFileDialog() {
  1947. if (this.ssImportDialougObj) {
  1948. this.ssImportDialougObj.destroy();
  1949. this.ssImportDialougObj = null;
  1950. }
  1951. if (this.ssImprotedFileDailogueObj) {
  1952. this.ssImprotedFileDailogueObj.destroy();
  1953. this.ssImprotedFileDailogueObj = null;
  1954. }
  1955. }
  1956. formula(sheet, formula) {
  1957. var range = this.base.ssObj.biz.getIndexes();
  1958. this.cellRowStart = range[0];
  1959. this.cellColStart = range[1];
  1960. this.cellRowEnd = range[2];
  1961. this.cellColEnd = range[3];
  1962. let noOfRow = this.cellRowEnd - this.cellRowStart;
  1963. let noOfCol = this.cellColEnd - this.cellColStart;
  1964. let editDiv = document.getElementById("DocumentViewer_edit");
  1965. if (noOfRow == 0 && noOfCol == 0) {
  1966. this.base.ssObj.startEdit();
  1967. setTimeout(() => {
  1968. this.base.ssObj.startEdit();
  1969. editDiv.textContent = "=" + formula + "()";
  1970. }, 0);
  1971. }
  1972. else if (noOfRow == 0 && noOfCol > 0) {
  1973. let formulaRange = this.base.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.base.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1);
  1974. if (this.base.getSheetIndex() >= 0) {
  1975. this.base.ssObj.selectRange(this.base.generateHeaderText(this.cellColEnd + 2) + (this.cellRowStart + 1) + ":" + this.base.generateHeaderText(this.cellColEnd + 2) + (this.cellRowStart + 1));
  1976. setTimeout(() => {
  1977. this.base.ssObj.startEdit();
  1978. editDiv.textContent = "=" + formula + "(" + formulaRange + ")";
  1979. }, 0);
  1980. }
  1981. }
  1982. else if (noOfRow >= 1) {
  1983. let col = this.base.generateHeaderText(this.cellColStart + 1) + (this.cellRowStart + 1) + ":" + this.base.generateHeaderText(this.cellColEnd + 1) + (this.cellRowEnd + 1);
  1984. this.base.ssObj.notify("initiateFormulaReference", { range: col, formulaSheetIdx: this.base.getSheetIndex() });
  1985. if (this.base.getSheetIndex() >= 0) {
  1986. this.base.ssObj.selectRange(this.base.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 2) + ":" + this.base.generateHeaderText(this.cellColStart + 1) + (this.cellRowEnd + 2));
  1987. setTimeout(() => {
  1988. this.base.ssObj.startEdit();
  1989. editDiv.textContent = "=" + formula + "(" + col + ")";
  1990. }, 0);
  1991. }
  1992. }
  1993. setTimeout(() => {
  1994. var el = this.base.ssObj.element.querySelector('#' + this.base.ssObj.element.id + '_edit');
  1995. ;
  1996. let range = document.createRange();
  1997. var sel = window.getSelection();
  1998. range.setStart(el.childNodes[0], el.innerHTML.length - 1);
  1999. range.collapse(true);
  2000. sel.removeAllRanges();
  2001. sel.addRange(range);
  2002. this.base.ssObj.isEdit = true;
  2003. }, 200);
  2004. }
  2005. getFormulaBtnDdb() {
  2006. var formulaList = [{
  2007. text: 'SUM', items: [
  2008. { iconCss: 'e-icons e-selected-icon', id: "_1px" }, { id: "_2px" },
  2009. { id: "_3px" }, { id: "_dashed" },
  2010. { id: "_dotted" }, { id: "_double" }
  2011. ]
  2012. }, { text: 'AVERAGE' }, { text: 'COUNT' }, { text: 'MAX' }, { text: 'MIN' },
  2013. { separator: true }, { text: 'ABS' }, { text: 'AND' }, { text: 'AVERAGE' }, { text: 'AVERAGEA' },
  2014. { text: 'AVERAGEIF' }, { text: 'AVERAGEIFS' }, { text: 'CEILING' }, { text: 'CHOOSE' }, { text: 'CONCAT' },
  2015. { text: 'CONCATENATE' }, { text: 'COUNT' }, { text: 'COUNTA' }, { text: 'COUNTIF' }, { text: 'COUNTIFS' },
  2016. { text: 'DATE' }, { text: 'DAY' }, { text: 'DAYS' }, { text: 'EXP' }, { text: 'FIND' }, { text: 'FLOOR' },
  2017. { text: 'GEOMEAN' }, { text: 'IF' }, { text: 'IFERROR' }, { text: 'IFS' }, { text: 'INDEX' },
  2018. { text: 'INT' }, { text: 'INTERCEPT' }, { text: 'ISNUMBER' }, { text: 'LN' }, { text: 'LOG' },
  2019. { text: 'MATCH' }, { text: 'MAX' }, { text: 'MIN' }, { text: 'OR' }, { text: 'POWER' },
  2020. { text: 'PRODUCT' }, { text: 'RADIANS' }, { text: 'RAND' }, { text: 'RANDBETWEEN' }, { text: 'ROUND' },
  2021. { text: 'ROUNDUP' }, { text: 'SLOPE' }, { text: 'SORT' }, { text: 'SUBTOTAL' }, { text: 'SUM' }, { text: 'SUMIF' },
  2022. { text: 'SUMIFS' }, { text: 'SUMPRODUCT' }, { text: 'TEXT' }, { text: 'TODAY' }, { text: 'TRUNC' }];
  2023. var formulapDownBtn = new ej.splitbuttons.DropDownButton({
  2024. cssClass: 'biz-ss-formula-ddb',
  2025. iconCss: 'e-icons biz-ss-formulaicon',
  2026. items: formulaList,
  2027. select: (args) => {
  2028. let sheet = this.base.ssObj.biz.getActiveSheet();
  2029. switch (args.item.text) {
  2030. case args.item.text:
  2031. this.formula(sheet, args.item.text);
  2032. }
  2033. },
  2034. beforeOpen: (e) => {
  2035. e.items[0].text === "SUM" && ((ej.base.closest(e.element, '.biz-ss-formula-ddb').style.maxHeight = '450px'),
  2036. ej.base.closest(e.element, '.biz-ss-formula-ddb').style.overflowY = 'scroll');
  2037. }
  2038. });
  2039. formulapDownBtn.appendTo(Unibase.Apps.Collaboration.Components.Common.Util.Instance().createElement("button", "class", "biz-ss-formula-wrapper"));
  2040. return formulapDownBtn.element;
  2041. }
  2042. updateCurrencyRounded() {
  2043. var rngIndexes = this.base.ssObj.biz.getIndexes();
  2044. let sheet = this.base.ssObj.biz.getActiveSheet();
  2045. for (let i = rngIndexes[0]; i <= rngIndexes[2]; i++) {
  2046. if (!sheet.rows[i]) {
  2047. return;
  2048. }
  2049. for (let j = rngIndexes[1]; j <= rngIndexes[3]; j++) {
  2050. let cellObj = ej.spreadsheet.getCell(i, j, sheet);
  2051. if (cellObj && cellObj.value && cellObj.value.toString().length && (!cellObj.forumula || !cellObj.formula.length) && (typeof (cellObj.value) === 'number' || !isNaN(cellObj.value))) {
  2052. cellObj.value = Math.round(cellObj.value);
  2053. this.base.ssObj.biz.setCell(i, j, sheet, cellObj);
  2054. }
  2055. }
  2056. }
  2057. }
  2058. static Instance() {
  2059. if (this.instance === undefined) {
  2060. this.instance = new Ribbon();
  2061. }
  2062. return this.instance;
  2063. }
  2064. }
  2065. Sheets.Ribbon = Ribbon;
  2066. })(Sheets = Components.Sheets || (Components.Sheets = {}));
  2067. })(Components = Collaboration.Components || (Collaboration.Components = {}));
  2068. })(Collaboration = Apps.Collaboration || (Apps.Collaboration = {}));
  2069. })(Apps = Unibase.Apps || (Unibase.Apps = {}));
  2070. })(Unibase || (Unibase = {}));