Guest User

Untitled

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