Guest User

Untitled

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