Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2016
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.34 KB | None | 0 0
  1.  
  2.  
  3. var ajax_url= krms_driver_config.ApiUrl ;
  4. var dialog_title_default= krms_driver_config.DialogDefaultTitle;
  5. var search_address;
  6. var ajax_request;
  7. var networkState;
  8. var reload_home;
  9. var translator;
  10.  
  11. var ajax_request2;
  12. var ajax_request3;
  13. var map;
  14. var watchID;
  15.  
  16. var gaPlugin;
  17.  
  18. jQuery.fn.exists = function(){return this.length>0;}
  19.  
  20. function dump(data)
  21. {
  22. console.debug(data);
  23. }
  24.  
  25. function setStorage(key,value)
  26. {
  27. localStorage.setItem(key,value);
  28. }
  29.  
  30. function getStorage(key)
  31. {
  32. return localStorage.getItem(key);
  33. }
  34.  
  35. function removeStorage(key)
  36. {
  37. localStorage.removeItem(key);
  38. }
  39.  
  40. function explode(sep,string)
  41. {
  42. var res=string.split(sep);
  43. return res;
  44. }
  45.  
  46. function urlencode(data)
  47. {
  48. return encodeURIComponent(data);
  49. }
  50.  
  51. function empty(data)
  52. {
  53. if (typeof data === "undefined" || data==null || data=="" ) {
  54. return true;
  55. }
  56. return false;
  57. }
  58.  
  59. function isDebug()
  60. {
  61. //on/off
  62. //return true;
  63. return false;
  64. }
  65.  
  66. function hasConnection()
  67. {
  68. if (isDebug()){
  69. return true;
  70. }
  71. var networkState = navigator.connection.type;
  72. if ( networkState=="Connection.NONE" || networkState=="none"){
  73. return false;
  74. }
  75. return true;
  76. }
  77.  
  78. $( document ).on( "keyup", ".numeric_only", function() {
  79. this.value = this.value.replace(/[^0-9\.]/g,'');
  80. });
  81.  
  82. /*START DEVICE READY*/
  83. document.addEventListener("deviceready", function() {
  84.  
  85. navigator.splashscreen.hide();
  86.  
  87. if ( !empty(krms_driver_config.PushProjectID)) {
  88.  
  89. var push = PushNotification.init({
  90. "android": {
  91. "senderID": krms_driver_config.PushProjectID
  92. },
  93. "ios": {"alert": "true", "badge": "true", "sound": "true", "clearBadge": "true" },
  94. "windows": {}
  95. });
  96.  
  97. push.on('registration', function(data) {
  98. setStorage("device_id", data.registrationId );
  99. setStorage("device_platform", device.platform );
  100. });
  101.  
  102. push.on('notification', function(data) {
  103. //alert(JSON.stringify(data));
  104. //switch (data.additionalData.additionalData.push_type)
  105. if ( data.additionalData.foreground ){
  106. //when the app is active
  107. setBaloon();
  108. playNotification();
  109. switch ( data.additionalData.data.actions )
  110. {
  111. case "ASSIGN_TASK":
  112. case "CANCEL_TASK":
  113. case "UPDATE_TASK":
  114. if( $('#home').is(':visible') ){
  115. getTodayTask('');
  116. }
  117. toastMsg( data.message );
  118. break;
  119.  
  120. case "private":
  121. case "bulk":
  122. onsenAlert( data.message );
  123. break;
  124.  
  125. default:
  126. toastMsg( data.message );
  127. break;
  128.  
  129. }
  130. } else {
  131. //when the app is not active
  132. setBaloon();
  133. switch ( data.additionalData.data.actions )
  134. {
  135. case "ASSIGN_TASK":
  136. case "CANCEL_TASK":
  137. case "UPDATE_TASK":
  138. if( $('#home').is(':visible') ){
  139. getTodayTask('');
  140. }
  141. toastMsg( data.message );
  142. break;
  143.  
  144. case "private":
  145. case "bulk":
  146. onsenAlert( data.message );
  147. break;
  148.  
  149. default:
  150. toastMsg( data.message );
  151. break;
  152. }
  153. }
  154. });
  155.  
  156. push.finish(function () {
  157. //alert('finish successfully called');
  158. });
  159.  
  160. push.on('error', function(e) {
  161. //onsenAlert("push error");
  162. });
  163. }
  164.  
  165. // Android customization
  166. cordova.plugins.backgroundMode.setDefaults({
  167. title:'BeeGo Entregador',
  168. text:'Online',
  169. resume: true,
  170. color: "eba820",
  171. });
  172. // Enable background mode
  173. cordova.plugins.backgroundMode.enable();
  174.  
  175. // Called when background mode has been activated
  176. cordova.plugins.backgroundMode.onactivate = function () {
  177. setTimeout(function () {
  178. // Modify the currently displayed notification
  179. cordova.plugins.backgroundMode.configure({
  180. text:'Online'
  181. });
  182. }, 5000);
  183. document.addEventListener("show", function(event) {
  184. dump( "page id show :" + event.target.id );
  185. switch (event.target.id){
  186. case "pageLogin":
  187. if ( isAutoLogin()!=1){
  188. checkGPS();
  189. }
  190. break;
  191.  
  192. case "home":
  193. checkGPS();
  194. break;
  195. }
  196. }, false);
  197. }
  198.  
  199.  
  200. }, false);
  201. /*END DEVICE READY*/
  202.  
  203. // set device
  204. ons.platform.select('android');
  205. //ons.platform.select('ios');
  206.  
  207. ons.ready(function() {
  208.  
  209. /*ons.setDefaultDeviceBackButtonListener(function() {
  210. });*/
  211.  
  212. }); /*end ready*/
  213.  
  214.  
  215. function setBaloon()
  216. {
  217. var push_count = getStorage("push_count");
  218. if(empty(push_count)){
  219. push_count=0;
  220. }
  221. push_count=parseInt(push_count)+1;
  222. dump('setbaloon=>'+push_count);
  223. if (!empty(push_count)){
  224. if (push_count>0){
  225. setStorage("push_count", push_count );
  226. $(".baloon-notification").html(push_count);
  227. $(".baloon-notification").show();
  228. }
  229. }
  230. }
  231.  
  232. document.addEventListener("offline", noNetConnection, false);
  233.  
  234. function noNetConnection()
  235. {
  236. toastMsg( getTrans("Internet connection lost","net_connection_lost") );
  237. }
  238.  
  239. document.addEventListener("online", hasNetConnection, false);
  240.  
  241. function hasNetConnection()
  242. {
  243. //toastMsg( getTrans("Connected","connected") );
  244. //callAjax("DeviceConnected",'');
  245. }
  246.  
  247. document.addEventListener("backbutton", function (e) {
  248. if( $('#pageLogin').is(':visible') ){
  249.  
  250. if( $('.alert-dialog-container').is(':visible') ){
  251.  
  252. } else {
  253. ons.notification.confirm({
  254. message: getTrans("Are you sure to close the app?","close_app") ,
  255. title: dialog_title_default ,
  256. buttonLabels: [ getTrans("Yes","yes") , getTrans("No","no") ],
  257. animation: 'default', // or 'none'
  258. primaryButtonIndex: 1,
  259. cancelable: true,
  260. callback: function(index) {
  261. e.preventDefault();
  262. if (index==0){
  263. if (navigator.app) {
  264. navigator.app.exitApp();
  265. } else if (navigator.device) {
  266. navigator.device.exitApp();
  267. } else {
  268. window.close();
  269. }
  270. } else {
  271. return false;
  272. }
  273. }
  274. });
  275. }
  276.  
  277. } else if ( $('#home').is(':visible') ){
  278.  
  279. if( $('.alert-dialog-container').is(':visible') ){
  280. } else {
  281. ons.notification.confirm({
  282. message: getTrans("Are you sure you want to logout?","logout_confirm") ,
  283. title: dialog_title_default ,
  284. buttonLabels: [ getTrans("Yes","yes") , getTrans("No","no") ],
  285. animation: 'default', // or 'none'
  286. primaryButtonIndex: 1,
  287. cancelable: true,
  288. callback: function(index) {
  289. e.preventDefault();
  290. if (index==0){
  291. Logout();
  292. } else {
  293. return false;
  294. }
  295. }
  296. });
  297. }
  298.  
  299. } else if ( $('#taskDetails').is(':visible') ){
  300. //sNavigator.popPage({cancelIfRunning: true});
  301. kNavigator.popPage().then(function() {
  302. reloadHome();
  303. });
  304. } else {
  305. navigator.app.backHistory();
  306. }
  307. }, false);
  308.  
  309. function refreshCon(action , params)
  310. {
  311. if(empty(params)){
  312. params='';
  313. }
  314. dump(action);
  315. if (hasConnection()){
  316. callAjax(action,params)
  317. }
  318. }
  319.  
  320. /*document.addEventListener("show", function(event) {
  321. dump( "page id show :" + event.target.id );
  322. switch (event.target.id){
  323. case "pageLogin":
  324. if ( isAutoLogin()!=1){
  325. checkGPS();
  326. }
  327. break;
  328.  
  329. case "home":
  330. checkGPS();
  331. break;
  332. }
  333. }, false);*/
  334.  
  335. document.addEventListener("init", function(event) {
  336. dump( "page id :" + event.target.id );
  337.  
  338. switch (event.target.id) {
  339. /* document.getElementById("onduty").addEventListener('change', function(e) {
  340. console.log('click', e.target.isInteractive );
  341. });*/
  342.  
  343. case "Map":
  344. dump('init map');
  345. break;
  346.  
  347. case "Notification":
  348. callAjax('GetNotifications','');
  349.  
  350. var pullHook = document.getElementById('pull-hook-notification');
  351. pullHook.onAction = function(done) {
  352. AjaxNotification("GetNotifications",'',done);
  353. };
  354. pullHook.addEventListener('changestate', function(event) {
  355. var message = '';
  356. dump(event.state);
  357. switch (event.state) {
  358. case 'initial':
  359. message = '<ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon> Pull down to refresh';
  360. break;
  361. case 'preaction':
  362. message = '<ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon> Release';
  363. break;
  364. case 'action':
  365. message = '<ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> Loading...';
  366. break;
  367. }
  368. pullHook.innerHTML = message;
  369. });
  370.  
  371. break;
  372.  
  373. case "Signature":
  374. case "profile":
  375. TransLatePage();
  376. break;
  377.  
  378. case "pageGetSettings":
  379.  
  380. if (isDebug()){
  381. if ( hasConnection()){
  382. callAjax("GetAppSettings",'');
  383. } else {
  384. toastMsg( getTrans("Not connected to internet","no_connection") );
  385. $(".loading_settings").html( getTrans("Not connected to internet","no_connection") );
  386. $(".refresh_net").show();
  387. }
  388. } else {
  389. document.addEventListener("deviceready", function() {
  390. if ( hasConnection()){
  391. callAjax("GetAppSettings",'');
  392. } else {
  393. toastMsg( getTrans("Not connected to internet","no_connection") );
  394. $(".loading_settings").html( getTrans("Not connected to internet","no_connection") );
  395. $(".refresh_net").show();
  396. }
  397. }, false);
  398. }
  399.  
  400. break;
  401.  
  402. case "page-login":
  403. case "pageLogin":
  404. if ( isAutoLogin()==1){
  405. $("#frm-login").hide();
  406. $(".login-header").hide();
  407. $(".auto-login-wrap").show();
  408. }
  409. TransLatePage();
  410. break;
  411.  
  412. case "pageforgotpass":
  413. TransLatePage();
  414. break;
  415.  
  416. case "SettingPage":
  417. callAjax("GetSettings",'');
  418. TransLatePage();
  419. break;
  420.  
  421. case "profilePage":
  422. TransLatePage();
  423. callAjax("GetProfile",'');
  424. break;
  425.  
  426. case "taskDetails":
  427. case "viewTaskDescription":
  428. $(".toolbar-title").html( getTrans("Getting info...",'getting_info') );
  429. break;
  430.  
  431. case "CalendarView":
  432. TransLatePage();
  433. $('#calendar').fullCalendar({
  434. height: 500,
  435. header: {
  436. left: 'prev',
  437. center: 'title',
  438. right: 'next'
  439. },
  440. eventClick: function(calEvent, jsEvent, view) {
  441. //alert('Event: ' + calEvent.id);
  442. },
  443. dayClick: function(date, jsEvent, view) {
  444. kNavigator.popPage().then(function() {
  445. setStorage('kr_todays_date_raw', date.format() );
  446. //$(".todays_date").html( date.format('MMMM, DD') );
  447. //$(".todays_date").html( date.format('DD, MMMM') );
  448. $(".todays_date").html( date.format('DD/MM') );
  449. getTodayTask('');
  450. });
  451. },
  452. events: function (start, end, timezone, callback) {
  453. /*_start = start.format('YYYY-MM-DD');
  454. _end = end.format('YYYY-MM-DD');*/
  455. _start = start.format('DD/MM/YYYY');
  456. _end = end.format('DD/MM/YYYY');
  457. params="&start="+_start;
  458. params+="&end="+_end;
  459.  
  460. if ( !hasConnection() ){
  461. toastMsg( getTrans("Not connected to internet",'no_connection') );
  462. return;
  463. }
  464.  
  465. dump(ajax_url+"/CalendarTask/?token=" + getStorage("kr_token") + params);
  466.  
  467. $.ajax({
  468. type: "post",
  469. url: ajax_url+"/CalendarTask/?token=" + getStorage("kr_token") + params,
  470. dataType: 'jsonp',
  471. timeout: 6000,
  472. crossDomain: true,
  473. beforeSend: function() {
  474. loader.show();
  475. },
  476. success: function (data) {
  477. hideAllModal();
  478. if ( data.details.length>0){
  479. var events = [];
  480. $.each(data.details, function (i, task_day) {
  481. events.push({
  482. /*start: moment({
  483. year: task_day.year,
  484. month: task_day.month,
  485. day: task_day.day
  486. }),*/
  487. start : task_day.id,
  488. title: task_day.title,
  489. allDay: true,
  490. id:task_day.id,
  491. className:"total_task"
  492. });
  493. });
  494. callback(events);
  495. }
  496. },
  497. error: function (request,error) {
  498. hideAllModal();
  499. dump('errr');
  500. }
  501. });
  502. }
  503. });
  504. break;
  505.  
  506.  
  507. case "home":
  508. var pullHook = document.getElementById('pull-hook');
  509. pullHook.onAction = function(done) {
  510. params="date="+ getStorage("kr_todays_date_raw");
  511. var onduty = document.getElementById('onduty').checked==true?1:2 ;
  512. params+="&onduty="+onduty;
  513. AjaxTask("GetTaskByDate",params,done);
  514. };
  515. pullHook.addEventListener('changestate', function(event) {
  516. var message = '';
  517. dump(event.state);
  518. switch (event.state) {
  519. case 'initial':
  520. message = '<ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon> Pull down to refresh';
  521. break;
  522. case 'preaction':
  523. message = '<ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon> Release';
  524. break;
  525. case 'action':
  526. message = '<ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> Loading...';
  527. break;
  528. }
  529. pullHook.innerHTML = message;
  530. });
  531.  
  532. break;
  533.  
  534. } /*end switch*/
  535.  
  536. }, false);
  537.  
  538.  
  539. function autoLogin()
  540. {
  541. dump('autoLogin');
  542. var kr_remember = getStorage("kr_remember");
  543. if ( kr_remember=="on"){
  544. var kr_username=getStorage("kr_username");
  545. var kr_password=getStorage("kr_password");
  546. var kr_remember=getStorage("kr_remember");
  547. if (!empty(kr_username) && !empty(kr_password)){
  548. dump('auto login');
  549. $("#frm-login").hide();
  550. $(".login-header").hide();
  551. $(".auto-login-wrap").show();
  552. var params="username="+kr_username+"&password="+kr_password+"&remember="+kr_remember;
  553.  
  554. params+="&device_id="+ getStorage("device_id");
  555. params+="&device_platform="+ getStorage("device_platform");
  556.  
  557. dump(params);
  558. callAjax("login",params);
  559. }
  560. }
  561. }
  562.  
  563. function exitKApp()
  564. {
  565. ons.notification.confirm({
  566. message: getTrans("Are you sure to close the app?","close_app") ,
  567. title: dialog_title_default ,
  568. buttonLabels: [ "Yes" , "No" ],
  569. animation: 'default', // or 'none'
  570. primaryButtonIndex: 1,
  571. cancelable: true,
  572. callback: function(index) {
  573. if (index==0){
  574. if (navigator.app) {
  575. navigator.app.exitApp();
  576. } else if (navigator.device) {
  577. navigator.device.exitApp();
  578. } else {
  579. window.close();
  580. }
  581. }
  582. }
  583. });
  584. }
  585.  
  586. function showPage(page_id, action )
  587. {
  588. if (action==1){
  589. popover.hide();
  590. }
  591. var options = {
  592. animation: 'slide',
  593. onTransitionEnd: function(){
  594. }
  595. };
  596. kNavigator.pushPage(page_id, options);
  597. }
  598.  
  599. /*mycall*/
  600. function callAjax(action,params)
  601. {
  602. dump("action=>"+action);
  603.  
  604. if ( !hasConnection() ){
  605. toastMsg( getTrans("Not connected to internet",'no_connection') );
  606. return;
  607. }
  608.  
  609. params+="&lang_id="+getStorage("kr_lang_id");
  610. if(!empty(krms_driver_config.APIHasKey)){
  611. params+="&api_key="+krms_driver_config.APIHasKey;
  612. }
  613. if ( !empty( getStorage("kr_token") )){
  614. params+="&token="+ getStorage("kr_token");
  615. }
  616.  
  617. dump(ajax_url+"/"+action+"?"+params);
  618.  
  619. ajax_request = $.ajax({
  620. url: ajax_url+"/"+action,
  621. data: params,
  622. type: 'post',
  623. async: false,
  624. dataType: 'jsonp',
  625. timeout: 6000,
  626. crossDomain: true,
  627. beforeSend: function() {
  628. if(ajax_request != null) {
  629. /*abort ajax*/
  630. hideAllModal();
  631. ajax_request.abort();
  632. } else {
  633. /*show modal*/
  634. loader.show();
  635. }
  636. },
  637. complete: function(data) {
  638. //ajax_request=null;
  639. ajax_request= (function () { return; })();
  640. hideAllModal();
  641. },
  642. success: function (data) {
  643.  
  644. dump(data);
  645. if (data.code==1){
  646.  
  647. switch(action)
  648. {
  649. case "login":
  650. dump('LOGIN OK');
  651. setStorage("kr_username", data.details.username);
  652. setStorage("kr_password", data.details.password);
  653. setStorage("kr_remember", data.details.remember);
  654. setStorage("kr_todays_date", data.details.todays_date);
  655. setStorage("kr_todays_date_raw", data.details.todays_date_raw);
  656. setStorage("kr_token", data.details.token);
  657.  
  658. setStorage("kr_location_accuracy", data.details.location_accuracy);
  659.  
  660. kNavigator.pushPage("home.html", {
  661. animation: 'slide',
  662. callback: function(){
  663. $(".todays_date").html( getStorage("kr_todays_date") );
  664. if ( data.details.on_duty==1){
  665. onduty.checked=true;
  666. $(".duty_status").html( getTrans("On-Duty",'on_duty') );
  667. } else {
  668. onduty.checked=false;
  669. $(".duty_status").html( getTrans("Off-duty",'off_duty') );
  670. }
  671.  
  672. getTodayTask( data.details.todays_date_raw );
  673.  
  674. }
  675. });
  676. break;
  677.  
  678. case "ChangeDutyStatus":
  679. if ( data.details==1){
  680. $(".duty_status").html( getTrans("On-Duty",'on_duty') );
  681. } else {
  682. $(".duty_status").html( getTrans("Off-duty",'off_duty') );
  683. }
  684. break;
  685.  
  686. case "getTaskByDate":
  687. $(".no-task-wrap").hide();
  688. $("#task-wrapper").show();
  689. dump( 'fill task' );
  690. $("#task-wrapper").html( formatTask( data.details ) );
  691. break;
  692.  
  693. case "TaskDetails":
  694. $(".toolbar-title").html ( data.msg ) ;
  695. $("#task-details").html(
  696. formatTaskDetails(data.details) +
  697. TaskDetailsChevron_1(data.details) +
  698. TaskDetailsChevron_2(data.details) +
  699. //OrderDetails(data.details) +
  700. TaskAddSignature( data.details ) +
  701. TaskDetailsChevron_3(data.details.history)
  702. );
  703.  
  704. //show signature
  705.  
  706. $("#task-action-wrap").html(
  707. swicthButtonAction( data.details.task_id, data.details.status_raw )
  708. );
  709.  
  710. break;
  711.  
  712. case "viewTaskDescription":
  713. $(".toolbar-title").html ( data.msg ) ;
  714. $("#task-description").html( taskDescription(data.details) );
  715. break;
  716.  
  717.  
  718. case "changeTaskStatus":
  719.  
  720. reload_home=1;
  721. if ( data.details.reload_functions =="TaskDetails"){
  722. callAjax("TaskDetails",'task_id=' + data.details.task_id );
  723. }
  724. if ( data.details.reload_functions=="getTodayTask"){
  725. kNavigator.popPage().then(function() {
  726. getTodayTask('');
  727. })
  728. }
  729.  
  730. $("#task-action-wrap").html(
  731. swicthButtonAction( data.details.task_id, data.details.status_raw )
  732. );
  733.  
  734. break;
  735.  
  736. case "AddSignatureToTask":
  737. kNavigator.popPage().then(function() {
  738. callAjax("TaskDetails",'task_id=' + data.details );
  739. });
  740. break;
  741.  
  742.  
  743. case "GetProfile":
  744. $(".driver-fullname").html( data.details.full_name );
  745. $(".team-name").html( data.details.team_name );
  746. $(".driver-email").html( data.details.email );
  747. $(".phone").val( data.details.phone );
  748.  
  749. $(".transport_type_id2").html( data.details.transport_type_id2 );
  750. $(".transport_description").val( data.details.transport_description );
  751. $(".licence_plate").val( data.details.licence_plate );
  752. $(".color").val( data.details.color );
  753.  
  754. $(".transport_type_id").val( data.details.transport_type_id );
  755. switchTransportFields( data.details.transport_type_id );
  756.  
  757. break;
  758.  
  759.  
  760. case "GetTransport":
  761. var html='';
  762. x=1;
  763. $.each( data.details, function( key, val ) {
  764. html+=OptionListTransport('transport_type', key, val , x);
  765. x++;
  766. });
  767. $("#transport-list").html( html );
  768. break;
  769.  
  770. case "ProfileChangePassword":
  771. setStorage("kr_password", data.details);
  772. onsenAlert( data.msg );
  773. break;
  774.  
  775. //silent
  776. case "SettingPush":
  777. case "DeviceConnected":
  778. break;
  779.  
  780. case "GetSettings":
  781.  
  782. device_id=getStorage('device_id');
  783. if (!empty(device_id)){
  784. $('.device_id').html( device_id );
  785. }
  786.  
  787. if ( data.details.enabled_push==1){
  788. enabled_push.checked=true;
  789. } else {
  790. enabled_push.checked=false;
  791. }
  792.  
  793. kr_lang_id=getStorage("kr_lang_id");
  794. if(!empty(kr_lang_id)){
  795. $(".language_selected").html( data.details.language[kr_lang_id] );
  796. }
  797.  
  798. break;
  799.  
  800. case "LanguageList":
  801. $("#language-list").html('');
  802. var html='';
  803. x=1;
  804. $.each( data.details, function( key, val ) {
  805. html+=OptionListLanguage(val, val, val , x);
  806. x++;
  807. });
  808. $("#language-list").html( html );
  809. break;
  810.  
  811. case "GetAppSettings":
  812. dump('GetAppSettings');
  813.  
  814. setStorage("kr_translation",JSON.stringify(data.details.translation));
  815.  
  816. //set sounds url
  817. setStorage("notification_sound_url",data.details.notification_sound_url);
  818.  
  819. // set the language id
  820. if ( empty( getStorage("kr_lang_id") )){
  821. setStorage("kr_lang_id","pt_br");
  822. }
  823.  
  824. var auto_login = isAutoLogin();
  825.  
  826. if ( auto_login == 1) {
  827. dump('execute auto login');
  828. kNavigator.pushPage("pagelogin.html", {
  829. animation: 'fade',
  830. callback: function(){
  831. var kr_username=getStorage("kr_username");
  832. var kr_password=getStorage("kr_password");
  833. var kr_remember=getStorage("kr_remember");
  834. var params="username="+kr_username+"&password="+kr_password;
  835. params+="&remember="+kr_remember;
  836.  
  837. params+="&device_id="+ getStorage("device_id");
  838. params+="&device_platform="+ getStorage("device_platform");
  839.  
  840. dump(params);
  841. callAjax("login",params);
  842. }
  843. });
  844. } else {
  845. kNavigator.pushPage("pagelogin.html", {
  846. animation: 'fade',
  847. callback: function(){
  848. }
  849. });
  850. }
  851.  
  852. break;
  853.  
  854. case "ViewOrderDetails":
  855. $("#order-details").html( formatOrderDetails( data.details , data.msg ) );
  856. break;
  857.  
  858. case "GetNotifications":
  859. $("#notifications-details").html( formatNotifications( data.details ) );
  860. clearPushCount();
  861. TransLatePage();
  862. break;
  863.  
  864.  
  865. case "clearNofications":
  866. $("#notifications-details").html('');
  867. clearPushCount();
  868. break;
  869.  
  870. case "Logout":
  871. removeStorage('kr_token');
  872. break;
  873.  
  874. default:
  875. onsenAlert( data.msg );
  876. break;
  877. }
  878.  
  879. } else { // failed
  880.  
  881. switch (action)
  882. {
  883.  
  884. case "getTaskByDate":
  885. $(".no-task-wrap").show();
  886. $(".no-task-wrap p").html( data.msg );
  887. $("#task-wrapper").html('');
  888. //$("#task-wrapper").hide();
  889. toastMsg( data.msg );
  890. break;
  891.  
  892. case "login":
  893. checkGPS();
  894. $("#frm-login").show();
  895. $(".login-header").show();
  896. $(".auto-login-wrap").hide();
  897. onsenAlert( data.msg );
  898. removeStorage("kr_remember");
  899. break;
  900.  
  901. //silent
  902. case "SettingPush":
  903. case "GetAppSettings":
  904. case "DeviceConnected":
  905. case "Logout":
  906. break;
  907.  
  908. case "GetNotifications":
  909. clearPushCount();
  910. toastMsg( data.msg );
  911. TransLatePage();
  912. break;
  913.  
  914. case "changeTaskStatus":
  915. reload_home=1;
  916. toastMsg( data.msg );
  917. kNavigator.popPage().then(function() {
  918. reloadHome();
  919. });
  920. break;
  921.  
  922. default:
  923. onsenAlert( data.msg );
  924. break;
  925. }
  926. }
  927. },
  928. error: function (request,error) {
  929. hideAllModal();
  930. switch (action)
  931. {
  932. case "GetAppSettings":
  933. case "getLanguageSettings":
  934. case "registerMobile":
  935. break;
  936.  
  937. default:
  938. toastMsg( getTrans("Network error has occurred please try again!",'network_error') );
  939. break;
  940. }
  941. }
  942. });
  943. }
  944.  
  945. function AjaxTask(action, params , done)
  946. {
  947. dump('AjaxTask');
  948. if ( !hasConnection() ){
  949. toastMsg( getTrans("Not connected to internet","no_connection") );
  950. done();
  951. return;
  952. }
  953.  
  954. params+="&lang_id="+getStorage("kr_lang_id");
  955. if(!empty(krms_driver_config.APIHasKey)){
  956. params+="&api_key="+krms_driver_config.APIHasKey;
  957. }
  958. if ( !empty( getStorage("kr_token") )){
  959. params+="&token="+ getStorage("kr_token");
  960. }
  961.  
  962. dump(ajax_url+"/"+action+"?"+params);
  963.  
  964. ajax_request = $.ajax({
  965. url: ajax_url+"/"+action,
  966. data: params,
  967. type: 'post',
  968. async: false,
  969. dataType: 'jsonp',
  970. timeout: 6000,
  971. crossDomain: true,
  972. beforeSend: function() {
  973. if(ajax_request != null) {
  974. ajax_request.abort();
  975. } else {
  976. }
  977. },
  978. complete: function(data) {
  979. ajax_request=null;
  980. },
  981. success: function (data) {
  982. dump(data);
  983. done();
  984. if ( data.code==1){
  985.  
  986. $(".no-task-wrap").hide();
  987. $("#task-wrapper").show();
  988. dump( 'fill task' );
  989. $("#task-wrapper").html( formatTask( data.details ) );
  990.  
  991. } else {
  992. $(".no-task-wrap").show();
  993. $(".no-task-wrap p").html( data.msg );
  994. $("#task-wrapper").html('');
  995. toastMsg( data.msg );
  996. }
  997. },
  998. error: function (request,error) {
  999. done();
  1000. }
  1001. });
  1002.  
  1003. }
  1004.  
  1005. function getTrans(words,words_key)
  1006. {
  1007.  
  1008. }
  1009.  
  1010. function onsenAlert(message,dialog_title)
  1011. {
  1012. if (typeof dialog_title === "undefined" || dialog_title==null || dialog_title=="" ) {
  1013. dialog_title=dialog_title_default;
  1014. }
  1015. ons.notification.alert({
  1016. message: message,
  1017. title:dialog_title
  1018. });
  1019. }
  1020.  
  1021. function toastMsg( message )
  1022. {
  1023.  
  1024. if (isDebug()){
  1025. onsenAlert( message );
  1026. return ;
  1027. }
  1028.  
  1029. window.plugins.toast.showWithOptions(
  1030. {
  1031. message: message ,
  1032. duration: "long",
  1033. position: "bottom",
  1034. addPixelsY: -40
  1035. },
  1036. function(args) {
  1037.  
  1038. },
  1039. function(error) {
  1040. onsenAlert( message );
  1041. }
  1042. );
  1043. }
  1044.  
  1045. function hideAllModal()
  1046. {
  1047. setTimeout('loader.hide()', 1);
  1048. }
  1049.  
  1050. function login() {
  1051. var params = $( ".frm").serialize();
  1052. params+="&device_id="+ getStorage("device_id");
  1053. params+="&device_platform="+ getStorage("device_platform");
  1054. dump(params);
  1055. callAjax("login",params);
  1056. }
  1057.  
  1058. function forgotPass()
  1059. {
  1060. dump('forgotPass');
  1061. var params = $( "#frm-forgotpass").serialize();
  1062. dump(params);
  1063. callAjax("ForgotPassword",params);
  1064. }
  1065.  
  1066. var xx=0;
  1067. var lastUpdateTime,
  1068. minFrequency = 10*2000;
  1069.  
  1070. function getCurrentPosition()
  1071. {
  1072. watchID = navigator.geolocation.watchPosition( function(position) {
  1073. //navigator.geolocation.getCurrentPosition( function(position) {
  1074.  
  1075. var now = new Date();
  1076.  
  1077. dump( position.coords.latitude);
  1078. dump( position.coords.longitude );
  1079.  
  1080. var now = new Date();
  1081.  
  1082. if(!empty(lastUpdateTime)){
  1083. var freq_time = now.getTime() - lastUpdateTime.getTime();
  1084. if ( freq_time < minFrequency ) {
  1085. dump("Ignoring position update");
  1086. return ;
  1087. }
  1088. }
  1089. lastUpdateTime = now;
  1090. //$(".watch-id").html( xx++ );
  1091.  
  1092. params = 'lat='+ position.coords.latitude + "&lng=" + position.coords.longitude;
  1093. callAjax2('updateDriverLocation', params);
  1094.  
  1095. },function(error) {
  1096. dump('error position');
  1097. navigator.geolocation.clearWatch(watchID);
  1098. },
  1099. { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1100. );
  1101. }
  1102.  
  1103. var showChangePassword = function() {
  1104. var dialog = document.getElementById('dialogChangePass');
  1105. if (dialog) {
  1106. dialog.show();
  1107. } else {
  1108. ons.createDialog('changePassword.html')
  1109. .then(function(dialog) {
  1110. dialog.show();
  1111. setTimeout('TransLatePage()', 300);
  1112. });
  1113. }
  1114. };
  1115.  
  1116. function changePassword()
  1117. {
  1118. var params = $( "#frm-changepass").serialize();
  1119. callAjax("ChangePassword",params);
  1120. }
  1121.  
  1122. var onduty_handle=0;
  1123.  
  1124. function changeDuty()
  1125. {
  1126. onduty_handle++;
  1127. dump(onduty_handle);
  1128. var onduty = document.getElementById('onduty').checked==true?1:2 ;
  1129. params="onduty="+onduty;
  1130. //if ( onduty_handle==2){
  1131. callAjax("ChangeDutyStatus",params);
  1132. onduty_handle=0;
  1133. //}
  1134. if ( onduty==2){
  1135. navigator.geolocation.clearWatch(watchID);
  1136. } else {
  1137. checkGPS();
  1138. }
  1139. }
  1140.  
  1141. var showMenu = function(element) {
  1142. popover.show(element);
  1143. };
  1144.  
  1145. function getTodayTask(raw_date)
  1146. {
  1147. if (empty(raw_date)){
  1148. raw_date=getStorage('kr_todays_date_raw');
  1149. }
  1150. callAjax("getTaskByDate","date="+raw_date);
  1151. }
  1152.  
  1153. function showTask(task_id)
  1154. {
  1155. dump(task_id);
  1156. reload_home=2;
  1157. /*kNavigator.pushPage("taskDetails.html", {
  1158. animation: 'slide',
  1159. }).then(function(page) {
  1160. callAjax("TaskDetails",'task_id=' + task_id);
  1161. }); */
  1162. kNavigator.pushPage("taskDetails.html", {
  1163. animation: 'slide',
  1164. callback: function(){
  1165. callAjax("TaskDetails",'task_id=' + task_id);
  1166. }
  1167. });
  1168. }
  1169.  
  1170. function viewTaskDescription(task_id)
  1171. {
  1172. kNavigator.pushPage("viewTaskDescription.html", {
  1173. animation: 'none',
  1174. callback: function(){
  1175. callAjax("viewTaskDescription",'task_id=' + task_id);
  1176. }
  1177. });
  1178. }
  1179.  
  1180. function swicthButtonAction( task_id, status_raw )
  1181. {
  1182. dump(status_raw);
  1183. var html=''; var action='';
  1184. dump("swicthButtonAction " + status_raw);
  1185. switch (status_raw)
  1186. {
  1187. case "assigned":
  1188. case "unassigned":
  1189. action='acknowledged';
  1190. html+='<p><ons-button modifier="large yellow-button"';
  1191. html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" > '+ getTrans("Accept",'accept') +' </ons-button></p>';
  1192.  
  1193. action='declined';
  1194. html+='<p><ons-button modifier="quiet"';
  1195. html+='onclick="declinedTask('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans("Decline",'decline') +'</ons-button></p>';
  1196. break;
  1197.  
  1198. case "acknowledged":
  1199. action='started';
  1200. html+='<p><ons-button modifier="large yellow-button"';
  1201. html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans('Start','start') +'</ons-button></p>';
  1202.  
  1203. action='cancelled';
  1204. html+='<p><ons-button modifier="quiet"';
  1205. html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+ getTrans('Cancel','cancel') +'</ons-button></p>';
  1206. break;
  1207.  
  1208. case "started":
  1209. action='inprogress';
  1210. html+='<p><ons-button modifier="large yellow-button"';
  1211. html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Arrived','arrived')+'</ons-button></p>';
  1212.  
  1213. action='cancelled';
  1214. html+='<p><ons-button modifier="quiet"';
  1215. html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Cancel','cancel')+'</ons-button></p>';
  1216. break;
  1217.  
  1218. case "inprogress":
  1219. action='successful';
  1220. html+='<p><ons-button modifier="large yellow-button"';
  1221. html+='onclick="changeTaskStatus('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Successful','successful')+'</ons-button></p>';
  1222.  
  1223. action='failed';
  1224. html+='<p><ons-button modifier="quiet"';
  1225. html+='onclick="ShowAddReason('+task_id+','+ "'"+action+"'" +' )" >'+getTrans('Failed','failed')+'</ons-button></p>';
  1226. break;
  1227.  
  1228. case "successful":
  1229. break;
  1230.  
  1231. case "failed":
  1232. break;
  1233.  
  1234. case "declined":
  1235. break;
  1236.  
  1237. case "cancelled":
  1238. break;
  1239.  
  1240. default:
  1241. break;
  1242. }
  1243. return html ;
  1244. }
  1245.  
  1246. function changeTaskStatus(task_id, status_raw )
  1247. {
  1248. dump(task_id );
  1249. dump(status_raw);
  1250. callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw ) ;
  1251. }
  1252.  
  1253. function reloadHome()
  1254. {
  1255. dump('reloadHome');
  1256. dump(reload_home);
  1257. if ( reload_home==1){
  1258. getTodayTask('');
  1259. }
  1260. }
  1261.  
  1262. function ShowAddReason(task_id , status_raw)
  1263. {
  1264. dump(task_id);
  1265. dump(status_raw);
  1266.  
  1267. var dialog = document.getElementById('reasonTask');
  1268. if (dialog) {
  1269. dialog.show();
  1270. $("#reason_task_id").val( task_id );
  1271. $("#reason_status_raw").val( status_raw );
  1272. } else {
  1273. ons.createDialog('reasonTask.html')
  1274. .then(function(dialog) {
  1275. dialog.show();
  1276. $("#reason_task_id").val( task_id );
  1277. $("#reason_status_raw").val( status_raw );
  1278. setTimeout('TransLatePage()', 300);
  1279. });
  1280. }
  1281. }
  1282.  
  1283. function declinedTask( task_id , status_raw )
  1284. {
  1285. dump(task_id);
  1286. dump(status_raw);
  1287. ons.notification.confirm({
  1288. title:dialog_title_default,
  1289. message:"Are you sure?",
  1290. buttonLabels: ['No', 'Yes'],
  1291. })
  1292. .then(
  1293. function(answer) {
  1294. if (answer === 1) {
  1295. dump('ok');
  1296. callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw ) ;
  1297. }
  1298. }
  1299. );
  1300. }
  1301.  
  1302. function AddReasonTask()
  1303. {
  1304. if ( $("#reason").val()==""){
  1305. onsenAlert("Reason is required");
  1306. return;
  1307. }
  1308. var task_id=$("#reason_task_id").val();
  1309. var status_raw=$("#reason_status_raw").val();
  1310. reasonTask.hide();
  1311. callAjax("changeTaskStatus",'task_id=' + task_id +"&status_raw="+status_raw + "&reason="+ $("#reason").val() ) ;
  1312. }
  1313.  
  1314. function ShowSignaturePage( task_id , signature , status )
  1315. {
  1316. kNavigator.pushPage("Signature.html", {
  1317. animation: 'none',
  1318. callback: function(){
  1319. $(".task_id_signature").val( task_id );
  1320. if ( status=="successful"){
  1321. $(".toolbar-title-signature").html( getTrans("View Signature",'view_signature') );
  1322. $(".signature-action").hide();
  1323. if ( !empty(signature)){
  1324.  
  1325. signature_html='<div class="img_loaded" >';
  1326. signature_html += '<img src="'+signature+'" />';
  1327. signature_html+='</div>';
  1328.  
  1329. $("#signature-pan").html ( signature_html ) ;
  1330.  
  1331. imageLoaded('.img_loaded');
  1332. }
  1333. } else {
  1334. $(".toolbar-title-signature").html( getTrans("Add Signature",'add_signature') );
  1335. $(".signature-action").show();
  1336. $("#signature-pan").jSignature();
  1337. }
  1338. }
  1339. });
  1340. }
  1341.  
  1342. function resetSignature()
  1343. {
  1344. dump('resetSignature');
  1345. $("#signature-pan").jSignature("reset");
  1346. }
  1347.  
  1348. function AddSignatureToTask()
  1349. {
  1350. //var datapair = $("#signature-pan").jSignature("getData", "svgbase64");
  1351. var datapair = $("#signature-pan").jSignature("getData","base30");
  1352. callAjax("AddSignatureToTask","image="+datapair +"&task_id=" + $(".task_id_signature").val() );
  1353. }
  1354.  
  1355. function imageLoaded(div_id)
  1356. {
  1357. $(div_id).imagesLoaded()
  1358. .always( function( instance ) {
  1359. console.log('all images loaded');
  1360. })
  1361. .done( function( instance ) {
  1362. console.log('all images successfully loaded');
  1363. })
  1364. .fail( function() {
  1365. console.log('all images loaded, at least one is broken');
  1366. })
  1367. .progress( function( instance, image ) {
  1368. var result = image.isLoaded ? 'loaded' : 'broken';
  1369. image.img.parentNode.className = image.isLoaded ? '' : 'is-broken';
  1370. console.log( 'image is ' + result + ' for ' + image.img.src );
  1371. });
  1372. }
  1373.  
  1374. function showCalendarView()
  1375. {
  1376. kNavigator.pushPage("CalendarView.html", {
  1377. animation: 'slide',
  1378. callback: function(){
  1379. dump('CalendarView');
  1380. }
  1381. });
  1382. }
  1383.  
  1384. function showTransportType()
  1385. {
  1386. var dialog = document.getElementById('transporType');
  1387. if (dialog) {
  1388. dialog.show();
  1389. } else {
  1390. ons.createDialog('transporType.html')
  1391. .then(function(dialog) {
  1392. callAjax("GetTransport",'');
  1393. dialog.show();
  1394. });
  1395. }
  1396. }
  1397.  
  1398. function setTransportType(key , val)
  1399. {
  1400. transporType.hide();
  1401. $(".transport_type_id2").html( val );
  1402. $(".transport_type_id").val( key );
  1403. switchTransportFields( key );
  1404. }
  1405.  
  1406. function switchTransportFields( transport_type )
  1407. {
  1408. if ( transport_type=="walk" ){
  1409. $(".with-car").hide();
  1410. } else {
  1411. $(".with-car").show();
  1412. }
  1413. }
  1414.  
  1415. function UpdateForms(form_id , action )
  1416. {
  1417. var params = $( "#"+form_id).serialize();
  1418. callAjax(action,params);
  1419. }
  1420.  
  1421. var switch_handle=0;
  1422.  
  1423. function UpdatePush()
  1424. {
  1425. switch_handle++;
  1426. dump('UpdatePush');
  1427. var enabled_push = document.getElementById('enabled_push').checked==true?1:2 ;
  1428. params="enabled_push="+enabled_push;
  1429. //if ( switch_handle==2){
  1430. callAjax("SettingPush",params);
  1431. switch_handle=0;
  1432. //}
  1433. }
  1434.  
  1435.  
  1436. function ShowLanguageOption()
  1437. {
  1438. var dialog = document.getElementById('LanguageList');
  1439. if (dialog) {
  1440. callAjax("LanguageList",'');
  1441. dialog.show();
  1442. } else {
  1443. ons.createDialog('LanguageList.html')
  1444. .then(function(dialog) {
  1445. callAjax("LanguageList",'');
  1446. dialog.show();
  1447. });
  1448. }
  1449. }
  1450.  
  1451. function SetLanguage(lang_id , language)
  1452. {
  1453. dump(lang_id);
  1454. dump(language);
  1455. $(".language_selected").html( language );
  1456. setStorage("kr_lang_id",lang_id);
  1457. LanguageList.hide();
  1458. TransLatePage();
  1459. }
  1460.  
  1461. function Logout()
  1462. {
  1463. removeStorage('kr_username');
  1464. removeStorage('kr_password');
  1465. removeStorage('kr_remember');
  1466.  
  1467. popover.hide();
  1468. $(".auto-login-wrap").hide();
  1469. $("#frm-login").show();
  1470. $(".login-header").show();
  1471. kNavigator.popPage().then(function() {
  1472. // clear watch id
  1473. navigator.geolocation.clearWatch(watchID);
  1474. callAjax("Logout",'');
  1475. });
  1476. }
  1477.  
  1478. function TransLatePage()
  1479. {
  1480. var dictionary;
  1481. dump('TransLating page');
  1482. if (typeof getStorage("kr_translation") === "undefined" || getStorage("kr_translation")==null || getStorage("kr_translation")=="" ) {
  1483. return;
  1484. } else {
  1485. dictionary = JSON.parse( getStorage("kr_translation") );
  1486. }
  1487. if (!empty(dictionary)){
  1488. //dump(dictionary);
  1489. var kr_lang_id=getStorage("kr_lang_id");
  1490. if (!empty(kr_lang_id)){
  1491. //dump(kr_lang_id);
  1492. translator = $('body').translate({lang: kr_lang_id, t: dictionary});
  1493. translateForms();
  1494. translateTabs();
  1495. }
  1496. }
  1497. }
  1498.  
  1499. function translateForms()
  1500. {
  1501. var t='';
  1502. $.each( $(".field-wrap") , function() {
  1503. var temp_value=$(this).find("input.text-input").attr("placeholder");
  1504. if(!empty(temp_value)){
  1505. key = $(this).find("ons-input").data("trn-key");
  1506. t = getTrans(temp_value, key );
  1507. $(this).find("input.text-input").attr("placeholder",t);
  1508. $(this).find("._helper").html(t);
  1509. }
  1510. });
  1511. }
  1512.  
  1513. function translateTabs()
  1514. {
  1515. var t='';
  1516. $.each( $(".tab-bar__item") , function() {
  1517. var temp_value=$(this).find(".tab-bar__label").html();
  1518. if(!empty(temp_value)){
  1519. key = $(this).data("trn-key");
  1520. t = getTrans(temp_value, key );
  1521. $(this).find(".tab-bar__label").html(t);
  1522. }
  1523. });
  1524. }
  1525.  
  1526. function getTrans(words,words_key)
  1527. {
  1528. var temp_dictionary='';
  1529.  
  1530. if (typeof getStorage("kr_translation") === "undefined" || getStorage("kr_translation")==null || getStorage("kr_translation")=="" ) {
  1531. return words;
  1532. } else {
  1533. temp_dictionary = JSON.parse( getStorage("kr_translation") );
  1534. }
  1535.  
  1536. if (!empty(temp_dictionary)){
  1537. //dump(temp_dictionary);
  1538. var default_lang=getStorage("kr_lang_id");
  1539. //dump(default_lang);
  1540. if (default_lang!="undefined" && default_lang!=""){
  1541. //dump("OK");
  1542. if ( array_key_exists(words_key,temp_dictionary) ){
  1543. //dump('found=>' + words_key +"=>"+ temp_dictionary[words_key][default_lang]);
  1544. return temp_dictionary[words_key][default_lang];
  1545. }
  1546. }
  1547. }
  1548. return words;
  1549. }
  1550.  
  1551. function array_key_exists(key, search) {
  1552. if (!search || (search.constructor !== Array && search.constructor !== Object)) {
  1553. return false;
  1554. }
  1555. return key in search;
  1556. }
  1557.  
  1558. function isAutoLogin()
  1559. {
  1560. var auto_login=2;
  1561. var kr_remember = getStorage("kr_remember");
  1562. if ( kr_remember=="on"){
  1563. var kr_username=getStorage("kr_username");
  1564. var kr_password=getStorage("kr_password");
  1565. var kr_remember=getStorage("kr_remember");
  1566. if (!empty(kr_username) && !empty(kr_password)){
  1567. auto_login=1;
  1568. }
  1569. }
  1570. return auto_login;
  1571. }
  1572.  
  1573. function ShowOrderDetails( order_id )
  1574. {
  1575. kNavigator.pushPage("OrderDetails.html", {
  1576. animation: 'slide',
  1577. callback: function(){
  1578. callAjax("ViewOrderDetails",'order_id=' + order_id );
  1579. }
  1580. });
  1581. }
  1582.  
  1583. var watch_count=1;
  1584.  
  1585. var onSuccess = function(position) {
  1586. var html='';
  1587. html='Lat : '+position.coords.latitude;
  1588. html+='<br/>';
  1589. html+= watch_count++;
  1590. html+='<br/>';
  1591. html+='Lat : '+position.coords.longitude;
  1592. $(".location-res").html( html );
  1593. };
  1594.  
  1595. function onError(error) {
  1596. alert('code: ' + error.code + '\n' +
  1597. 'message: ' + error.message + '\n');
  1598. }
  1599.  
  1600. function checkGPS()
  1601. {
  1602. if (isDebug()){
  1603. return ;
  1604. }
  1605.  
  1606. if ( device.platform =="iOS"){
  1607. getCurrentPosition();
  1608. return;
  1609. }
  1610.  
  1611. cordova.plugins.locationAccuracy.request( onRequestSuccess,
  1612. onRequestFailure, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY);
  1613. }
  1614.  
  1615. function onRequestSuccess(success){
  1616. //alert("Successfully requested accuracy: "+success.message);
  1617. getCurrentPosition();
  1618. }
  1619.  
  1620. function onRequestFailure(error){
  1621. //alert("Accuracy request failed: error code="+error.code+"; error message="+error.message);
  1622. if(error.code == 4){
  1623. toastMsg( getTrans("You have choosen not to turn on location accuracy",'turn_off_location') );
  1624. checkGPS();
  1625. } else {
  1626. toastMsg( error.message );
  1627. }
  1628. }
  1629.  
  1630. /*function toastOnSuccess()
  1631. {
  1632. }
  1633. function toastOnError()
  1634. {
  1635. }*/
  1636.  
  1637. function viewTaskMap(task_id , task_lat, task_lng , delivery_address )
  1638. {
  1639. setStorage("task_lat", task_lat );
  1640. setStorage("task_lng", task_lng );
  1641. setStorage("delivery_address", delivery_address );
  1642.  
  1643. kNavigator.pushPage("Map.html", {
  1644. animation: 'fade',
  1645. callback: function(){
  1646. viewTaskMapInit();
  1647. }
  1648. });
  1649. }
  1650.  
  1651. function viewTaskMapInit()
  1652. {
  1653. var task_lat=getStorage('task_lat');
  1654. var task_lng=getStorage('task_lng');
  1655. dump(task_lng);
  1656. dump(task_lat);
  1657.  
  1658. google_lat = new plugin.google.maps.LatLng( task_lat , task_lng );
  1659.  
  1660. /*
  1661. var div = document.getElementById("map_canvas");
  1662. map = plugin.google.maps.Map.getMap(div,{
  1663. 'camera': {
  1664. 'latLng': google_lat,
  1665. 'zoom': 17
  1666. }
  1667. });
  1668. map.on(plugin.google.maps.event.MAP_READY, onMapInit);
  1669. */
  1670.  
  1671. //$('.page__background').not('.page--menu-page__background').css('background-color', 'rgba(0,0,0,0)');
  1672.  
  1673. setTimeout(function(){
  1674. var div = document.getElementById("map_canvas");
  1675. $('#map_canvas').css('height', $(window).height() - $('#map_canvas').offset().top);
  1676.  
  1677. map = plugin.google.maps.Map.getMap(div, {
  1678. 'camera': {
  1679. 'latLng': google_lat,
  1680. 'zoom': 17
  1681. }
  1682. });
  1683. map.setBackgroundColor('white');
  1684.  
  1685. map.on(plugin.google.maps.event.MAP_READY, onMapInit);
  1686.  
  1687. }, 500); // and timeout for clear transitions
  1688. }
  1689.  
  1690. function onMapInit()
  1691. {
  1692. /*map.clear();
  1693. map.showDialog();*/
  1694. map.clear();
  1695. var task_lat=getStorage('task_lat');
  1696. var task_lng=getStorage('task_lng');
  1697. var delivery_address=getStorage('delivery_address');
  1698.  
  1699. map.addMarker({
  1700. 'position': new plugin.google.maps.LatLng( task_lat , task_lng ),
  1701. 'title': delivery_address ,
  1702. 'snippet': getTrans( "Destination" ,'destination')
  1703. }, function(marker) {
  1704.  
  1705. marker.showInfoWindow();
  1706.  
  1707. navigator.geolocation.getCurrentPosition( function(position) {
  1708.  
  1709. var driver_location = new plugin.google.maps.LatLng(position.coords.latitude , position.coords.longitude);
  1710. //demo
  1711. //var driver_location = new plugin.google.maps.LatLng( 34.039413 , -118.25480649999997 );
  1712.  
  1713. var destination = new plugin.google.maps.LatLng( task_lat , task_lng );
  1714.  
  1715. map.addPolyline({
  1716. points: [
  1717. destination,
  1718. driver_location
  1719. ],
  1720. 'color' : '#AA00FF',
  1721. 'width': 10,
  1722. 'geodesic': true
  1723. }, function(polyline) {
  1724.  
  1725. map.animateCamera({
  1726. 'target': driver_location,
  1727. 'zoom': 17,
  1728. 'tilt': 30
  1729. }, function() {
  1730.  
  1731. var data = [
  1732. {'title': getTrans('You are here','you_are_here'), 'position': driver_location }
  1733. ];
  1734.  
  1735. addMarkers(data, function(markers) {
  1736. markers[markers.length - 1].showInfoWindow();
  1737. });
  1738.  
  1739. });
  1740.  
  1741. });
  1742. // end position success
  1743.  
  1744. }, function(error){
  1745. toastMsg( error.message );
  1746. // end position error
  1747. },
  1748. { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1749. );
  1750. });
  1751. }
  1752.  
  1753. function addMarkers(data, callback) {
  1754. var markers = [];
  1755. function onMarkerAdded(marker) {
  1756. markers.push(marker);
  1757. if (markers.length === data.length) {
  1758. callback(markers);
  1759. }
  1760. }
  1761. data.forEach(function(markerOptions) {
  1762. map.addMarker(markerOptions, onMarkerAdded);
  1763. });
  1764. }
  1765.  
  1766. function viewTaskDirection()
  1767. {
  1768. /*plugin.google.maps.external.launchNavigation({
  1769. "from": "Tokyo, Japan",
  1770. "to": "Kyoto, Japan"
  1771. });*/
  1772.  
  1773. /*var delivery_address=getStorage('delivery_address');
  1774. dump(delivery_address);*/
  1775.  
  1776. var task_lat=getStorage('task_lat');
  1777. var task_lng=getStorage('task_lng');
  1778.  
  1779. navigator.geolocation.getCurrentPosition( function(position) {
  1780.  
  1781. var yourLocation = new plugin.google.maps.LatLng(position.coords.latitude , position.coords.longitude);
  1782. //demo
  1783. //var yourLocation = new plugin.google.maps.LatLng(34.039413 , -118.25480649999997);
  1784.  
  1785. var destination_location = new plugin.google.maps.LatLng(task_lat , task_lng);
  1786.  
  1787. plugin.google.maps.external.launchNavigation({
  1788. "from": yourLocation,
  1789. "to": destination_location
  1790. });
  1791.  
  1792. // end position success
  1793. }, function(error){
  1794. toastMsg( error.message );
  1795. // end position error
  1796. },
  1797. { timeout: 10000, enableHighAccuracy : getLocationAccuracy() }
  1798. );
  1799. }
  1800.  
  1801. function clearPushCount()
  1802. {
  1803. removeStorage("push_count");
  1804. $(".baloon-notification").html('');
  1805. $(".baloon-notification").hide();
  1806. }
  1807.  
  1808. function playNotification()
  1809. {
  1810. //var sound_url= getStorage("notification_sound_url");
  1811. var sound_url= "file:///android_asset/www/audio/fb-alert.mp3";
  1812. dump(sound_url);
  1813. if(!empty(sound_url)){
  1814. playAudio(sound_url);
  1815. }
  1816. }
  1817.  
  1818. var my_media;
  1819.  
  1820. function playAudio(url) {
  1821. // Play the audio file at url
  1822. my_media = new Media(url,
  1823. // success callback
  1824. function () {
  1825. dump("playAudio():Audio Success");
  1826. my_media.stop();
  1827. my_media.release();
  1828. },
  1829. // error callback
  1830. function (err) {
  1831. dump("playAudio():Audio Error: " + err);
  1832. }
  1833. );
  1834. // Play audio
  1835. my_media.play();
  1836. }
  1837.  
  1838. function stopNotification()
  1839. {
  1840. my_media.stop();
  1841. my_media.release();
  1842. }
  1843.  
  1844. function AjaxNotification(action, params , done)
  1845. {
  1846. dump('AjaxNotification');
  1847. if ( !hasConnection() ){
  1848. toastMsg( getTrans("Not connected to internet","no_connection") );
  1849. done();
  1850. return;
  1851. }
  1852.  
  1853. params+="&lang_id="+getStorage("kr_lang_id");
  1854. if(!empty(krms_driver_config.APIHasKey)){
  1855. params+="&api_key="+krms_driver_config.APIHasKey;
  1856. }
  1857. if ( !empty( getStorage("kr_token") )){
  1858. params+="&token="+ getStorage("kr_token");
  1859. }
  1860.  
  1861. dump(ajax_url+"/"+action+"?"+params);
  1862.  
  1863. ajax_request3 = $.ajax({
  1864. url: ajax_url+"/"+action,
  1865. data: params,
  1866. type: 'post',
  1867. async: false,
  1868. dataType: 'jsonp',
  1869. timeout: 6000,
  1870. crossDomain: true,
  1871. beforeSend: function() {
  1872. if(ajax_request != null) {
  1873. ajax_request3.abort();
  1874. } else {
  1875. }
  1876. },
  1877. complete: function(data) {
  1878. //ajax_request3=null;
  1879. ajax_request3 = (function () { return; })();
  1880. },
  1881. success: function (data) {
  1882. dump(data);
  1883. done();
  1884. if ( data.code==1){
  1885. $("#notifications-details").html( formatNotifications( data.details ) );
  1886. } else {
  1887. $("#notifications-details").html('');
  1888. toastMsg( data.msg );
  1889. }
  1890. },
  1891. error: function (request,error) {
  1892. done();
  1893. }
  1894. });
  1895.  
  1896. }
  1897.  
  1898. function getLocationAccuracy()
  1899. {
  1900. var location_accuracy = getStorage("kr_location_accuracy");
  1901. if(!empty(location_accuracy)){
  1902. if ( location_accuracy == 1){
  1903. return true;
  1904. }
  1905. }
  1906. return false;
  1907. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement