Guest User

Untitled

a guest
Sep 21st, 2017
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.69 KB | None | 0 0
  1. var nw = require('nw.gui');
  2. var settingWindow = nw.Window.get();
  3. let screenSetting = require('../scripts/screen_settings');
  4. let shareSettingScreen = require('../scripts/shareSettingScreen');
  5. // let enableHotkey = require('../scripts/utils/EnableHotKeyUtils');
  6. var LocalStorageUtils = require('../scripts/utils/LocalStorageUtils');
  7. let validateCredentials = require('../scripts/ValidateCredentials');
  8. let screenSettingObj = new screenSetting();
  9. let shareSettingScreenObj = new shareSettingScreen();
  10. let markAreaPrevText = "Ctrl+Shift+P";
  11. let fullAreaPrevText = "Ctrl+Shift+Q";
  12. let webAreaPrevText = "Ctrl+Shift+R";
  13. let window_actions = require('../scripts/utils/windowActions');
  14. let settings_win = new window_actions(settingWindow);
  15. var isModifierPresent = false;
  16.  
  17. var settingScreen = {
  18. settings: GeneralSettings.read(),
  19. imageCaptureKey: "",
  20. // key: [],
  21. key: [],
  22. keyBool: {},
  23. counter: 0,
  24. result: "",
  25. fullScreenHotKeyOptions: {},
  26. markAreaHotKeyOptions: {},
  27. webScreenHotKeyOptions: {},
  28. shareSettingScreenApiItem: "",
  29. loginCredentials: [],
  30.  
  31. init: function () {
  32. global.globalsettingWindowInst = settingWindow;
  33. // enableHotkey.setHotKeys(GeneralSettings, HotKeysSettings);
  34. screenSettingObj.is_window_resizable(settingWindow);
  35. $('#showWelcomeScreen')[0].checked = this.settings.show_welcome_screen;
  36. $('#tool_bar_fade_id')[0].checked = this.settings.tool_bar_fade;
  37. this.writeHotkeys();
  38. this.writeToolBarFadeTime();
  39. var that = this;
  40. /* TODO : we can palce belwo code in common file, its is ussing in settings screen also *******/
  41. $('ul.tabs li').click(function () {
  42. var tab_id = $(this).attr('data-tab');
  43.  
  44. $('ul.tabs li').removeClass('active');
  45. $('.tab-content').removeClass('current');
  46.  
  47. $(this).addClass('active');
  48. $("#" + tab_id).addClass('current');
  49. if (tab_id === 'tab2') {
  50. $('#jiraUrlhr').hide();
  51. $("#jiraUrlPara").hide();
  52. $("#JiraUrlInput").hide();
  53. $('#errorMessageId').hide();
  54. that.checkCredentialAvailability();
  55. }
  56. });
  57.  
  58. $('#apiList li').click(function () {
  59. $('#errorMessageId').hide();
  60. settingScreen.shareSettingScreenApiItem = $(this).attr('id');
  61. settingScreen.checkCredentialAvailability(this);
  62. that.resetScreenForJira();
  63. });
  64.  
  65. settingWindow.show();
  66. },
  67.  
  68. resetScreenForJira: function() {
  69. if(settingScreen.shareSettingScreenApiItem != "jira") {
  70. $('#jiraUrlhr').hide();
  71. $("#jiraUrlPara").hide();
  72. $("#JiraUrlInput").hide();
  73. }else {
  74. $('#jiraUrlhr').show();
  75. $("#jiraUrlPara").show();
  76. $("#JiraUrlInput").show();
  77. }
  78. },
  79.  
  80. resetShareSettingsForm: function (selected) {
  81. console.log(selected);
  82. $('ul.lists li').removeClass('selected');
  83. $(selected).addClass('selected');
  84. },
  85.  
  86. writeHotkeys: function () {
  87. document.getElementById('img_mark_area_id').innerHTML = GeneralSettings.read().hk[0];
  88. document.getElementById('img_full_area_id').innerHTML = GeneralSettings.read().hk[1];
  89. document.getElementById('img_web_area_id').innerHTML = GeneralSettings.read().hk[2];
  90. },
  91.  
  92. writeToolBarFadeTime: function () {
  93. $('#tool_bar_fade_text_id').val(GeneralSettings.read().tool_bar_fade_time);
  94. },
  95.  
  96. capture: function (e) {
  97. var e = e || event;
  98. var i;
  99. // ctrl alt shift right-cmd left-cmd
  100. isModifierPresent = isModifierPresent || (e.keyCode == 16 || e.keyCode == 17 || e.keyCode == 18 || e.keyCode == 91 || e.keyCode == 93);
  101. this.keyBool[`${e.keyCode}`] = (e.type == 'keydown');
  102.  
  103. // error
  104. if (e.type == 'keydown' && e.keyCode != 229) {
  105. if (this.key[this.counter - 1] != e.keyCode) {
  106. this.key[this.counter] = e.keyCode;
  107. console.log(this.key[this.counter])
  108. this.counter++;
  109. }
  110. }
  111. if (e.type == 'keyup' ){
  112. if(e.keyCode == 91|| e.keyCode == 93){
  113. this.keyBool = {};
  114. }
  115. delete this.keyBool[e.keyCode];
  116. // this.keyBool = {};
  117. // this.counter--;
  118. // console.log("e.keyCode -> "+e.keyCode);
  119. }
  120.  
  121.  
  122. if(Object.keys(this.keyBool).length === 0){
  123. this.counter = 0;
  124. this.log();
  125. }
  126. },
  127.  
  128. log: function () {
  129. var y = 0, l = this.key.length, i, t;
  130. var str = null;
  131. var target = $(event.target);
  132. if (isModifierPresent) {
  133. isModifierPresent = false;
  134. for (i = 0; i < l; i++) {
  135. if (str == null) {
  136. str = this.keyCodes[this.key[i]];
  137. } else {
  138. str += '+';
  139. str += this.keyCodes[this.key[i]];
  140. }
  141. }
  142. } else {
  143. if (target.is("#img_mark_area_id")) {
  144. str = markAreaPrevText;
  145. }
  146. else if (target.is("#img_full_area_id")) {
  147. str = fullAreaPrevText;
  148. }
  149. else if (target.is("#img_web_area_id")) {
  150. str = webAreaPrevText;
  151. }
  152. }
  153.  
  154. this.result = str;
  155. console.log(str);
  156.  
  157. if (target.is("#img_mark_area_id")) {
  158. settingScreen.setMarkAreaImageHotKey(str);
  159. }
  160. else if (target.is("#img_full_area_id")) {
  161. settingScreen.setFullScreenImageHotKey(str);
  162. }
  163. else if (target.is("#img_web_area_id")) {
  164. settingScreen.setWebScreenImageHotKey(str);
  165. }
  166. this.key = [];
  167. },
  168.  
  169. fillPrevText: {
  170.  
  171. },
  172.  
  173. keyCodes: {
  174. 8: "Delete",
  175. 9: "Tab",
  176. 13: "Enter",
  177. 16: "Shift",
  178. 17: "Ctrl",
  179. 18: "Alt",
  180. 33: "PageUp",
  181. 34: "PageDown",
  182. 35: "End",
  183. 36: "Home ",
  184. 37: "Left",
  185. 38: "Up",
  186. 39: "Right",
  187. 40: "Down",
  188. 45: "Insert ",
  189. 46: "Delete",
  190. 48: "0",
  191. 49: "1",
  192. 50: "2",
  193. 51: "3",
  194. 52: "4",
  195. 53: "5",
  196. 54: "6",
  197. 55: "7",
  198. 56: "8",
  199. 57: "9",
  200. 65: "A",
  201. 66: "B",
  202. 67: "C",
  203. 68: "D",
  204. 69: "E",
  205. 70: "F",
  206. 71: "G",
  207. 72: "H",
  208. 73: "I",
  209. 74: "J",
  210. 75: "K",
  211. 76: "L",
  212. 77: "M",
  213. 78: "N",
  214. 79: "O",
  215. 80: "P",
  216. 81: "Q",
  217. 82: "R",
  218. 83: "S",
  219. 84: "T",
  220. 85: "U",
  221. 86: "V",
  222. 87: "W",
  223. 88: "X",
  224. 89: "Y",
  225. 90: "Z",
  226. // 91: "Left ⌘",
  227. 91: "Command",
  228. 92: "right window key ",
  229. // 93: "Right ⌘",
  230. 93: "Command",
  231. 112: "F1 ",
  232. 113: "F2 ",
  233. 114: "F3 ",
  234. 115: "F4 ",
  235. 116: "F5 ",
  236. 117: "F6 ",
  237. 118: "F7 ",
  238. 119: "F8 ",
  239. 120: "F9 ",
  240. 121: "F10",
  241. 122: "F11",
  242. 123: "F12",
  243. 124: "F13",
  244. 125: "F14",
  245. 126: "F15",
  246. 127: "F16",
  247. 128: "F17",
  248. 129: "F18",
  249. 130: "F19",
  250. 131: "F20",
  251. 132: "F21",
  252. 133: "F22",
  253. 134: "F23",
  254. 135: "F24",
  255. 176: "Next",
  256. 177: "Previous",
  257. 178: "Stop",
  258. 179: "Play",
  259. 187: "Equal",
  260. 188: "Comma",
  261. 189: "Dash ",
  262. 190: "Period ",
  263. 191: "Slash",
  264. 219: "BracketLeft",
  265. 220: "Backslash ",
  266. 221: "BracketRight",
  267. 223: "Backquote",
  268. },
  269.  
  270. unregisterPrevHotKey: function(prevHotKey) {
  271. console.log("prevHotKey -> "+prevHotKey);
  272. if(prevHotKey!=undefined || prevHotKey!=null) {
  273. HotKeyOptions = {
  274. key: prevHotKey,
  275. active: () => {
  276.  
  277. },
  278.  
  279. failed: (err) => {
  280. // console.log("ERROR in SC is : " + err)
  281. }
  282. }
  283. try{
  284. // var HotKeyOptionsshortcut = new nw.Shortcut(HotKeyOptions);
  285. // let unRegisterShortcut;
  286. // if(prevHotKey == markAreaPrevText)
  287. // unRegisterShortcut = global._BUGSHOT_MARKAREA_HOTKEY_OPTIONS;
  288. //unRegisterShortcut = LocalStorageUtils.get('markAreaHotKeyOptionsshortcut');
  289. // let HotKeyOptionsshortcut = new nw.Shortcut(unRegisterShortcut);
  290. // console.log(JSON.stringify(HotKeyOptionsshortcut));
  291. nw.App.unregisterGlobalHotKey(HotKeyOptionsshortcut);
  292. console.log("successful -> ");
  293. }catch(e) {
  294. console.log("unsuccessful -> " +e);
  295. }
  296. }
  297.  
  298. },
  299.  
  300. setMarkAreaImageHotKey: function (str) {
  301. this.markAreaHotKeyOptions = {
  302. key: str,
  303. active: () => {
  304. // settingWindow.reload();
  305. },
  306. failed: (err) => {
  307. console.log("ERROR in SC is : " + err)
  308. }
  309. }
  310. try {
  311. var markAreaHotKeyOptionsshortcut = new nw.Shortcut(this.markAreaHotKeyOptions);
  312.  
  313. $("#img_mark_area_id").css("color", "#ff6500");
  314. document.getElementById("img_mark_area_id").innerHTML = this.markAreaHotKeyOptions.key;
  315. // if(this.isTextOutsideBox("img_mark_area_id")) {
  316. // console.log("sbcjksb");
  317. // $("#img_mark_area_id").css("font-size", "10px");
  318. // document.getElementById("img_mark_area_id").innerHTML = this.markAreaHotKeyOptions.key;
  319. // }
  320. // else{
  321. // $("#img_mark_area_id").css("font-size", "12px");
  322. // }
  323. } catch (e) {
  324. $("#img_mark_area_id").css("color", "red");
  325. document.getElementById("img_mark_area_id").innerHTML = "invalid key";
  326. HotKeysSettings.set(0, markAreaPrevText);
  327. }
  328. },
  329.  
  330. setFullScreenImageHotKey: function (str) {
  331. this.fullScreenHotKeyOptions = {
  332. key: str,
  333. active: () => {
  334. //
  335. },
  336. failed: (err) => {
  337. console.log(err)
  338. }
  339. }
  340. try {
  341. var fullScreenHotKeyOptionsshortcut = new nw.Shortcut(this.fullScreenHotKeyOptions);
  342. // nw.App.registerGlobalHotKey(fullScreenHotKeyOptionsshortcut);
  343. $("#img_full_area_id").css("color", "#ff6500");
  344. document.getElementById("img_full_area_id").innerHTML = this.fullScreenHotKeyOptions.key;
  345. } catch (e) {
  346. $("#img_full_area_id").css("color", "red");
  347. document.getElementById("img_full_area_id").innerHTML = "invalid key";
  348. HotKeysSettings.set(1, fullAreaPrevText);
  349. }
  350. },
  351.  
  352. setWebScreenImageHotKey: function (str) {
  353. this.webScreenHotKeyOptions = {
  354. key: str,
  355. active: () => {
  356. //
  357. },
  358. failed: (err) => {
  359. console.log(err)
  360. }
  361. }
  362. try {
  363. var webScreenHotKeyOptionsshortcut = new nw.Shortcut(this.webScreenHotKeyOptions);
  364. // nw.App.registerGlobalHotKey(webScreenHotKeyOptionsshortcut);
  365. $("#img_web_area_id").css("color", "#ff6500");
  366. document.getElementById("img_web_area_id").innerHTML = this.webScreenHotKeyOptions.key;
  367. } catch (e) {
  368. $("#img_web_area_id").css("color", "red");
  369. document.getElementById("img_web_area_id").innerHTML = "invalid key";
  370. HotKeysSettings.set(2, webAreaPrevText);
  371. }
  372. },
  373.  
  374. cancelSettings: function () {
  375. // nw.Window.open('../views/docker.html', LocalStorageUtils.get('dockerConfig'));
  376. settings_win.close();
  377.  
  378. },
  379.  
  380. saveSettings: function () {
  381. this.fadeToolBar();
  382.  
  383. this.showWelcomeScreen();
  384.  
  385. if (!isNaN($('#tool_bar_fade_text_id').val()) && $('#tool_bar_fade_text_id').val() > 0)
  386. GeneralSettings.update({ tool_bar_fade_time: $('#tool_bar_fade_text_id').val() });
  387.  
  388. settingScreen.unregisterPrevHotKey(markAreaPrevText);
  389. settingScreen.unregisterPrevHotKey(fullAreaPrevText);
  390. settingScreen.unregisterPrevHotKey(webAreaPrevText);
  391.  
  392. this.saveHotKeys();
  393. if (global.globalDockerInst != undefined || global.globalDockerInst != null){
  394. global.globalDockerInst.close();
  395. }
  396.  
  397. // let dockerConfig = LocalStorageUtils.get('dockerConfig');
  398. // nw.Window.open('../views/docker.html', dockerConfig);
  399. settings_win.close();
  400. },
  401.  
  402. saveHotKeys: function () {
  403. HotKeysSettings.set(0, $("#img_mark_area_id").text());
  404. HotKeysSettings.set(1, $('#img_full_area_id').text());
  405. HotKeysSettings.set(2, $('#img_web_area_id').text());
  406. },
  407.  
  408.  
  409. showWelcomeScreen: function () {
  410. if ($('#showWelcomeScreen')[0].checked)
  411. GeneralSettings.update({ show_welcome_screen: true });
  412. else
  413. GeneralSettings.update({ show_welcome_screen: false });
  414. },
  415.  
  416. fadeToolBar: function () {
  417. if ($('#tool_bar_fade_id')[0].checked)
  418. GeneralSettings.update({ tool_bar_fade: true });
  419. else
  420. GeneralSettings.update({ tool_bar_fade: false });
  421. },
  422.  
  423. saveUserLoginDetails: function() {
  424. var Url="";
  425. var username = $('#usernameInput').val();
  426. var password = $('#passwordInput').val();
  427. if(username!='' && password!=''){
  428. if(settingScreen.shareSettingScreenApiItem == 'reqtest' || settingScreen.shareSettingScreenApiItem == 'jira') {
  429. Url = this.getUrl();
  430. if(Url != "") {
  431. if(validateCredentials.save(Url,username,password,settingScreen.shareSettingScreenApiItem)){
  432. $('#errorMessageId').hide();
  433. alert("Credential Saved");
  434. }
  435. else {
  436. this.showErrorAndResetScreenIfNotSaved();
  437. }
  438. }else{
  439. this.showErrorAndResetScreenIfNotSaved();
  440. }
  441.  
  442. }else{
  443. if(validateCredentials.save(Url,username,password,settingScreen.shareSettingScreenApiItem)){
  444. $('#errorMessageId').hide();
  445. alert("Credential Saved");
  446. }
  447. else
  448. this.showErrorAndResetScreenIfNotSaved();
  449. }
  450. }else {
  451. this.showErrorAndResetScreenIfNotSaved();
  452. }
  453. },
  454.  
  455. getUrl: function() {
  456. var Url;
  457. if(settingScreen.shareSettingScreenApiItem == 'reqtest')
  458. Url = "http://reqtest.com/";
  459. else if(settingScreen.shareSettingScreenApiItem == 'jira')
  460. Url = $('#JiraUrlInput').val();
  461.  
  462. return Url;
  463. },
  464.  
  465. showErrorAndResetScreenIfNotSaved: function() {
  466. $('#errorMessageId').show();
  467. if(settingScreen.shareSettingScreenApiItem == 'reqtest'){
  468. $('#errorMessageId').text('');
  469. $('#errorMessageId').text("ReqTest API error. Try again or contact your testing tool administrator. ");
  470. }
  471. else if(settingScreen.shareSettingScreenApiItem == 'jira'){
  472. $('#errorMessageId').text('');
  473. $('#errorMessageId').text("Jira API error. Try again or contact your testing tool administrator. ");
  474. }
  475. this.resetScreenForJira();
  476. // let id = '#'+shareSettingScreenApiItem;
  477. // this.resetloginScreenForm(id);
  478. },
  479.  
  480. fillRequiredFields: function(selected) {
  481. console.log(selected);
  482. // $("#usernameInput").prop("readonly", false);
  483. $("#usernameInput").val(this.loginCredentials[1]);
  484. // $('#passwordPara').show();
  485. $('#passwordInput').val(this.loginCredentials[2]);
  486. // $('hr').show();
  487.  
  488. if(selected == "#jira" || settingScreen.shareSettingScreenApiItem == "jira") {
  489. $("#jiraUrlPara").show();
  490. $("#JiraUrlInput").show().val(this.loginCredentials[3]).focus();
  491. $("#jiraUrlhr").show();
  492. } else {
  493. $("#usernameInput").focus();
  494. $("#jiraUrlPara").hide();
  495. $("#JiraUrlInput").hide();
  496. $("#jiraUrlhr").hide();
  497. }
  498. },
  499.  
  500. checkCredentialAvailability: function(selected) {
  501. if(selected == undefined) {
  502. this.loginCredentials = shareSettingScreenObj.read();
  503. if(this.loginCredentials[0] == undefined)
  504. selected = '#reqtest';
  505. else
  506. selected = '#'+this.loginCredentials[0];
  507. settingScreen.shareSettingScreenApiItem = this.loginCredentials[0];
  508. }
  509. else
  510. this.loginCredentials = shareSettingScreenObj.read(settingScreen.shareSettingScreenApiItem);
  511. if(settingScreen.shareSettingScreenApiItem == "reqtest") {
  512. $("#usernamePara").text("Email");
  513. }
  514. else{
  515. $("#usernamePara").text("Username");
  516. }
  517. this.resetShareSettingsForm(selected);
  518. this.fillRequiredFields(selected);
  519. // if(this.loginCredentials[1]!="") {
  520. // if(validateCredentials.checkCredentialValidity()) {
  521. // $('#errorMessageId').hide();
  522. // }else {
  523. // $('#errorMessageId').show();
  524. // }
  525. // }
  526. // else{
  527. // $('#errorMessageId').hide();
  528. // }
  529. },
  530.  
  531. }
  532.  
  533. $(document).ready(() => {
  534.  
  535. document.getElementById('tool_bar_fade_text_id').onkeydown = function(e) {
  536. if(!((e.keyCode > 95 && e.keyCode < 106)
  537. || (e.keyCode > 47 && e.keyCode < 58)
  538. || e.keyCode == 8)) {
  539. return false;
  540. }
  541. }
  542.  
  543. $('#img_mark_area_id, #img_full_area_id, #img_web_area_id').bind('focus', function (event) {
  544. var target = $(event.target);
  545. if (target.is("#img_mark_area_id")) {
  546. markAreaPrevText = $('#img_mark_area_id').text();
  547. }
  548. else if (target.is("#img_full_area_id")) {
  549. fullAreaPrevText = $('#img_full_area_id').text();
  550. }
  551. else if (target.is("#img_web_area_id")) {
  552. webAreaPrevText = $('#img_web_area_id').text();
  553. }
  554. });
  555.  
  556. settingWindow.on('close', function() {
  557. // this.hide();
  558. if(!LocalStorageUtils.get('shouldHotKeyBeEnabled') || LocalStorageUtils.get('shouldHotKeyBeEnabled') == undefined) {
  559. LocalStorageUtils.set('shouldHotKeyBeEnabled', false);
  560. let dockerConfig = LocalStorageUtils.get('dockerConfig');
  561. nw.Window.open('../views/docker.html', dockerConfig);
  562. LocalStorageUtils.removeItem('meta_id');
  563. }
  564. this.close(true); // true - to bypass the close event
  565. });
  566.  
  567. $('#minimize_screen').click(() => {
  568. settings_win.minimize();
  569. })
  570.  
  571. $('#maximize_screen').click(() => {
  572. settings_win.maxRestore();
  573. })
  574.  
  575. $('#img_mark_area_id, #img_full_area_id, #img_web_area_id').bind('blur', function (event) {
  576. $(this).css("color", "#ff6500");
  577. var target = $(event.target);
  578.  
  579. if (target.is("#img_mark_area_id")) {
  580. if ($('#img_mark_area_id').html() === "invalid key")
  581. $('#img_mark_area_id').html(markAreaPrevText);
  582. }
  583. else if (target.is("#img_full_area_id")) {
  584. if ($('#img_full_area_id').html() === "invalid key")
  585. $('#img_full_area_id').html(fullAreaPrevText);
  586. }
  587.  
  588. else if (target.is("#img_web_area_id")) {
  589. if ($('#img_web_area_id').html() === "invalid key")
  590. $('#img_web_area_id').html(webAreaPrevText);
  591. }
  592. });
  593.  
  594. $('#img_mark_area_id, #img_full_area_id, #img_web_area_id').mouseout(function (event) {
  595. $(this).css("color", "#ff6500");
  596. var target = $(event.target);
  597.  
  598. if (target.is("#img_mark_area_id")) {
  599. if ($('#img_mark_area_id').html() === "invalid key")
  600. $('#img_mark_area_id').html(markAreaPrevText);
  601. }
  602. else if (target.is("#img_full_area_id")) {
  603. if ($('#img_full_area_id').html() === "invalid key")
  604. $('#img_full_area_id').html(fullAreaPrevText);
  605. }
  606. else if (target.is("#img_web_area_id")) {
  607. if ($('#img_web_area_id').html() === "invalid key")
  608. $('#img_web_area_id').html(webAreaPrevText);
  609. }
  610. });
  611.  
  612. $('.hot_key_text').on('keydown keyup', function (event) {
  613. settingScreen.capture(event);
  614. })
  615.  
  616. settingScreen.init();
  617. });
Add Comment
Please, Sign In to add comment