routes.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  1. import BlankPage from './pages/blank.f7.html';
  2. import NotFoundPage from './pages/not-found.f7.html';
  3. import InitPage from './pages/init.f7.html';
  4. import LandingPage from './pages/landing.f7.html';
  5. import LandingHomePage from './pages/landing-home.f7.html';
  6. import LandingAboutPage from './pages/landing-about.f7.html';
  7. import LandingTutorialPage from './pages/landing-tutorial.f7.html';
  8. import LandingContactPage from './pages/landing-contact.f7.html';
  9. import LandingRegisterPage from './pages/landing-register.f7.html';
  10. import HomePage from './pages/home.f7.html';
  11. import ProfilePage from './pages/profile.f7.html';
  12. import PatientPage from './pages/patient.f7.html';
  13. import PatientFilesPage from './pages/patient-files.f7.html';
  14. import PatientFilesExistingPage from './pages/patient-files-existing.f7.html';
  15. import PatientFilesNewPage from './pages/patient-files-new.f7.html';
  16. import PatientFilesPacsPage from './pages/patient-files-pacs.f7.html';
  17. import PatientRisksPage from './pages/patient-risks.f7.html';
  18. import PatientHistoryPage from './pages/patient-history.f7.html';
  19. import PatientFamilyPage from './pages/patient-family.f7.html';
  20. import PatientExaminationPage from './pages/patient-examination.f7.html';
  21. import PatientTreatmentsPage from './pages/patient-treatments.f7.html';
  22. import ReportPage from './pages/report-config.f7.html';
  23. import ExportPage from './pages/export.f7.html';
  24. import AcquirePage from './pages/acquire-area.f7.html';
  25. import AcquireMediaPage from './pages/acquire-media.f7.html';
  26. import MeasurePage from './pages/measure.f7.html';
  27. export default [
  28. // Default page
  29. {
  30. path: '/',
  31. component: BlankPage,
  32. },
  33. // Init page
  34. {
  35. path: '/init/',
  36. component: InitPage,
  37. },
  38. // Landing page
  39. {
  40. path: '/landing/',
  41. component: LandingPage,
  42. },
  43. // Landing home page
  44. {
  45. path: '/landing-home/',
  46. component: LandingHomePage,
  47. },
  48. // Landing about page
  49. {
  50. path: '/landing-about/',
  51. component: LandingAboutPage,
  52. },
  53. // Landing tutorial page
  54. {
  55. path: '/landing-tutorial/',
  56. component: LandingTutorialPage,
  57. },
  58. // Landing contact page
  59. {
  60. path: '/landing-contact/',
  61. component: LandingContactPage,
  62. },
  63. // Landing register page
  64. {
  65. path: '/landing-register/',
  66. async: function (routeTo, routeFrom, resolve, reject) {
  67. var app = this.app;
  68. app.preloader.show();
  69. app.request.promise.json(app.data.config.apiBaseURL + '/account/signup/?lang='+global.lang+'&apiKey=')
  70. .then(data => {
  71. // Process response
  72. console.log("account/signup", data);
  73. app.preloader.hide();
  74. if (data.result == 'ERROR') {
  75. reject();
  76. switch (data.reason) {
  77. default:
  78. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  79. break;
  80. }
  81. }
  82. else {
  83. resolve({
  84. component: LandingRegisterPage,
  85. }, {
  86. context: data,
  87. });
  88. }
  89. }).catch(e => {
  90. console.log(e);
  91. reject();
  92. app.preloader.hide();
  93. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  94. });
  95. }
  96. },
  97. // Home page
  98. {
  99. path: '/home/',
  100. async: function (routeTo, routeFrom, resolve, reject) {
  101. var app = this.app;
  102. app.preloader.show();
  103. app.request.promise.json(app.data.config.apiBaseURL + '/home/?apiKey=')
  104. .then(data => {
  105. // Refresh token if needed
  106. app.methods.refreshToken(data);
  107. // Process response
  108. console.log("home", data);
  109. app.preloader.hide();
  110. if (data.result == 'ERROR') {
  111. reject();
  112. switch (data.reason) {
  113. case 'denied':
  114. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  115. break;
  116. default:
  117. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  118. break;
  119. }
  120. }
  121. else {
  122. if(data.credit_left==0) {
  123. app.methods.signout(global.tr[global.lang].topLevel.warning.no_credit);
  124. }
  125. else {
  126. app.data.settings = data.settings;
  127. console.log("settings", app.data.settings);
  128. resolve({
  129. component: HomePage,
  130. }, {
  131. context: data,
  132. });
  133. app.views.create('.view-home', {
  134. name: 'homeView',
  135. url: '/patient/'
  136. });
  137. }
  138. }
  139. }).catch(e => {
  140. console.log(e);
  141. reject();
  142. app.preloader.hide();
  143. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  144. });
  145. }
  146. },
  147. // Export page
  148. {
  149. path: '/export/',
  150. async: function (routeTo, routeFrom, resolve, reject) {
  151. var app = this.app;
  152. app.preloader.show();
  153. app.request.get(app.data.config.apiBaseURL + '/home/export/?apiKey=', function (data) {
  154. // Refresh token if needed
  155. app.methods.refreshToken(data);
  156. // Process response
  157. console.log('home/export', data);
  158. app.preloader.hide();
  159. if (data.result == 'ERROR') {
  160. switch (data.reason) {
  161. case 'denied':
  162. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  163. break;
  164. default:
  165. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  166. break;
  167. }
  168. }
  169. else {
  170. resolve({
  171. component: ExportPage,
  172. }, {
  173. context: data,
  174. });
  175. }
  176. }, function (data) {
  177. console.log(e);
  178. reject();
  179. app.preloader.hide();
  180. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  181. }, 'json');
  182. }
  183. },
  184. // Profile page
  185. {
  186. path: '/profile/',
  187. async: function (routeTo, routeFrom, resolve, reject) {
  188. var app = this.app;
  189. app.preloader.show();
  190. app.request.promise.json(app.data.config.apiBaseURL + '/profile/?lang='+global.lang+'&apiKey=')
  191. .then(data => {
  192. // Refresh token if needed
  193. app.methods.refreshToken(data);
  194. // Process response
  195. console.log("profile", data);
  196. app.preloader.hide();
  197. if (data.result == 'ERROR') {
  198. reject();
  199. switch (data.reason) {
  200. case 'denied':
  201. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  202. break;
  203. default:
  204. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  205. break;
  206. }
  207. }
  208. else {
  209. resolve({
  210. component: ProfilePage,
  211. }, {
  212. context: data,
  213. });
  214. }
  215. }).catch(e => {
  216. console.log(e);
  217. reject();
  218. app.preloader.hide();
  219. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  220. });
  221. }
  222. },
  223. // Patient page
  224. {
  225. path: '/patient/',
  226. async: function (routeTo, routeFrom, resolve, reject) {
  227. resolve({
  228. component: PatientPage,
  229. }, {
  230. context: {},
  231. });
  232. app.views.create('.view-home-patient', {
  233. name: 'homePatientView',
  234. url: '/patient-files/'
  235. });
  236. app.data.patient.ID = null;
  237. app.data.patient.visitID = null;
  238. }
  239. },
  240. // Patient files page
  241. {
  242. path: '/patient-files/',
  243. async: function (routeTo, routeFrom, resolve, reject) {
  244. resolve({
  245. component: PatientFilesPage,
  246. }, {
  247. context: {},
  248. });
  249. app.views.create('#view-home-patient-files-existing', {
  250. name: 'homePatientFilesExistingView',
  251. url: '/patient-files-existing/'
  252. });
  253. app.views.create('#view-home-patient-files-new', {
  254. name: 'homePatientFilesNewView',
  255. url: '/patient-files-new/'
  256. });
  257. app.views.create('#view-home-patient-files-pacs', {
  258. name: 'homePatientFilesPacsView',
  259. url: '/patient-files-pacs/'
  260. });
  261. }
  262. },
  263. // Patient files existing page
  264. {
  265. path: '/patient-files-existing/',
  266. async: function (routeTo, routeFrom, resolve, reject) {
  267. var app = this.app;
  268. app.preloader.show();
  269. app.request.promise.json(app.data.config.apiBaseURL + '/patient/files-existing/?apiKey=')
  270. .then(data => {
  271. // Refresh token if needed
  272. app.methods.refreshToken(data);
  273. // Process response
  274. console.log("patient/files-existing", data);
  275. app.preloader.hide();
  276. if (data.result == 'ERROR') {
  277. reject();
  278. switch (data.reason) {
  279. case 'denied':
  280. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  281. break;
  282. default:
  283. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  284. break;
  285. }
  286. }
  287. else {
  288. resolve({
  289. component: PatientFilesExistingPage,
  290. }, {
  291. context: data,
  292. });
  293. }
  294. }).catch(e => {
  295. console.log(e);
  296. reject();
  297. app.preloader.hide();
  298. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  299. });
  300. }
  301. },
  302. // Patient files new page
  303. {
  304. path: '/patient-files-new/',
  305. async: function (routeTo, routeFrom, resolve, reject) {
  306. var app = this.app;
  307. app.preloader.show();
  308. app.request.promise.json(app.data.config.apiBaseURL + '/patient/files-new/?lang='+global.lang+'&apiKey=')
  309. .then(data => {
  310. // Refresh token if needed
  311. app.methods.refreshToken(data);
  312. // Process response
  313. console.log("patient/files-new", data);
  314. app.preloader.hide();
  315. if (data.result == 'ERROR') {
  316. reject();
  317. switch (data.reason) {
  318. case 'denied':
  319. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  320. break;
  321. default:
  322. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  323. break;
  324. }
  325. }
  326. else {
  327. resolve({
  328. component: PatientFilesNewPage,
  329. }, {
  330. context: data,
  331. });
  332. }
  333. }).catch(e => {
  334. console.log(e);
  335. reject();
  336. app.preloader.hide();
  337. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  338. });
  339. }
  340. },
  341. // Patient files pacs page
  342. {
  343. path: '/patient-files-pacs/',
  344. async: function (routeTo, routeFrom, resolve, reject) {
  345. var app = this.app;
  346. app.preloader.show();
  347. app.request.promise.json(app.data.config.apiBaseURL + '/patient/files-pacs/?apiKey=')
  348. .then(data => {
  349. // Refresh token if needed
  350. app.methods.refreshToken(data);
  351. // Process response
  352. console.log("patient/files-pacs", data);
  353. app.preloader.hide();
  354. if (data.result == 'ERROR') {
  355. reject();
  356. switch (data.reason) {
  357. case 'denied':
  358. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  359. break;
  360. default:
  361. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  362. break;
  363. }
  364. }
  365. else {
  366. resolve({
  367. component: PatientFilesPacsPage,
  368. }, {
  369. context: data,
  370. });
  371. }
  372. }).catch(e => {
  373. console.log(e);
  374. reject();
  375. app.preloader.hide();
  376. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  377. });
  378. }
  379. },
  380. // Patient risks page
  381. {
  382. path: '/patient-risks/',
  383. async: function (routeTo, routeFrom, resolve, reject) {
  384. var app = this.app;
  385. app.preloader.show();
  386. app.request.promise.json(app.data.config.apiBaseURL + '/patient/risks/' + app.data.patient.visitID + '/?apiKey=')
  387. .then(data => {
  388. // Refresh token if needed
  389. app.methods.refreshToken(data);
  390. // Process response
  391. console.log("patient/risks", data);
  392. app.preloader.hide();
  393. if (data.result == 'ERROR') {
  394. reject();
  395. switch (data.reason) {
  396. case 'denied':
  397. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  398. break;
  399. default:
  400. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  401. break;
  402. }
  403. }
  404. else {
  405. data.context.risks=JSON.parse(data.context.risks);
  406. resolve({
  407. component: PatientRisksPage,
  408. }, {
  409. context: data,
  410. });
  411. }
  412. }).catch(e => {
  413. console.log(e);
  414. reject();
  415. app.preloader.hide();
  416. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  417. });
  418. }
  419. },
  420. // Patient history page
  421. {
  422. path: '/patient-history/',
  423. async: function (routeTo, routeFrom, resolve, reject) {
  424. var app = this.app;
  425. app.preloader.show();
  426. app.request.promise.json(app.data.config.apiBaseURL + '/patient/history/' + app.data.patient.visitID + '/' + global.lang + '/?apiKey=')
  427. .then(data => {
  428. // Refresh token if needed
  429. app.methods.refreshToken(data);
  430. // Process response
  431. console.log("patient/history", data);
  432. app.preloader.hide();
  433. if (data.result == 'ERROR') {
  434. reject();
  435. switch (data.reason) {
  436. case 'denied':
  437. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  438. break;
  439. default:
  440. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  441. break;
  442. }
  443. }
  444. else {
  445. data.context.phistory=JSON.parse(data.context.phistory);
  446. resolve({
  447. component: PatientHistoryPage,
  448. }, {
  449. context: data,
  450. });
  451. }
  452. }).catch(e => {
  453. console.log(e);
  454. reject();
  455. app.preloader.hide();
  456. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  457. });
  458. }
  459. },
  460. // Patient family page
  461. {
  462. path: '/patient-family/',
  463. async: function (routeTo, routeFrom, resolve, reject) {
  464. var app = this.app;
  465. app.preloader.show();
  466. app.request.promise.json(app.data.config.apiBaseURL + '/patient/family/' + app.data.patient.visitID + '/?apiKey=')
  467. .then(data => {
  468. // Refresh token if needed
  469. app.methods.refreshToken(data);
  470. // Process response
  471. console.log("patient/family", data);
  472. app.preloader.hide();
  473. if (data.result == 'ERROR') {
  474. reject();
  475. switch (data.reason) {
  476. case 'denied':
  477. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  478. break;
  479. default:
  480. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  481. break;
  482. }
  483. }
  484. else {
  485. data.context.fhistory=JSON.parse(data.context.fhistory);
  486. resolve({
  487. component: PatientFamilyPage,
  488. }, {
  489. context: data,
  490. });
  491. }
  492. }).catch(e => {
  493. console.log(e);
  494. reject();
  495. app.preloader.hide();
  496. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  497. });
  498. }
  499. },
  500. // Patient examination page
  501. {
  502. path: '/patient-examination/',
  503. async: function (routeTo, routeFrom, resolve, reject) {
  504. var app = this.app;
  505. app.preloader.show();
  506. app.request.promise.json(app.data.config.apiBaseURL + '/patient/examination/' + app.data.patient.visitID + '/?apiKey=')
  507. .then(data => {
  508. // Refresh token if needed
  509. app.methods.refreshToken(data);
  510. // Process response
  511. console.log("patient/examination", data);
  512. app.preloader.hide();
  513. if (data.result == 'ERROR') {
  514. reject();
  515. switch (data.reason) {
  516. case 'denied':
  517. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  518. break;
  519. default:
  520. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  521. break;
  522. }
  523. }
  524. else {
  525. data.context.examination=JSON.parse(data.context.examination);
  526. resolve({
  527. component: PatientExaminationPage,
  528. }, {
  529. context: data,
  530. });
  531. }
  532. }).catch(e => {
  533. console.log(e);
  534. reject();
  535. app.preloader.hide();
  536. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  537. });
  538. }
  539. },
  540. // Patient treatments page
  541. {
  542. path: '/patient-treatments/',
  543. async: function (routeTo, routeFrom, resolve, reject) {
  544. var app = this.app;
  545. app.preloader.show();
  546. app.request.promise.json(app.data.config.apiBaseURL + '/patient/treatments/' + app.data.patient.visitID + '/?apiKey=')
  547. .then(data => {
  548. // Refresh token if needed
  549. app.methods.refreshToken(data);
  550. // Process response
  551. console.log("patient/treatments", data);
  552. app.preloader.hide();
  553. if (data.result == 'ERROR') {
  554. reject();
  555. switch (data.reason) {
  556. case 'denied':
  557. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  558. break;
  559. default:
  560. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  561. break;
  562. }
  563. }
  564. else {
  565. data.context.treatments=JSON.parse(data.context.treatments);
  566. resolve({
  567. component: PatientTreatmentsPage,
  568. }, {
  569. context: data,
  570. });
  571. }
  572. }).catch(e => {
  573. console.log(e);
  574. reject();
  575. app.preloader.hide();
  576. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  577. });
  578. }
  579. },
  580. // Acquire page
  581. {
  582. path: '/acquire/',
  583. async: function (routeTo, routeFrom, resolve, reject) {
  584. if(!app.data.patient.visitID) {
  585. $$('.link.bar-link').removeClass('active');
  586. if(app.views.homeView.router.url=='/patient/') {
  587. $$('#toolbar-patient').addClass('active');
  588. }
  589. else if(app.views.homeView.router.url=='/profile/') {
  590. $$('#toolbar-profile').addClass('active');
  591. }
  592. else if(app.views.homeView.router.url=='/export/') {
  593. $$('#toolbar-export').addClass('active');
  594. }
  595. app.notification.create({
  596. icon: '<i class="icon material-icons">info</i>',
  597. title: global.tr[global.lang].topLevel.notification.title,
  598. text: global.tr[global.lang].topLevel.warning.select_patient,
  599. closeTimeout: 3000,
  600. closeButton: true,
  601. }).open();
  602. reject();
  603. }
  604. else {
  605. resolve({
  606. component: AcquirePage,
  607. }, {
  608. context: {},
  609. });
  610. }
  611. }
  612. },
  613. // Report page
  614. {
  615. path: '/report/',
  616. async: function (routeTo, routeFrom, resolve, reject) {
  617. var app = this.app;
  618. if(!app.data.patient.visitID) {
  619. $$('.link.bar-link').removeClass('active');
  620. if(app.views.homeView.router.url=='/patient/') {
  621. $$('#toolbar-patient').addClass('active');
  622. }
  623. else if(app.views.homeView.router.url=='/profile/') {
  624. $$('#toolbar-profile').addClass('active');
  625. }
  626. else if(app.views.homeView.router.url=='/export/') {
  627. $$('#toolbar-export').addClass('active');
  628. }
  629. app.notification.create({
  630. icon: '<i class="icon material-icons">info</i>',
  631. title: global.tr[global.lang].topLevel.notification.title,
  632. text: global.tr[global.lang].topLevel.warning.select_patient,
  633. closeTimeout: 3000,
  634. closeButton: true,
  635. }).open();
  636. reject();
  637. return;
  638. }
  639. app.preloader.show();
  640. app.request.promise.json(app.data.config.apiBaseURL + '/report/' + app.data.patient.ID + '/' + app.data.patient.visitID + '/?apiKey=')
  641. .then(data => {
  642. // Refresh token if needed
  643. app.methods.refreshToken(data);
  644. // Process response
  645. console.log("report", data);
  646. app.preloader.hide();
  647. if (data.result == 'ERROR') {
  648. reject();
  649. switch (data.reason) {
  650. case 'denied':
  651. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  652. break;
  653. default:
  654. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  655. break;
  656. }
  657. }
  658. else {
  659. resolve({
  660. component: ReportPage,
  661. }, {
  662. context: data,
  663. });
  664. }
  665. }).catch(e => {
  666. console.log(e);
  667. reject();
  668. app.preloader.hide();
  669. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  670. });
  671. }
  672. },
  673. // Acquire media page
  674. {
  675. path: '/acquire-media/',
  676. async: function (routeTo, routeFrom, resolve, reject) {
  677. var app = this.app;
  678. app.preloader.show();
  679. app.request.promise.json(app.data.config.apiBaseURL + '/acquire/media/' + app.data.patient.ID + '/' + app.data.patient.visitID + '/?apiKey=')
  680. .then(data => {
  681. // Refresh token if needed
  682. app.methods.refreshToken(data);
  683. // Process response
  684. console.log("acquire/media", data);
  685. app.preloader.hide();
  686. if (data.result == 'ERROR') {
  687. reject();
  688. switch (data.reason) {
  689. case 'denied':
  690. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  691. break;
  692. default:
  693. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  694. break;
  695. }
  696. }
  697. else {
  698. resolve({
  699. component: AcquireMediaPage,
  700. }, {
  701. context: data,
  702. });
  703. }
  704. }).catch(e => {
  705. console.log(e);
  706. reject();
  707. app.preloader.hide();
  708. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  709. });
  710. }
  711. },
  712. // Measure page
  713. {
  714. path: '/measure/',
  715. async: function (routeTo, routeFrom, resolve, reject) {
  716. var app = this.app;
  717. if(!app.data.patient.visitID) {
  718. $$('.link.bar-link').removeClass('active');
  719. if(app.views.homeView.router.url=='/patient/') {
  720. $$('#toolbar-patient').addClass('active');
  721. }
  722. else if(app.views.homeView.router.url=='/profile/') {
  723. $$('#toolbar-profile').addClass('active');
  724. }
  725. else if(app.views.homeView.router.url=='/export/') {
  726. $$('#toolbar-export').addClass('active');
  727. }
  728. app.notification.create({
  729. icon: '<i class="icon material-icons">info</i>',
  730. title: global.tr[global.lang].topLevel.notification.title,
  731. text: global.tr[global.lang].topLevel.warning.select_patient,
  732. closeTimeout: 3000,
  733. closeButton: true,
  734. }).open();
  735. reject();
  736. return;
  737. }
  738. app.preloader.show();
  739. app.request.promise.json(app.data.config.apiBaseURL + '/measure/' + app.data.patient.ID + '/' + app.data.patient.visitID + '/?apiKey=')
  740. .then(data => {
  741. // Refresh token if needed
  742. app.methods.refreshToken(data);
  743. // Process response
  744. console.log("measure", data);
  745. app.preloader.hide();
  746. if (data.result == 'ERROR') {
  747. reject();
  748. switch (data.reason) {
  749. case 'denied':
  750. app.methods.signout(global.tr[global.lang].topLevel.warning.disconnected);
  751. break;
  752. default:
  753. app.dialog.alert(global.tr[global.lang].topLevel.error.internal_error);
  754. break;
  755. }
  756. }
  757. else {
  758. if(!data.media.length) {
  759. $$('.link.bar-link').removeClass('active');
  760. $$('#toolbar-acquire').addClass('active');
  761. app.notification.create({
  762. icon: '<i class="icon material-icons">info</i>',
  763. title: global.tr[global.lang].topLevel.notification.title,
  764. text: global.tr[global.lang].topLevel.notification.acquire_media,
  765. closeTimeout: 3000,
  766. closeButton: true,
  767. }).open();
  768. reject();
  769. }
  770. else {
  771. resolve({
  772. component: MeasurePage,
  773. }, {
  774. context: data,
  775. });
  776. }
  777. }
  778. }).catch(e => {
  779. console.log(e);
  780. reject();
  781. app.preloader.hide();
  782. app.dialog.alert(global.tr[global.lang].topLevel.error.server_unavailable);
  783. });
  784. }
  785. },
  786. // Error page
  787. {
  788. path: '(.*)',
  789. component: NotFoundPage,
  790. },
  791. ];