app.js 142 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179
  1. /******/ (function(modules) { // webpackBootstrap
  2. /******/ // install a JSONP callback for chunk loading
  3. /******/ function webpackJsonpCallback(data) {
  4. /******/ var chunkIds = data[0];
  5. /******/ var moreModules = data[1];
  6. /******/ var executeModules = data[2];
  7. /******/
  8. /******/ // add "moreModules" to the modules object,
  9. /******/ // then flag all "chunkIds" as loaded and fire callback
  10. /******/ var moduleId, chunkId, i = 0, resolves = [];
  11. /******/ for(;i < chunkIds.length; i++) {
  12. /******/ chunkId = chunkIds[i];
  13. /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
  14. /******/ resolves.push(installedChunks[chunkId][0]);
  15. /******/ }
  16. /******/ installedChunks[chunkId] = 0;
  17. /******/ }
  18. /******/ for(moduleId in moreModules) {
  19. /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
  20. /******/ modules[moduleId] = moreModules[moduleId];
  21. /******/ }
  22. /******/ }
  23. /******/ if(parentJsonpFunction) parentJsonpFunction(data);
  24. /******/
  25. /******/ while(resolves.length) {
  26. /******/ resolves.shift()();
  27. /******/ }
  28. /******/
  29. /******/ // add entry modules from loaded chunk to deferred list
  30. /******/ deferredModules.push.apply(deferredModules, executeModules || []);
  31. /******/
  32. /******/ // run deferred modules when all chunks ready
  33. /******/ return checkDeferredModules();
  34. /******/ };
  35. /******/ function checkDeferredModules() {
  36. /******/ var result;
  37. /******/ for(var i = 0; i < deferredModules.length; i++) {
  38. /******/ var deferredModule = deferredModules[i];
  39. /******/ var fulfilled = true;
  40. /******/ for(var j = 1; j < deferredModule.length; j++) {
  41. /******/ var depId = deferredModule[j];
  42. /******/ if(installedChunks[depId] !== 0) fulfilled = false;
  43. /******/ }
  44. /******/ if(fulfilled) {
  45. /******/ deferredModules.splice(i--, 1);
  46. /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
  47. /******/ }
  48. /******/ }
  49. /******/
  50. /******/ return result;
  51. /******/ }
  52. /******/ function hotDisposeChunk(chunkId) {
  53. /******/ delete installedChunks[chunkId];
  54. /******/ }
  55. /******/ var parentHotUpdateCallback = window["webpackHotUpdate"];
  56. /******/ window["webpackHotUpdate"] = // eslint-disable-next-line no-unused-vars
  57. /******/ function webpackHotUpdateCallback(chunkId, moreModules) {
  58. /******/ hotAddUpdateChunk(chunkId, moreModules);
  59. /******/ if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
  60. /******/ } ;
  61. /******/
  62. /******/ // eslint-disable-next-line no-unused-vars
  63. /******/ function hotDownloadUpdateChunk(chunkId) {
  64. /******/ var script = document.createElement("script");
  65. /******/ script.charset = "utf-8";
  66. /******/ script.src = __webpack_require__.p + "" + chunkId + "." + hotCurrentHash + ".hot-update.js";
  67. /******/ if (null) script.crossOrigin = null;
  68. /******/ document.head.appendChild(script);
  69. /******/ }
  70. /******/
  71. /******/ // eslint-disable-next-line no-unused-vars
  72. /******/ function hotDownloadManifest(requestTimeout) {
  73. /******/ requestTimeout = requestTimeout || 10000;
  74. /******/ return new Promise(function(resolve, reject) {
  75. /******/ if (typeof XMLHttpRequest === "undefined") {
  76. /******/ return reject(new Error("No browser support"));
  77. /******/ }
  78. /******/ try {
  79. /******/ var request = new XMLHttpRequest();
  80. /******/ var requestPath = __webpack_require__.p + "" + hotCurrentHash + ".hot-update.json";
  81. /******/ request.open("GET", requestPath, true);
  82. /******/ request.timeout = requestTimeout;
  83. /******/ request.send(null);
  84. /******/ } catch (err) {
  85. /******/ return reject(err);
  86. /******/ }
  87. /******/ request.onreadystatechange = function() {
  88. /******/ if (request.readyState !== 4) return;
  89. /******/ if (request.status === 0) {
  90. /******/ // timeout
  91. /******/ reject(
  92. /******/ new Error("Manifest request to " + requestPath + " timed out.")
  93. /******/ );
  94. /******/ } else if (request.status === 404) {
  95. /******/ // no update available
  96. /******/ resolve();
  97. /******/ } else if (request.status !== 200 && request.status !== 304) {
  98. /******/ // other failure
  99. /******/ reject(new Error("Manifest request to " + requestPath + " failed."));
  100. /******/ } else {
  101. /******/ // success
  102. /******/ try {
  103. /******/ var update = JSON.parse(request.responseText);
  104. /******/ } catch (e) {
  105. /******/ reject(e);
  106. /******/ return;
  107. /******/ }
  108. /******/ resolve(update);
  109. /******/ }
  110. /******/ };
  111. /******/ });
  112. /******/ }
  113. /******/
  114. /******/ var hotApplyOnUpdate = true;
  115. /******/ // eslint-disable-next-line no-unused-vars
  116. /******/ var hotCurrentHash = "cf1ed6ee58c7ba02a5be";
  117. /******/ var hotRequestTimeout = 10000;
  118. /******/ var hotCurrentModuleData = {};
  119. /******/ var hotCurrentChildModule;
  120. /******/ // eslint-disable-next-line no-unused-vars
  121. /******/ var hotCurrentParents = [];
  122. /******/ // eslint-disable-next-line no-unused-vars
  123. /******/ var hotCurrentParentsTemp = [];
  124. /******/
  125. /******/ // eslint-disable-next-line no-unused-vars
  126. /******/ function hotCreateRequire(moduleId) {
  127. /******/ var me = installedModules[moduleId];
  128. /******/ if (!me) return __webpack_require__;
  129. /******/ var fn = function(request) {
  130. /******/ if (me.hot.active) {
  131. /******/ if (installedModules[request]) {
  132. /******/ if (installedModules[request].parents.indexOf(moduleId) === -1) {
  133. /******/ installedModules[request].parents.push(moduleId);
  134. /******/ }
  135. /******/ } else {
  136. /******/ hotCurrentParents = [moduleId];
  137. /******/ hotCurrentChildModule = request;
  138. /******/ }
  139. /******/ if (me.children.indexOf(request) === -1) {
  140. /******/ me.children.push(request);
  141. /******/ }
  142. /******/ } else {
  143. /******/ console.warn(
  144. /******/ "[HMR] unexpected require(" +
  145. /******/ request +
  146. /******/ ") from disposed module " +
  147. /******/ moduleId
  148. /******/ );
  149. /******/ hotCurrentParents = [];
  150. /******/ }
  151. /******/ return __webpack_require__(request);
  152. /******/ };
  153. /******/ var ObjectFactory = function ObjectFactory(name) {
  154. /******/ return {
  155. /******/ configurable: true,
  156. /******/ enumerable: true,
  157. /******/ get: function() {
  158. /******/ return __webpack_require__[name];
  159. /******/ },
  160. /******/ set: function(value) {
  161. /******/ __webpack_require__[name] = value;
  162. /******/ }
  163. /******/ };
  164. /******/ };
  165. /******/ for (var name in __webpack_require__) {
  166. /******/ if (
  167. /******/ Object.prototype.hasOwnProperty.call(__webpack_require__, name) &&
  168. /******/ name !== "e" &&
  169. /******/ name !== "t"
  170. /******/ ) {
  171. /******/ Object.defineProperty(fn, name, ObjectFactory(name));
  172. /******/ }
  173. /******/ }
  174. /******/ fn.e = function(chunkId) {
  175. /******/ if (hotStatus === "ready") hotSetStatus("prepare");
  176. /******/ hotChunksLoading++;
  177. /******/ return __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {
  178. /******/ finishChunkLoading();
  179. /******/ throw err;
  180. /******/ });
  181. /******/
  182. /******/ function finishChunkLoading() {
  183. /******/ hotChunksLoading--;
  184. /******/ if (hotStatus === "prepare") {
  185. /******/ if (!hotWaitingFilesMap[chunkId]) {
  186. /******/ hotEnsureUpdateChunk(chunkId);
  187. /******/ }
  188. /******/ if (hotChunksLoading === 0 && hotWaitingFiles === 0) {
  189. /******/ hotUpdateDownloaded();
  190. /******/ }
  191. /******/ }
  192. /******/ }
  193. /******/ };
  194. /******/ fn.t = function(value, mode) {
  195. /******/ if (mode & 1) value = fn(value);
  196. /******/ return __webpack_require__.t(value, mode & ~1);
  197. /******/ };
  198. /******/ return fn;
  199. /******/ }
  200. /******/
  201. /******/ // eslint-disable-next-line no-unused-vars
  202. /******/ function hotCreateModule(moduleId) {
  203. /******/ var hot = {
  204. /******/ // private stuff
  205. /******/ _acceptedDependencies: {},
  206. /******/ _declinedDependencies: {},
  207. /******/ _selfAccepted: false,
  208. /******/ _selfDeclined: false,
  209. /******/ _selfInvalidated: false,
  210. /******/ _disposeHandlers: [],
  211. /******/ _main: hotCurrentChildModule !== moduleId,
  212. /******/
  213. /******/ // Module API
  214. /******/ active: true,
  215. /******/ accept: function(dep, callback) {
  216. /******/ if (dep === undefined) hot._selfAccepted = true;
  217. /******/ else if (typeof dep === "function") hot._selfAccepted = dep;
  218. /******/ else if (typeof dep === "object")
  219. /******/ for (var i = 0; i < dep.length; i++)
  220. /******/ hot._acceptedDependencies[dep[i]] = callback || function() {};
  221. /******/ else hot._acceptedDependencies[dep] = callback || function() {};
  222. /******/ },
  223. /******/ decline: function(dep) {
  224. /******/ if (dep === undefined) hot._selfDeclined = true;
  225. /******/ else if (typeof dep === "object")
  226. /******/ for (var i = 0; i < dep.length; i++)
  227. /******/ hot._declinedDependencies[dep[i]] = true;
  228. /******/ else hot._declinedDependencies[dep] = true;
  229. /******/ },
  230. /******/ dispose: function(callback) {
  231. /******/ hot._disposeHandlers.push(callback);
  232. /******/ },
  233. /******/ addDisposeHandler: function(callback) {
  234. /******/ hot._disposeHandlers.push(callback);
  235. /******/ },
  236. /******/ removeDisposeHandler: function(callback) {
  237. /******/ var idx = hot._disposeHandlers.indexOf(callback);
  238. /******/ if (idx >= 0) hot._disposeHandlers.splice(idx, 1);
  239. /******/ },
  240. /******/ invalidate: function() {
  241. /******/ this._selfInvalidated = true;
  242. /******/ switch (hotStatus) {
  243. /******/ case "idle":
  244. /******/ hotUpdate = {};
  245. /******/ hotUpdate[moduleId] = modules[moduleId];
  246. /******/ hotSetStatus("ready");
  247. /******/ break;
  248. /******/ case "ready":
  249. /******/ hotApplyInvalidatedModule(moduleId);
  250. /******/ break;
  251. /******/ case "prepare":
  252. /******/ case "check":
  253. /******/ case "dispose":
  254. /******/ case "apply":
  255. /******/ (hotQueuedInvalidatedModules =
  256. /******/ hotQueuedInvalidatedModules || []).push(moduleId);
  257. /******/ break;
  258. /******/ default:
  259. /******/ // ignore requests in error states
  260. /******/ break;
  261. /******/ }
  262. /******/ },
  263. /******/
  264. /******/ // Management API
  265. /******/ check: hotCheck,
  266. /******/ apply: hotApply,
  267. /******/ status: function(l) {
  268. /******/ if (!l) return hotStatus;
  269. /******/ hotStatusHandlers.push(l);
  270. /******/ },
  271. /******/ addStatusHandler: function(l) {
  272. /******/ hotStatusHandlers.push(l);
  273. /******/ },
  274. /******/ removeStatusHandler: function(l) {
  275. /******/ var idx = hotStatusHandlers.indexOf(l);
  276. /******/ if (idx >= 0) hotStatusHandlers.splice(idx, 1);
  277. /******/ },
  278. /******/
  279. /******/ //inherit from previous dispose call
  280. /******/ data: hotCurrentModuleData[moduleId]
  281. /******/ };
  282. /******/ hotCurrentChildModule = undefined;
  283. /******/ return hot;
  284. /******/ }
  285. /******/
  286. /******/ var hotStatusHandlers = [];
  287. /******/ var hotStatus = "idle";
  288. /******/
  289. /******/ function hotSetStatus(newStatus) {
  290. /******/ hotStatus = newStatus;
  291. /******/ for (var i = 0; i < hotStatusHandlers.length; i++)
  292. /******/ hotStatusHandlers[i].call(null, newStatus);
  293. /******/ }
  294. /******/
  295. /******/ // while downloading
  296. /******/ var hotWaitingFiles = 0;
  297. /******/ var hotChunksLoading = 0;
  298. /******/ var hotWaitingFilesMap = {};
  299. /******/ var hotRequestedFilesMap = {};
  300. /******/ var hotAvailableFilesMap = {};
  301. /******/ var hotDeferred;
  302. /******/
  303. /******/ // The update info
  304. /******/ var hotUpdate, hotUpdateNewHash, hotQueuedInvalidatedModules;
  305. /******/
  306. /******/ function toModuleId(id) {
  307. /******/ var isNumber = +id + "" === id;
  308. /******/ return isNumber ? +id : id;
  309. /******/ }
  310. /******/
  311. /******/ function hotCheck(apply) {
  312. /******/ if (hotStatus !== "idle") {
  313. /******/ throw new Error("check() is only allowed in idle status");
  314. /******/ }
  315. /******/ hotApplyOnUpdate = apply;
  316. /******/ hotSetStatus("check");
  317. /******/ return hotDownloadManifest(hotRequestTimeout).then(function(update) {
  318. /******/ if (!update) {
  319. /******/ hotSetStatus(hotApplyInvalidatedModules() ? "ready" : "idle");
  320. /******/ return null;
  321. /******/ }
  322. /******/ hotRequestedFilesMap = {};
  323. /******/ hotWaitingFilesMap = {};
  324. /******/ hotAvailableFilesMap = update.c;
  325. /******/ hotUpdateNewHash = update.h;
  326. /******/
  327. /******/ hotSetStatus("prepare");
  328. /******/ var promise = new Promise(function(resolve, reject) {
  329. /******/ hotDeferred = {
  330. /******/ resolve: resolve,
  331. /******/ reject: reject
  332. /******/ };
  333. /******/ });
  334. /******/ hotUpdate = {};
  335. /******/ for(var chunkId in installedChunks)
  336. /******/ // eslint-disable-next-line no-lone-blocks
  337. /******/ {
  338. /******/ hotEnsureUpdateChunk(chunkId);
  339. /******/ }
  340. /******/ if (
  341. /******/ hotStatus === "prepare" &&
  342. /******/ hotChunksLoading === 0 &&
  343. /******/ hotWaitingFiles === 0
  344. /******/ ) {
  345. /******/ hotUpdateDownloaded();
  346. /******/ }
  347. /******/ return promise;
  348. /******/ });
  349. /******/ }
  350. /******/
  351. /******/ // eslint-disable-next-line no-unused-vars
  352. /******/ function hotAddUpdateChunk(chunkId, moreModules) {
  353. /******/ if (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])
  354. /******/ return;
  355. /******/ hotRequestedFilesMap[chunkId] = false;
  356. /******/ for (var moduleId in moreModules) {
  357. /******/ if (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
  358. /******/ hotUpdate[moduleId] = moreModules[moduleId];
  359. /******/ }
  360. /******/ }
  361. /******/ if (--hotWaitingFiles === 0 && hotChunksLoading === 0) {
  362. /******/ hotUpdateDownloaded();
  363. /******/ }
  364. /******/ }
  365. /******/
  366. /******/ function hotEnsureUpdateChunk(chunkId) {
  367. /******/ if (!hotAvailableFilesMap[chunkId]) {
  368. /******/ hotWaitingFilesMap[chunkId] = true;
  369. /******/ } else {
  370. /******/ hotRequestedFilesMap[chunkId] = true;
  371. /******/ hotWaitingFiles++;
  372. /******/ hotDownloadUpdateChunk(chunkId);
  373. /******/ }
  374. /******/ }
  375. /******/
  376. /******/ function hotUpdateDownloaded() {
  377. /******/ hotSetStatus("ready");
  378. /******/ var deferred = hotDeferred;
  379. /******/ hotDeferred = null;
  380. /******/ if (!deferred) return;
  381. /******/ if (hotApplyOnUpdate) {
  382. /******/ // Wrap deferred object in Promise to mark it as a well-handled Promise to
  383. /******/ // avoid triggering uncaught exception warning in Chrome.
  384. /******/ // See https://bugs.chromium.org/p/chromium/issues/detail?id=465666
  385. /******/ Promise.resolve()
  386. /******/ .then(function() {
  387. /******/ return hotApply(hotApplyOnUpdate);
  388. /******/ })
  389. /******/ .then(
  390. /******/ function(result) {
  391. /******/ deferred.resolve(result);
  392. /******/ },
  393. /******/ function(err) {
  394. /******/ deferred.reject(err);
  395. /******/ }
  396. /******/ );
  397. /******/ } else {
  398. /******/ var outdatedModules = [];
  399. /******/ for (var id in hotUpdate) {
  400. /******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
  401. /******/ outdatedModules.push(toModuleId(id));
  402. /******/ }
  403. /******/ }
  404. /******/ deferred.resolve(outdatedModules);
  405. /******/ }
  406. /******/ }
  407. /******/
  408. /******/ function hotApply(options) {
  409. /******/ if (hotStatus !== "ready")
  410. /******/ throw new Error("apply() is only allowed in ready status");
  411. /******/ options = options || {};
  412. /******/ return hotApplyInternal(options);
  413. /******/ }
  414. /******/
  415. /******/ function hotApplyInternal(options) {
  416. /******/ hotApplyInvalidatedModules();
  417. /******/
  418. /******/ var cb;
  419. /******/ var i;
  420. /******/ var j;
  421. /******/ var module;
  422. /******/ var moduleId;
  423. /******/
  424. /******/ function getAffectedStuff(updateModuleId) {
  425. /******/ var outdatedModules = [updateModuleId];
  426. /******/ var outdatedDependencies = {};
  427. /******/
  428. /******/ var queue = outdatedModules.map(function(id) {
  429. /******/ return {
  430. /******/ chain: [id],
  431. /******/ id: id
  432. /******/ };
  433. /******/ });
  434. /******/ while (queue.length > 0) {
  435. /******/ var queueItem = queue.pop();
  436. /******/ var moduleId = queueItem.id;
  437. /******/ var chain = queueItem.chain;
  438. /******/ module = installedModules[moduleId];
  439. /******/ if (
  440. /******/ !module ||
  441. /******/ (module.hot._selfAccepted && !module.hot._selfInvalidated)
  442. /******/ )
  443. /******/ continue;
  444. /******/ if (module.hot._selfDeclined) {
  445. /******/ return {
  446. /******/ type: "self-declined",
  447. /******/ chain: chain,
  448. /******/ moduleId: moduleId
  449. /******/ };
  450. /******/ }
  451. /******/ if (module.hot._main) {
  452. /******/ return {
  453. /******/ type: "unaccepted",
  454. /******/ chain: chain,
  455. /******/ moduleId: moduleId
  456. /******/ };
  457. /******/ }
  458. /******/ for (var i = 0; i < module.parents.length; i++) {
  459. /******/ var parentId = module.parents[i];
  460. /******/ var parent = installedModules[parentId];
  461. /******/ if (!parent) continue;
  462. /******/ if (parent.hot._declinedDependencies[moduleId]) {
  463. /******/ return {
  464. /******/ type: "declined",
  465. /******/ chain: chain.concat([parentId]),
  466. /******/ moduleId: moduleId,
  467. /******/ parentId: parentId
  468. /******/ };
  469. /******/ }
  470. /******/ if (outdatedModules.indexOf(parentId) !== -1) continue;
  471. /******/ if (parent.hot._acceptedDependencies[moduleId]) {
  472. /******/ if (!outdatedDependencies[parentId])
  473. /******/ outdatedDependencies[parentId] = [];
  474. /******/ addAllToSet(outdatedDependencies[parentId], [moduleId]);
  475. /******/ continue;
  476. /******/ }
  477. /******/ delete outdatedDependencies[parentId];
  478. /******/ outdatedModules.push(parentId);
  479. /******/ queue.push({
  480. /******/ chain: chain.concat([parentId]),
  481. /******/ id: parentId
  482. /******/ });
  483. /******/ }
  484. /******/ }
  485. /******/
  486. /******/ return {
  487. /******/ type: "accepted",
  488. /******/ moduleId: updateModuleId,
  489. /******/ outdatedModules: outdatedModules,
  490. /******/ outdatedDependencies: outdatedDependencies
  491. /******/ };
  492. /******/ }
  493. /******/
  494. /******/ function addAllToSet(a, b) {
  495. /******/ for (var i = 0; i < b.length; i++) {
  496. /******/ var item = b[i];
  497. /******/ if (a.indexOf(item) === -1) a.push(item);
  498. /******/ }
  499. /******/ }
  500. /******/
  501. /******/ // at begin all updates modules are outdated
  502. /******/ // the "outdated" status can propagate to parents if they don't accept the children
  503. /******/ var outdatedDependencies = {};
  504. /******/ var outdatedModules = [];
  505. /******/ var appliedUpdate = {};
  506. /******/
  507. /******/ var warnUnexpectedRequire = function warnUnexpectedRequire() {
  508. /******/ console.warn(
  509. /******/ "[HMR] unexpected require(" + result.moduleId + ") to disposed module"
  510. /******/ );
  511. /******/ };
  512. /******/
  513. /******/ for (var id in hotUpdate) {
  514. /******/ if (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {
  515. /******/ moduleId = toModuleId(id);
  516. /******/ /** @type {TODO} */
  517. /******/ var result;
  518. /******/ if (hotUpdate[id]) {
  519. /******/ result = getAffectedStuff(moduleId);
  520. /******/ } else {
  521. /******/ result = {
  522. /******/ type: "disposed",
  523. /******/ moduleId: id
  524. /******/ };
  525. /******/ }
  526. /******/ /** @type {Error|false} */
  527. /******/ var abortError = false;
  528. /******/ var doApply = false;
  529. /******/ var doDispose = false;
  530. /******/ var chainInfo = "";
  531. /******/ if (result.chain) {
  532. /******/ chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
  533. /******/ }
  534. /******/ switch (result.type) {
  535. /******/ case "self-declined":
  536. /******/ if (options.onDeclined) options.onDeclined(result);
  537. /******/ if (!options.ignoreDeclined)
  538. /******/ abortError = new Error(
  539. /******/ "Aborted because of self decline: " +
  540. /******/ result.moduleId +
  541. /******/ chainInfo
  542. /******/ );
  543. /******/ break;
  544. /******/ case "declined":
  545. /******/ if (options.onDeclined) options.onDeclined(result);
  546. /******/ if (!options.ignoreDeclined)
  547. /******/ abortError = new Error(
  548. /******/ "Aborted because of declined dependency: " +
  549. /******/ result.moduleId +
  550. /******/ " in " +
  551. /******/ result.parentId +
  552. /******/ chainInfo
  553. /******/ );
  554. /******/ break;
  555. /******/ case "unaccepted":
  556. /******/ if (options.onUnaccepted) options.onUnaccepted(result);
  557. /******/ if (!options.ignoreUnaccepted)
  558. /******/ abortError = new Error(
  559. /******/ "Aborted because " + moduleId + " is not accepted" + chainInfo
  560. /******/ );
  561. /******/ break;
  562. /******/ case "accepted":
  563. /******/ if (options.onAccepted) options.onAccepted(result);
  564. /******/ doApply = true;
  565. /******/ break;
  566. /******/ case "disposed":
  567. /******/ if (options.onDisposed) options.onDisposed(result);
  568. /******/ doDispose = true;
  569. /******/ break;
  570. /******/ default:
  571. /******/ throw new Error("Unexception type " + result.type);
  572. /******/ }
  573. /******/ if (abortError) {
  574. /******/ hotSetStatus("abort");
  575. /******/ return Promise.reject(abortError);
  576. /******/ }
  577. /******/ if (doApply) {
  578. /******/ appliedUpdate[moduleId] = hotUpdate[moduleId];
  579. /******/ addAllToSet(outdatedModules, result.outdatedModules);
  580. /******/ for (moduleId in result.outdatedDependencies) {
  581. /******/ if (
  582. /******/ Object.prototype.hasOwnProperty.call(
  583. /******/ result.outdatedDependencies,
  584. /******/ moduleId
  585. /******/ )
  586. /******/ ) {
  587. /******/ if (!outdatedDependencies[moduleId])
  588. /******/ outdatedDependencies[moduleId] = [];
  589. /******/ addAllToSet(
  590. /******/ outdatedDependencies[moduleId],
  591. /******/ result.outdatedDependencies[moduleId]
  592. /******/ );
  593. /******/ }
  594. /******/ }
  595. /******/ }
  596. /******/ if (doDispose) {
  597. /******/ addAllToSet(outdatedModules, [result.moduleId]);
  598. /******/ appliedUpdate[moduleId] = warnUnexpectedRequire;
  599. /******/ }
  600. /******/ }
  601. /******/ }
  602. /******/
  603. /******/ // Store self accepted outdated modules to require them later by the module system
  604. /******/ var outdatedSelfAcceptedModules = [];
  605. /******/ for (i = 0; i < outdatedModules.length; i++) {
  606. /******/ moduleId = outdatedModules[i];
  607. /******/ if (
  608. /******/ installedModules[moduleId] &&
  609. /******/ installedModules[moduleId].hot._selfAccepted &&
  610. /******/ // removed self-accepted modules should not be required
  611. /******/ appliedUpdate[moduleId] !== warnUnexpectedRequire &&
  612. /******/ // when called invalidate self-accepting is not possible
  613. /******/ !installedModules[moduleId].hot._selfInvalidated
  614. /******/ ) {
  615. /******/ outdatedSelfAcceptedModules.push({
  616. /******/ module: moduleId,
  617. /******/ parents: installedModules[moduleId].parents.slice(),
  618. /******/ errorHandler: installedModules[moduleId].hot._selfAccepted
  619. /******/ });
  620. /******/ }
  621. /******/ }
  622. /******/
  623. /******/ // Now in "dispose" phase
  624. /******/ hotSetStatus("dispose");
  625. /******/ Object.keys(hotAvailableFilesMap).forEach(function(chunkId) {
  626. /******/ if (hotAvailableFilesMap[chunkId] === false) {
  627. /******/ hotDisposeChunk(chunkId);
  628. /******/ }
  629. /******/ });
  630. /******/
  631. /******/ var idx;
  632. /******/ var queue = outdatedModules.slice();
  633. /******/ while (queue.length > 0) {
  634. /******/ moduleId = queue.pop();
  635. /******/ module = installedModules[moduleId];
  636. /******/ if (!module) continue;
  637. /******/
  638. /******/ var data = {};
  639. /******/
  640. /******/ // Call dispose handlers
  641. /******/ var disposeHandlers = module.hot._disposeHandlers;
  642. /******/ for (j = 0; j < disposeHandlers.length; j++) {
  643. /******/ cb = disposeHandlers[j];
  644. /******/ cb(data);
  645. /******/ }
  646. /******/ hotCurrentModuleData[moduleId] = data;
  647. /******/
  648. /******/ // disable module (this disables requires from this module)
  649. /******/ module.hot.active = false;
  650. /******/
  651. /******/ // remove module from cache
  652. /******/ delete installedModules[moduleId];
  653. /******/
  654. /******/ // when disposing there is no need to call dispose handler
  655. /******/ delete outdatedDependencies[moduleId];
  656. /******/
  657. /******/ // remove "parents" references from all children
  658. /******/ for (j = 0; j < module.children.length; j++) {
  659. /******/ var child = installedModules[module.children[j]];
  660. /******/ if (!child) continue;
  661. /******/ idx = child.parents.indexOf(moduleId);
  662. /******/ if (idx >= 0) {
  663. /******/ child.parents.splice(idx, 1);
  664. /******/ }
  665. /******/ }
  666. /******/ }
  667. /******/
  668. /******/ // remove outdated dependency from module children
  669. /******/ var dependency;
  670. /******/ var moduleOutdatedDependencies;
  671. /******/ for (moduleId in outdatedDependencies) {
  672. /******/ if (
  673. /******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
  674. /******/ ) {
  675. /******/ module = installedModules[moduleId];
  676. /******/ if (module) {
  677. /******/ moduleOutdatedDependencies = outdatedDependencies[moduleId];
  678. /******/ for (j = 0; j < moduleOutdatedDependencies.length; j++) {
  679. /******/ dependency = moduleOutdatedDependencies[j];
  680. /******/ idx = module.children.indexOf(dependency);
  681. /******/ if (idx >= 0) module.children.splice(idx, 1);
  682. /******/ }
  683. /******/ }
  684. /******/ }
  685. /******/ }
  686. /******/
  687. /******/ // Now in "apply" phase
  688. /******/ hotSetStatus("apply");
  689. /******/
  690. /******/ if (hotUpdateNewHash !== undefined) {
  691. /******/ hotCurrentHash = hotUpdateNewHash;
  692. /******/ hotUpdateNewHash = undefined;
  693. /******/ }
  694. /******/ hotUpdate = undefined;
  695. /******/
  696. /******/ // insert new code
  697. /******/ for (moduleId in appliedUpdate) {
  698. /******/ if (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {
  699. /******/ modules[moduleId] = appliedUpdate[moduleId];
  700. /******/ }
  701. /******/ }
  702. /******/
  703. /******/ // call accept handlers
  704. /******/ var error = null;
  705. /******/ for (moduleId in outdatedDependencies) {
  706. /******/ if (
  707. /******/ Object.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)
  708. /******/ ) {
  709. /******/ module = installedModules[moduleId];
  710. /******/ if (module) {
  711. /******/ moduleOutdatedDependencies = outdatedDependencies[moduleId];
  712. /******/ var callbacks = [];
  713. /******/ for (i = 0; i < moduleOutdatedDependencies.length; i++) {
  714. /******/ dependency = moduleOutdatedDependencies[i];
  715. /******/ cb = module.hot._acceptedDependencies[dependency];
  716. /******/ if (cb) {
  717. /******/ if (callbacks.indexOf(cb) !== -1) continue;
  718. /******/ callbacks.push(cb);
  719. /******/ }
  720. /******/ }
  721. /******/ for (i = 0; i < callbacks.length; i++) {
  722. /******/ cb = callbacks[i];
  723. /******/ try {
  724. /******/ cb(moduleOutdatedDependencies);
  725. /******/ } catch (err) {
  726. /******/ if (options.onErrored) {
  727. /******/ options.onErrored({
  728. /******/ type: "accept-errored",
  729. /******/ moduleId: moduleId,
  730. /******/ dependencyId: moduleOutdatedDependencies[i],
  731. /******/ error: err
  732. /******/ });
  733. /******/ }
  734. /******/ if (!options.ignoreErrored) {
  735. /******/ if (!error) error = err;
  736. /******/ }
  737. /******/ }
  738. /******/ }
  739. /******/ }
  740. /******/ }
  741. /******/ }
  742. /******/
  743. /******/ // Load self accepted modules
  744. /******/ for (i = 0; i < outdatedSelfAcceptedModules.length; i++) {
  745. /******/ var item = outdatedSelfAcceptedModules[i];
  746. /******/ moduleId = item.module;
  747. /******/ hotCurrentParents = item.parents;
  748. /******/ hotCurrentChildModule = moduleId;
  749. /******/ try {
  750. /******/ __webpack_require__(moduleId);
  751. /******/ } catch (err) {
  752. /******/ if (typeof item.errorHandler === "function") {
  753. /******/ try {
  754. /******/ item.errorHandler(err);
  755. /******/ } catch (err2) {
  756. /******/ if (options.onErrored) {
  757. /******/ options.onErrored({
  758. /******/ type: "self-accept-error-handler-errored",
  759. /******/ moduleId: moduleId,
  760. /******/ error: err2,
  761. /******/ originalError: err
  762. /******/ });
  763. /******/ }
  764. /******/ if (!options.ignoreErrored) {
  765. /******/ if (!error) error = err2;
  766. /******/ }
  767. /******/ if (!error) error = err;
  768. /******/ }
  769. /******/ } else {
  770. /******/ if (options.onErrored) {
  771. /******/ options.onErrored({
  772. /******/ type: "self-accept-errored",
  773. /******/ moduleId: moduleId,
  774. /******/ error: err
  775. /******/ });
  776. /******/ }
  777. /******/ if (!options.ignoreErrored) {
  778. /******/ if (!error) error = err;
  779. /******/ }
  780. /******/ }
  781. /******/ }
  782. /******/ }
  783. /******/
  784. /******/ // handle errors in accept handlers and self accepted module load
  785. /******/ if (error) {
  786. /******/ hotSetStatus("fail");
  787. /******/ return Promise.reject(error);
  788. /******/ }
  789. /******/
  790. /******/ if (hotQueuedInvalidatedModules) {
  791. /******/ return hotApplyInternal(options).then(function(list) {
  792. /******/ outdatedModules.forEach(function(moduleId) {
  793. /******/ if (list.indexOf(moduleId) < 0) list.push(moduleId);
  794. /******/ });
  795. /******/ return list;
  796. /******/ });
  797. /******/ }
  798. /******/
  799. /******/ hotSetStatus("idle");
  800. /******/ return new Promise(function(resolve) {
  801. /******/ resolve(outdatedModules);
  802. /******/ });
  803. /******/ }
  804. /******/
  805. /******/ function hotApplyInvalidatedModules() {
  806. /******/ if (hotQueuedInvalidatedModules) {
  807. /******/ if (!hotUpdate) hotUpdate = {};
  808. /******/ hotQueuedInvalidatedModules.forEach(hotApplyInvalidatedModule);
  809. /******/ hotQueuedInvalidatedModules = undefined;
  810. /******/ return true;
  811. /******/ }
  812. /******/ }
  813. /******/
  814. /******/ function hotApplyInvalidatedModule(moduleId) {
  815. /******/ if (!Object.prototype.hasOwnProperty.call(hotUpdate, moduleId))
  816. /******/ hotUpdate[moduleId] = modules[moduleId];
  817. /******/ }
  818. /******/
  819. /******/ // The module cache
  820. /******/ var installedModules = {};
  821. /******/
  822. /******/ // object to store loaded and loading chunks
  823. /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
  824. /******/ // Promise = chunk loading, 0 = chunk loaded
  825. /******/ var installedChunks = {
  826. /******/ "main": 0
  827. /******/ };
  828. /******/
  829. /******/ var deferredModules = [];
  830. /******/
  831. /******/ // The require function
  832. /******/ function __webpack_require__(moduleId) {
  833. /******/
  834. /******/ // Check if module is in cache
  835. /******/ if(installedModules[moduleId]) {
  836. /******/ return installedModules[moduleId].exports;
  837. /******/ }
  838. /******/ // Create a new module (and put it into the cache)
  839. /******/ var module = installedModules[moduleId] = {
  840. /******/ i: moduleId,
  841. /******/ l: false,
  842. /******/ exports: {},
  843. /******/ hot: hotCreateModule(moduleId),
  844. /******/ parents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),
  845. /******/ children: []
  846. /******/ };
  847. /******/
  848. /******/ // Execute the module function
  849. /******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
  850. /******/
  851. /******/ // Flag the module as loaded
  852. /******/ module.l = true;
  853. /******/
  854. /******/ // Return the exports of the module
  855. /******/ return module.exports;
  856. /******/ }
  857. /******/
  858. /******/
  859. /******/ // expose the modules object (__webpack_modules__)
  860. /******/ __webpack_require__.m = modules;
  861. /******/
  862. /******/ // expose the module cache
  863. /******/ __webpack_require__.c = installedModules;
  864. /******/
  865. /******/ // define getter function for harmony exports
  866. /******/ __webpack_require__.d = function(exports, name, getter) {
  867. /******/ if(!__webpack_require__.o(exports, name)) {
  868. /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
  869. /******/ }
  870. /******/ };
  871. /******/
  872. /******/ // define __esModule on exports
  873. /******/ __webpack_require__.r = function(exports) {
  874. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  875. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  876. /******/ }
  877. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  878. /******/ };
  879. /******/
  880. /******/ // create a fake namespace object
  881. /******/ // mode & 1: value is a module id, require it
  882. /******/ // mode & 2: merge all properties of value into the ns
  883. /******/ // mode & 4: return value when already ns object
  884. /******/ // mode & 8|1: behave like require
  885. /******/ __webpack_require__.t = function(value, mode) {
  886. /******/ if(mode & 1) value = __webpack_require__(value);
  887. /******/ if(mode & 8) return value;
  888. /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  889. /******/ var ns = Object.create(null);
  890. /******/ __webpack_require__.r(ns);
  891. /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  892. /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  893. /******/ return ns;
  894. /******/ };
  895. /******/
  896. /******/ // getDefaultExport function for compatibility with non-harmony modules
  897. /******/ __webpack_require__.n = function(module) {
  898. /******/ var getter = module && module.__esModule ?
  899. /******/ function getDefault() { return module['default']; } :
  900. /******/ function getModuleExports() { return module; };
  901. /******/ __webpack_require__.d(getter, 'a', getter);
  902. /******/ return getter;
  903. /******/ };
  904. /******/
  905. /******/ // Object.prototype.hasOwnProperty.call
  906. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  907. /******/
  908. /******/ // __webpack_public_path__
  909. /******/ __webpack_require__.p = "";
  910. /******/
  911. /******/ // __webpack_hash__
  912. /******/ __webpack_require__.h = function() { return hotCurrentHash; };
  913. /******/
  914. /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
  915. /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
  916. /******/ jsonpArray.push = webpackJsonpCallback;
  917. /******/ jsonpArray = jsonpArray.slice();
  918. /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
  919. /******/ var parentJsonpFunction = oldJsonpFunction;
  920. /******/
  921. /******/
  922. /******/ // add entry module to deferred list
  923. /******/ deferredModules.push([0,"vendors~main"]);
  924. /******/ // run deferred modules when ready
  925. /******/ return checkDeferredModules();
  926. /******/ })
  927. /************************************************************************/
  928. /******/ ({
  929. /***/ "./src/app.js":
  930. /*!********************!*\
  931. !*** ./src/app.js ***!
  932. \********************/
  933. /*! no exports provided */
  934. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  935. "use strict";
  936. eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var framework7_framework7_esm_bundle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! framework7/framework7.esm.bundle.js */ \"./node_modules/framework7/framework7.esm.bundle.js\");\n/* harmony import */ var template7__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! template7 */ \"./node_modules/template7/dist/template7.esm.js\");\n/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! chart.js/auto */ \"./node_modules/chart.js/auto/auto.esm.js\");\n/* harmony import */ var _chartutils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chartutils.js */ \"./src/chartutils.js\");\n/* harmony import */ var framework7_css_framework7_bundle_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! framework7/css/framework7.bundle.css */ \"./node_modules/framework7/css/framework7.bundle.css\");\n/* harmony import */ var framework7_css_framework7_bundle_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(framework7_css_framework7_bundle_css__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _css_icons_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./css/icons.css */ \"./src/css/icons.css\");\n/* harmony import */ var _css_icons_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_css_icons_css__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./css/app.css */ \"./src/css/app.css\");\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_css_app_css__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _routes_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./routes.js */ \"./src/routes.js\");\n/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tools.js */ \"./src/tools.js\");\n/* harmony import */ var sortablejs_modular_sortable_complete_esm_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! sortablejs/modular/sortable.complete.esm.js */ \"./node_modules/sortablejs/modular/sortable.complete.esm.js\");\n// Import F7\n\n // Chart\n\n\nglobal.Chart = chart_js_auto__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\nglobal.ChartUtils = _chartutils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nconsole.log(_chartutils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]); // Import F7 Styles\n\n // Import Icons and App Custom Styles\n\n\n // Import Routes\n\n // Import Tools\n\n // Import Sortable\n\n\nglobal.Sortable = sortablejs_modular_sortable_complete_esm_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; // Dom7\n\nglobal.$$ = framework7_framework7_esm_bundle_js__WEBPACK_IMPORTED_MODULE_0__[\"Dom7\"]; // Init Framework7\n\nglobal.app = new framework7_framework7_esm_bundle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n root: '#app',\n id: 'AppID',\n // App bundle ID\n name: 'MathCloud Admin (IIMT staff)',\n // App name\n theme: 'md',\n // MD\n dialog: {\n title: 'MathCloud Admin (IIMT staff)'\n },\n // Enable panel left visibility breakpoint\n panel: {\n leftBreakpoint: 960\n },\n popup: {\n closeByBackdropClick: false\n },\n on: {\n init: function init() {\n // Try previous token\n if (localStorage.getItem('adminJwtToken') !== null) {\n setTimeout(function () {\n app.methods.go(localStorage.adminJwtToken);\n }, 0);\n } else {\n // Front page\n this.popup.open('#popup-front', true);\n setTimeout(function () {\n app.views.frontView.router.navigate({\n url: '/front-signin/'\n }, {\n ignoreCache: true,\n reloadCurrent: true\n });\n\n if (localStorage.getItem('message') !== null) {\n app.notification.create({\n icon: '<i class=\"icon material-icons\">info</i>',\n title: 'Notification',\n text: localStorage.message,\n closeTimeout: 10000,\n closeButton: true\n }).open(); // cleanup\n\n localStorage.removeItem('message');\n }\n }, 0);\n }\n },\n pageInit: function pageInit(e, page) {}\n },\n // App routes\n routes: _routes_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n // App root data\n data: function data() {\n var appLocation = location.protocol + '//' + location.hostname + ':' + location.port,\n apiLocation = location.protocol + '//' + location.hostname + ':' + 10302;\n\n if (location.hostname == 'www.ipsocloud.com') {\n appLocation = 'https://www.ipsocloud.com';\n apiLocation = 'https://api.ipsocloud.com';\n }\n\n console.log('Using API server at: ' + apiLocation);\n console.log('Using Web server at: ' + appLocation);\n return {\n config: {\n apiBaseURL: apiLocation + '/api/v1',\n storageBaseURL: apiLocation + '/storage',\n appBaseURL: appLocation\n },\n tokens: {\n jwt: '',\n api: ''\n }\n };\n },\n // App root methods\n methods: {\n refreshToken: function refreshToken(data) {\n if (data.newToken) {\n app.data.tokens.jwt = data.newToken; // After the following setup all XHR requests will have additional 'Autorization' header\n\n app.request.setup({\n headers: {\n 'Authorization': 'JWT ' + app.data.tokens.jwt\n }\n }); // Save session\n\n localStorage.adminJwtToken = app.data.tokens.jwt;\n } else {\n console.log(\"refreshToken() no new token\");\n }\n },\n go: function go(token) {\n app.data.tokens.jwt = token; // After the following setup all XHR requests will have additional 'Autorization' header\n\n app.request.setup({\n headers: {\n 'Authorization': 'JWT ' + app.data.tokens.jwt\n }\n }); // Save session\n\n localStorage.adminJwtToken = app.data.tokens.jwt; // Load default content\n\n app.views.leftView.router.navigate({\n url: '/menu/'\n }, {\n ignoreCache: true,\n reloadCurrent: true\n });\n app.views.workspaceView.router.navigate({\n url: '/default/'\n });\n },\n signout: function signout(optionalMessage) {\n localStorage.removeItem('adminJwtToken');\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin_/signout/?apiKey=').then(function (data) {\n console.log(\"admin/signout\", data);\n app.preloader.hide();\n app.data.tokens.jwt = ''; // After the following setup all XHR requests will NOT have additional 'Autorization' header\n\n app.request.setup({\n headers: {\n 'Authorization': ''\n }\n }); // Back to home\n\n if (optionalMessage) {\n localStorage.message = optionalMessage;\n }\n\n location.reload();\n }).catch(function (e) {\n console.log(e);\n app.preloader.hide();\n app.dialog.alert(\"Le serveur est indisponible.\");\n });\n },\n signin: function signin() {\n var username = $$('.login-screen-content [name=\"username\"]').val();\n var password = $$('.login-screen-content [name=\"password\"]').val();\n var store = $$('.login-screen-content [name=\"store\"]').is(\":checked\");\n console.log(store); // Check consistency\n\n if (username.trim() == '') {\n app.dialog.alert(\"Vous n'avez pas renseigné votre e-mail...\");\n return;\n }\n\n if (password.trim() == '') {\n app.dialog.alert(\"Vous n'avez pas renseigné votre mot-de-passe...\");\n return;\n } // \n\n\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin_/signin/' + username + '/' + password + '/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin_/signin\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'internal_error':\n app.dialog.alert(\"Nous ne pouvons pas créer ce compte, une erreur interne est survenue.\");\n break;\n\n case 'unknown':\n case 'bad_password':\n app.dialog.alert(\"Informations incorrectes. Vérifez les éléments que vous avez saisi.\");\n break;\n\n default:\n app.dialog.alert(\"Connexion échouée (\" + data.message + \").\");\n break;\n }\n } else {\n // store data\n if (store) {\n localStorage.username = username;\n localStorage.password = password;\n } else {\n localStorage.removeItem('username');\n localStorage.removeItem('password');\n } // go\n\n\n app.popup.close('#popup-front');\n app.methods.go(data.token);\n }\n }).catch(function (e) {\n console.log(e);\n app.preloader.hide();\n app.dialog.alert(\"Le serveur est indisponible.\");\n });\n }\n }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./src/app.js?");
  937. /***/ }),
  938. /***/ "./src/chartutils.js":
  939. /*!***************************!*\
  940. !*** ./src/chartutils.js ***!
  941. \***************************/
  942. /*! exports provided: default */
  943. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  944. "use strict";
  945. eval("__webpack_require__.r(__webpack_exports__);\n// see: https://stackoverflow.com/questions/67210101/utils-package-in-chart-js\nvar COLORS = ['#4dc9f6', '#f67019', '#f53794', '#537bc4', '#acc236', '#166a8f', '#00a950', '#58595b', '#8549ba'];\nvar MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nvar CHART_COLORS = {\n red: 'rgb(255, 99, 132)',\n orange: 'rgb(255, 159, 64)',\n yellow: 'rgb(255, 205, 86)',\n green: 'rgb(75, 192, 192)',\n blue: 'rgb(54, 162, 235)',\n purple: 'rgb(153, 102, 255)',\n grey: 'rgb(201, 203, 207)'\n};\nvar CHART_COLORS_ALPHA = {\n red: 'rgba(255, 99, 132, 0.5)',\n blue: 'rgba(54, 162, 235, 0.5)'\n};\n\nfunction valueOrDefault(val, def) {\n return val ? val : def;\n}\n\nvar _seed = Date.now();\n\nfunction srand(seed) {\n _seed = seed;\n}\n\nfunction rand(min, max) {\n min = valueOrDefault(min, 0);\n max = valueOrDefault(max, 0);\n _seed = (_seed * 9301 + 49297) % 233280;\n return min + _seed / 233280 * (max - min);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n months: function months(config) {\n var cfg = config || {};\n var count = cfg.count || 12;\n var section = cfg.section;\n var values = [];\n var i, value;\n\n for (i = 0; i < count; ++i) {\n value = MONTHS[Math.ceil(i) % 12];\n values.push(value.substring(0, section));\n }\n\n return values;\n },\n colors: function colors() {\n return CHART_COLORS;\n },\n colorsAlpha: function colorsAlpha() {\n return CHART_COLORS_ALPHA;\n },\n color: function color(index) {\n return COLORS[index % COLORS.length];\n },\n numbers: function numbers(config) {\n var cfg = config || {};\n var min = valueOrDefault(cfg.min, 0);\n var max = valueOrDefault(cfg.max, 100);\n var from = valueOrDefault(cfg.from, []);\n var count = valueOrDefault(cfg.count, 8);\n var decimals = valueOrDefault(cfg.decimals, 0);\n var continuity = valueOrDefault(cfg.continuity, 1);\n var dfactor = Math.pow(10, decimals) || 0;\n var data = [];\n var i, value;\n\n for (i = 0; i < count; ++i) {\n value = (from[i] || 0) + rand(min, max);\n\n if (rand() <= continuity) {\n data.push(Math.round(dfactor * value) / dfactor);\n } else {\n data.push(null);\n }\n }\n\n return data;\n }\n});\n\n//# sourceURL=webpack:///./src/chartutils.js?");
  946. /***/ }),
  947. /***/ "./src/css/app.css":
  948. /*!*************************!*\
  949. !*** ./src/css/app.css ***!
  950. \*************************/
  951. /*! no static exports found */
  952. /***/ (function(module, exports, __webpack_require__) {
  953. eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/css/app.css?");
  954. /***/ }),
  955. /***/ "./src/css/icons.css":
  956. /*!***************************!*\
  957. !*** ./src/css/icons.css ***!
  958. \***************************/
  959. /*! no static exports found */
  960. /***/ (function(module, exports, __webpack_require__) {
  961. eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/css/icons.css?");
  962. /***/ }),
  963. /***/ "./src/pages/blank.f7.html":
  964. /*!*********************************!*\
  965. !*** ./src/pages/blank.f7.html ***!
  966. \*********************************/
  967. /*! exports provided: default */
  968. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  969. "use strict";
  970. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n test: function () {\n console.log('test');\n }\n },\n id: '025396656e',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n Nothing to see here\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/blank.f7.html?");
  971. /***/ }),
  972. /***/ "./src/pages/common.f7.html":
  973. /*!**********************************!*\
  974. !*** ./src/pages/common.f7.html ***!
  975. \**********************************/
  976. /*! exports provided: default */
  977. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  978. "use strict";
  979. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var template7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! template7 */ \"./node_modules/template7/dist/template7.esm.js\");\n\n \n const Template7Helpers = template7__WEBPACK_IMPORTED_MODULE_0__[\"default\"].helpers;\n \n \n \n /* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n }\n },\n methods: {\n save: function () {\n var patientListFields = [];\n let p = app.form.convertToData('#settings-form-patientListFields');\n for (let key in p) {\n patientListFields.push({\n 'name': key,\n 'display': p[key].length ? 1 : 0\n });\n }\n var newPatientFields = [];\n let tab = $$('#settings-form-newPatientFields .item-after');\n console.log(tab);\n for (let i = 0; i < tab.length; ++i) {\n let name = $$($$(tab[i]).children('label')[0]).children('input')[0].name;\n let display = $$($$(tab[i]).children('label')[0]).children('input')[0].checked;\n let required = $$($$(tab[i]).children('label')[1]).children('input')[0].checked;\n newPatientFields.push({\n 'name': name,\n 'display': display ? 1 : 0,\n 'required': required ? 1 : 0\n });\n }\n var videoDurationMax = app.form.convertToData('#settings-form-videoDurationMax');\n var postData = {\n apiKey: '',\n data: {\n patientListFields: patientListFields,\n newPatientFields: newPatientFields,\n videoDurationMax: videoDurationMax.videoDurationMax\n }\n };\n console.log(postData);\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/common/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/common', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n }\n } else {\n app.views.workspaceView.router.navigate('/common/', {\n reloadCurrent: true,\n ignoreCache: true\n });\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n }\n },\n id: '4f11d80501',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <form id=\"settings-form-patientListFields\" autocomplete=\"off\">\\r\\n\\r\\n <div class=\"block-title\">Patient list fields</div>\\r\\n <div class=\"block block-strong\">\\r\\n <div class=\"list\" style=\"margin: 0;\">\\r\\n <ul id=\"items\">\\r\\n ';\n r += Template7Helpers.each.call(ctx_1, ctx_1.settings.patientListFields, {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <li>\\r\\n <div class=\"item-content\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\">';\n r += c(ctx_2.name, ctx_2);\n r += '</div>\\r\\n <div class=\"item-after\">\\r\\n Visible&nbsp;\\r\\n <label class=\"toggle toggle-init\">\\r\\n <input name=\"';\n r += c(ctx_2.name, ctx_2);\n r += '\" type=\"checkbox\" ';\n r += Template7Helpers.js.call(ctx_2, 'this.display==true?\\'checked\\':\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += ' />\\r\\n <span class=\"toggle-icon\"></span>\\r\\n </label> \\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n </ul>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </form>\\r\\n <form id=\"settings-form-newPatientFields\" autocomplete=\"off\">\\r\\n\\r\\n <div class=\"block-title\">New patient fields</div>\\r\\n <div class=\"block block-strong\">\\r\\n <div class=\"list\" style=\"margin: 0;\">\\r\\n <ul id=\"items\">\\r\\n ';\n r += Template7Helpers.each.call(ctx_1, ctx_1.settings.newPatientFields, {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <li>\\r\\n <div class=\"item-content\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\">';\n r += c(ctx_2.name, ctx_2);\n r += '</div>\\r\\n <div class=\"item-after\">\\r\\n Visible&nbsp;\\r\\n <label class=\"toggle toggle-init\"> \\r\\n <input name=\"';\n r += c(ctx_2.name, ctx_2);\n r += '\" type=\"checkbox\" ';\n r += Template7Helpers.js.call(ctx_2, 'this.display==true?\\'checked\\':\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += ' />\\r\\n <span class=\"toggle-icon\"></span>\\r\\n </label>\\r\\n &nbsp;&nbsp;\\r\\n Required&nbsp;\\r\\n <label class=\"toggle toggle-init\">\\r\\n <input name=\"';\n r += c(ctx_2.name, ctx_2);\n r += '\" type=\"checkbox\" ';\n r += Template7Helpers.js.call(ctx_2, 'this.required==true?\\'checked\\':\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += ' />\\r\\n <span class=\"toggle-icon\"></span>\\r\\n </label> \\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n </ul>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </form>\\r\\n <form id=\"settings-form-videoDurationMax\" autocomplete=\"off\">\\r\\n\\r\\n <div class=\"block-title\">Video capture</div>\\r\\n <div class=\"block block-strong\">\\r\\n <div class=\"list inline-labels\" style=\"margin: 0;\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Max duration (in seconds)</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"videoDurationMax\" type=\"number\" value=\"';\n r += c(ctx_1.settings.videoDurationMax, ctx_1);\n r += '\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </form>\\r\\n\\r\\n <div class=\"row\" style=\"padding:0 56px 56px 56px; justify-content: center;\">\\r\\n <div>\\r\\n <button class=\"button button-fill\" @click=\"save\">Save changes</button>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n \n\n//# sourceURL=webpack:///./src/pages/common.f7.html?");
  980. /***/ }),
  981. /***/ "./src/pages/ctparams.f7.html":
  982. /*!************************************!*\
  983. !*** ./src/pages/ctparams.f7.html ***!
  984. \************************************/
  985. /*! exports provided: default */
  986. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  987. "use strict";
  988. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n }\n },\n methods: {},\n id: '022e103c7b',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <div class=\"block-title\">Study characteristics</div>\\r\\n <div class=\"block block-strong\">\\r\\n <form class=\"list inline-labels no-hairlines-md\" id=\"settings-form\" style=\"margin:0;\" autocomplete=\"off\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Cinical trial ID</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"number\" placeholder=\"Clinical trial UID\" value=\"';\n r += c(ctx_1.settings.number, ctx_1);\n r += '\">\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Clinical trial name</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"name\" placeholder=\"Clinical trial name\" value=\"';\n r += c(ctx_1.settings.name, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Starting start</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"date\" name=\"start\" placeholder=\"yyyy-MM-dd\" value=\"';\n r += c(ctx_1.settings.start, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Expected patient Number</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"number\" name=\"patient_expected\" placeholder=\"Expected patient count\" value=\"';\n r += c(ctx_1.settings.patient_expected, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Number of center involved</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"center_count\" placeholder=\"Number of centers\" value=\"';\n r += c(ctx_1.settings.center_count, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Inclusion duration (months)</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"inclusion_month\" placeholder=\"Inclusion duration\" value=\"';\n r += c(ctx_1.settings.inclusion_month, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Duration of Follow up</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"followup_month\" placeholder=\"Follow duration\" value=\"';\n r += c(ctx_1.settings.followup_month, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Visits per patient</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"visit_per_patient\" placeholder=\"Visits per patient\" value=\"';\n r += c(ctx_1.settings.visit_per_patient, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Interval between visits</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"visit_interval\" placeholder=\"Interval between visits\" value=\"';\n r += c(ctx_1.settings.visit_interval, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Images per visit</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"image_per_visit\" placeholder=\"Images per visit\" value=\"';\n r += c(ctx_1.settings.image_per_visit, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Videos per visit</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"video_per_visit\" placeholder=\"Videos per visit\" value=\"';\n r += c(ctx_1.settings.video_per_visit, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Number of Measures per Timepoint</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"measure_per_timepoint\" placeholder=\"Measures per timepoint\" value=\"';\n r += c(ctx_1.settings.measure_per_timepoint, ctx_1);\n r += '\" required validate>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Additional comments</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <textarea disabled name=\"comment\" placeholder=\"Comments\" value=\"';\n r += c(ctx_1.settings.comment, ctx_1);\n r += '\"></textarea>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Anonymization</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled name=\"anon_percent\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"';\n r += c(ctx_1.settings.anon_percent, ctx_1);\n r += '\">\\r\\n <div class=\"item-input-info\">Percentage of image height, starting at the top of the images.</div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n </ul>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/ctparams.f7.html?");
  989. /***/ }),
  990. /***/ "./src/pages/ctstats.f7.html":
  991. /*!***********************************!*\
  992. !*** ./src/pages/ctstats.f7.html ***!
  993. \***********************************/
  994. /*! exports provided: default */
  995. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  996. "use strict";
  997. eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n console.log(this);\n const DATA_COUNT = this.patients.length;\n let labels = [];\n for (let i = 0; i < this.patients.length; i++) {\n labels.push(this.patients[i].m);\n }\n let patients = [];\n for (let i = 0; i < this.patients.length; i++) {\n patients.push(this.patients[i].patients);\n }\n let measures = [];\n for (let i = 0; i < this.patients.length; i++) {\n measures.push(this.patients[i].measures);\n }\n new global.Chart(document.getElementById('statsPanel').getContext('2d'), {\n type: 'line',\n data: {\n labels: labels,\n datasets: [\n {\n label: 'Patients',\n data: patients,\n borderColor: global.ChartUtils.colors().red,\n backgroundColor: global.ChartUtils.colorsAlpha().red\n },\n {\n label: 'Measures',\n data: measures,\n borderColor: global.ChartUtils.colors().blue,\n backgroundColor: global.ChartUtils.colorsAlpha().blue\n }\n ]\n },\n options: {\n responsive: true,\n elements: { bar: { borderWidth: 2 } },\n plugins: {\n legend: { position: 'top' },\n title: {\n display: true,\n text: 'Patients & measures numbers per month'\n }\n }\n }\n });\n }\n },\n methods: {},\n id: '3fe782002f',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <div class=\"block-title\">Clinical trial statistics</div>\\r\\n <div class=\"block block-strong\">\\r\\n <canvas id=\"statsPanel\"></canvas>\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./src/pages/ctstats.f7.html?");
  998. /***/ }),
  999. /***/ "./src/pages/ctusers.f7.html":
  1000. /*!***********************************!*\
  1001. !*** ./src/pages/ctusers.f7.html ***!
  1002. \***********************************/
  1003. /*! exports provided: default */
  1004. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1005. "use strict";
  1006. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n }\n },\n methods: {},\n id: '2b0f9a40ef',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <div class=\"block-title\">Invest-Readers-Admin</div>\\r\\n <div class=\"block block-strong\">\\r\\n <form class=\"list inline-labels no-hairlines-md\" id=\"settings-form\" style=\"margin:0;\" autocomplete=\"off\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Administrators</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"number\" value=\"';\n r += c(ctx_1.data.admin, ctx_1);\n r += '\">\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Investigators</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"number\" value=\"';\n r += c(ctx_1.data.investigator, ctx_1);\n r += '\">\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 300px;\">Readers</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input disabled type=\"text\" name=\"number\" value=\"';\n r += c(ctx_1.data.reader, ctx_1);\n r += '\">\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n </ul>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/ctusers.f7.html?");
  1007. /***/ }),
  1008. /***/ "./src/pages/customer.f7.html":
  1009. /*!************************************!*\
  1010. !*** ./src/pages/customer.f7.html ***!
  1011. \************************************/
  1012. /*! exports provided: default */
  1013. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1014. "use strict";
  1015. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var template7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! template7 */ \"./node_modules/template7/dist/template7.esm.js\");\n\n \n const Template7Helpers = template7__WEBPACK_IMPORTED_MODULE_0__[\"default\"].helpers;\n \n \n \n /* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n if (this.who == 'physician') {\n $$('#credit-add').hide();\n $$('#credit-history').hide();\n } else {\n this.customerID = this.customer[0].ID;\n $$('#credit-history').html('');\n $$('#credit-history').show();\n let acc = 0;\n for (let i = 0; i < this.customer[0].credits.credit.length; i++) {\n acc += parseInt(this.customer[0].credits.credit[i].count);\n }\n $$('#credit-history').append('<table class=\"data-table\" style=\"width: 350px;\">' + '<tr><td>Total purchased</td><td>' + this.customer[0].credits.purchased + '</td></tr>' + '<tr><td>Total used</td><td>' + this.customer[0].credits.used + '</td></tr>' + '<tr><td style=\"font-weight:600;\">Total available</td><td style=\"font-weight:600;\">' + (this.customer[0].credits.purchased - this.customer[0].credits.used) + '</td></tr>' + '<table>');\n for (let i = 0; i < this.customer[0].credits.credit.length; i++) {\n $$('#credit-history').append('<li>' + this.customer[0].credits.credit[i].stamp + ': ' + this.customer[0].credits.credit[i].count + ' credits purchased</li>');\n }\n }\n }\n },\n methods: {\n addCredit: function () {\n var postData = {\n apiKey: '',\n ID: this.customerID,\n count: $$('#credit-count').val()\n };\n console.log(postData);\n let that = this;\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/credit/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/credit', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n }\n } else {\n app.views.workspaceView.router.navigate('/customer/' + that.who + '/', {\n reloadCurrent: true,\n ignoreCache: true\n });\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n },\n phyCredits: function (ID) {\n this.customerID = ID;\n $$('#credit-add').show();\n $$('#credit-history').html('');\n $$('#credit-history').show();\n $$('.customer').css({ 'background-color': 'unset' });\n $$('#customer-' + ID).css({ 'background-color': 'antiquewhite' });\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/credit/' + ID + '/?apiKey=').then(data => {\n app.methods.refreshToken(data);\n console.log('admin/credit/' + ID, data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n }\n } else {\n let acc = 0;\n for (let i = 0; i < data.credit.length; i++) {\n acc += parseInt(data.credit[i].count);\n }\n $$('#credit-history').append('<table class=\"data-table\" style=\"width: 350px;\">' + '<tr><td>Total purchased</td><td>' + data.purchased + '</td></tr>' + '<tr><td>Total used</td><td>' + data.used + '</td></tr>' + '<tr><td style=\"font-weight:600;\">Total available</td><td style=\"font-weight:600;\">' + (data.purchased - data.used) + '</td></tr>' + '<table>');\n for (let i = 0; i < data.credit.length; i++) {\n $$('#credit-history').append('<li>' + data.credit[i].stamp + ': ' + data.credit[i].count + ' credits purchased</li>');\n }\n }\n }).catch(e => {\n console.log('exception', e);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n });\n },\n add: function () {\n let p = app.form.convertToData('#settings-form-new-user');\n if (p.email == '' || p.firstname == '' || p.lastname == '' || p.phone == '') {\n app.dialog.alert('Please fill the form.');\n } else {\n var postData = {\n apiKey: '',\n user: p\n };\n console.log(postData);\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/customer/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/customer', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n }\n } else {\n if (parseInt(data.newUser) == 1) {\n var passwordLink = 'https://cro.ipsocloud.com' + '/?password_token=' + data.password_token;\n console.log('passwordLink', passwordLink);\n let message = 'Dear ' + p.lastname + ' ' + p.firstname + ',<br/><br/>Your CRO ADMINISTRATOR account has been created.<br>Please follow the link below in order to choose your password:<br/>##passwordLink<br/><br/>Thank you!';\n var data = {\n to: data.emailTo,\n from: data.emailFrom,\n subject: 'Account validation',\n message: message.replace('##passwordLink', passwordLink),\n apiKey: ''\n };\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/mailer/send/', data, function (data) {\n console.log('mailer/send', data);\n app.preloader.hide();\n if (data.result == 'OK') {\n app.dialog.alert('E-mail sent to the main CRO administrator.');\n app.views.workspaceView.router.navigate('/customer/ct/', {\n reloadCurrent: true,\n ignoreCache: true\n });\n } else {\n app.dialog.alert('Mail error (' + data.message + ').');\n }\n }, function (data) {\n console.log('error', data);\n }, 'json');\n } else {\n app.views.workspaceView.router.navigate('/customer/ct/', {\n reloadCurrent: true,\n ignoreCache: true\n });\n }\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n }\n }\n },\n id: 'ce0bdae225',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n ';\n r += Template7Helpers.js_if.call(ctx_1, 'this.who == \\'ct\\'', {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <div class=\"block-title\">Clinical trial customer</div>\\r\\n <div class=\"block block-strong\">\\r\\n <form class=\"list inline-labels\" id=\"settings-form-new-user\" style=\"margin:0;\" autocomplete=\"off\">\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 150px;\">E-mail</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input type=\"email\" name=\"email\" placeholder=\"Customer e-mail\" value=\"';\n r += Template7Helpers.js.call(ctx_2, 'this.customer.length?this.customer[0].email:\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\" required validate>\\r\\n <span class=\"input-clear-button\"></span>\\r\\n <div class=\"item-input-info\">Required</div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <ul>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 150px;\">Firstname</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input type=\"text\" name=\"firstname\" placeholder=\"Customer firstname\" value=\"';\n r += Template7Helpers.js.call(ctx_2, 'this.customer.length?this.customer[0].firstname:\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\" required validate>\\r\\n <span class=\"input-clear-button\"></span>\\r\\n <div class=\"item-input-info\">Required</div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 150px;\">Lastname</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input type=\"text\" name=\"lastname\" placeholder=\"Customer lastname\" value=\"';\n r += Template7Helpers.js.call(ctx_2, 'this.customer.length?this.customer[0].lastname:\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\" required validate>\\r\\n <span class=\"input-clear-button\"></span>\\r\\n <div class=\"item-input-info\">Required</div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input item-input-with-info\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\" style=\"width: 150px;\">Phone</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input type=\"tel\" name=\"phone\" placeholder=\"Customer phone number\" value=\"';\n r += Template7Helpers.js.call(ctx_2, 'this.customer.length?this.customer[0].phone:\\'\\'', {\n hash: {},\n data: data_2 || {},\n fn: function empty() {\n return '';\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\" required validate>\\r\\n <span class=\"input-clear-button\"></span>\\r\\n <div class=\"item-input-info\">Required</div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <input type=\"hidden\" name=\"max_readers\" value=\"0\">\\r\\n <input type=\"hidden\" name=\"max_investigators\" value=\"0\">\\r\\n </ul>\\r\\n </form>\\r\\n <div class=\"row\" style=\"justify-content: center; margin-top:16px;\">\\r\\n <div>\\r\\n <button class=\"button button-fill\" @click=\"add\">';\n r += Template7Helpers.js_if.call(ctx_2, 'this.customer.length', {\n hash: {},\n data: data_2 || {},\n fn: function (ctx_3, data_3) {\n var r = '';\n r += 'Save';\n return r;\n },\n inverse: function (ctx_3, data_3) {\n var r = '';\n r += 'Register';\n return r;\n },\n root: root,\n parents: [ctx_1]\n });\n r += '</button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n\\r\\n ';\n r += Template7Helpers.js_if.call(ctx_1, 'this.who == \\'physician\\'', {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <div class=\"block-title\">Physician customers</div>\\r\\n <div class=\"block block-strong\">\\r\\n <form class=\"list\" style=\"margin: 0;\" id=\"settings-form-customers\" autocomplete=\"off\">\\r\\n <ul id=\"items\">\\r\\n ';\n r += Template7Helpers.each.call(ctx_2, ctx_2.customer, {\n hash: {},\n data: data_2 || {},\n fn: function (ctx_3, data_3) {\n var r = '';\n r += '\\r\\n <li class=\"customer\" id=\"customer-';\n r += c(ctx_3.ID, ctx_3);\n r += '\">\\r\\n <div class=\"item-content\">\\r\\n <div class=\"item-inner\">\\r\\n <a href=\"#\" class=\"link item-title\" @click=\"phyCredits(';\n r += c(ctx_3.ID, ctx_3);\n r += ')\">';\n r += c(ctx_3.lastname, ctx_3);\n r += ' ';\n r += c(ctx_3.firstname, ctx_3);\n r += ' (';\n r += c(ctx_3.email, ctx_3);\n r += ')</a>\\r\\n <div class=\"item-after\" style=\"align-items: center;\">\\r\\n Active&nbsp;\\r\\n <label class=\"toggle toggle-init\">\\r\\n <input name=\"\" type=\"checkbox\" checked />\\r\\n <span class=\"toggle-icon\"></span>\\r\\n </label>\\r\\n <!--&nbsp;&nbsp;&nbsp;&nbsp;\\r\\n <a class=\"button button-outline\">Download data</a-->\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n </ul>\\r\\n </form>\\r\\n </div>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n\\r\\n </form>\\r\\n\\r\\n <div class=\"block block-strong\" id=\"credit-add\">\\r\\n <div class=\"flex row centerh\" style=\"width: 400px;\">\\r\\n <div class=\"list inline-labels no-hairlines-md\" style=\"margin:0;\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\" style=\"padding:0;\">\\r\\n <div class=\"item-title\" style=\"width:100px;\">Credits: </div>\\r\\n <div class=\"item-input-wrap\" style=\"width: 100px;\">\\r\\n <input type=\"number\" id=\"credit-count\" value=\"0\">\\r\\n </div>\\r\\n </div>\\r\\n </li> \\r\\n </ul>\\r\\n </div>\\r\\n <a href=\"#\" class=\"button button-fill\" style=\"width: 100px;\" @click=\"addCredit\">Add</a>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <div class=\"block block-strong\" id=\"credit-history\">\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n \n\n//# sourceURL=webpack:///./src/pages/customer.f7.html?");
  1016. /***/ }),
  1017. /***/ "./src/pages/data-auditlog.f7.html":
  1018. /*!*****************************************!*\
  1019. !*** ./src/pages/data-auditlog.f7.html ***!
  1020. \*****************************************/
  1021. /*! exports provided: default */
  1022. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1023. "use strict";
  1024. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n download: function () {\n let start = $$('#settings-form-auditlog input[name=\"start\"]').val();\n let end = $$('#settings-form-auditlog input[name=\"end\"]').val();\n let postData = {\n apiKey: '',\n start: start,\n end: end\n };\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/ct_admin/auditlog/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/auditlog/', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n default:\n app.dialog.alert('It\\'s not working. Please check the logs.');\n break;\n }\n } else {\n const b64toBlob = (b64Data, contentType = '', sliceSize = 512) => {\n const byteCharacters = atob(b64Data);\n const byteArrays = [];\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n const blob = new Blob(byteArrays, { type: 'text/plain' });\n return blob;\n };\n const blob = b64toBlob(data.data, 'text/plain');\n const blobUrl = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.style.display = 'none';\n document.body.appendChild(a);\n a.href = blobUrl;\n a.setAttribute('download', 'auditlog_' + start + '_' + end + '.csv');\n a.setAttribute('class', 'link external');\n a.setAttribute('target', '_blank');\n a.click();\n window.URL.revokeObjectURL(a.href);\n document.body.removeChild(a);\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n },\n updateButtons: function () {\n let start = $$('#settings-form-auditlog input[name=\"start\"]').val();\n let end = $$('#settings-form-auditlog input[name=\"end\"]').val();\n $$('#dlButton').addClass('disabled');\n if (start != '' && end != '') {\n $$('#dlButton').removeClass('disabled');\n }\n }\n },\n id: 'c7ddc51fc7',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page\">\\n <div class=\"page no-navbar\">\\n\\n <div class=\"page-content\">\\n\\n <div class=\"block-title\">Data: Audit Log</div>\\n <div class=\"block block-strong\">\\n\\n <form class=\"list inline-labels no-hairlines-md\" id=\"settings-form-auditlog\" style=\"margin:0;\" autocomplete=\"off\">\\n <ul>\\n <li class=\"item-content item-input item-input-with-info\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\" style=\"width: 150px;\">Start date</div>\\n <div class=\"item-input-wrap\">\\n <input type=\"date\" name=\"start\" value=\"\" required validate @change=\"updateButtons\">\\n <span class=\"input-clear-button\"></span>\\n <div class=\"item-input-info\">Required</div>\\n </div>\\n </div>\\n </li>\\n <li class=\"item-content item-input item-input-with-info\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\" style=\"width: 150px;\">End date</div>\\n <div class=\"item-input-wrap\">\\n <input type=\"date\" name=\"end\" value=\"\" required validate @change=\"updateButtons\">\\n <span class=\"input-clear-button\"></span>\\n <div class=\"item-input-info\">Required</div>\\n </div>\\n </div>\\n </li>\\n </ul>\\n </form>\\n <div class=\"row\" style=\"justify-content: center; margin-top:16px;\">\\n <div>\\n <button id=\"dlButton\" class=\"button button-fill disabled\" @click=\"download\">Download data (CSV)</button>\\n </div>\\n </div>\\n\\n </div>\\n\\n\\n </div>\\n\\n </div>\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/data-auditlog.f7.html?");
  1025. /***/ }),
  1026. /***/ "./src/pages/data-export.f7.html":
  1027. /*!***************************************!*\
  1028. !*** ./src/pages/data-export.f7.html ***!
  1029. \***************************************/
  1030. /*! exports provided: default */
  1031. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1032. "use strict";
  1033. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var template7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! template7 */ \"./node_modules/template7/dist/template7.esm.js\");\n\n \n const Template7Helpers = template7__WEBPACK_IMPORTED_MODULE_0__[\"default\"].helpers;\n \n \n \n /* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n export: function (ID) {\n console.log('export', ID);\n let postData = {\n apiKey: '',\n ID: ID\n };\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/export/?apiKey=', postData, function (data) {\n console.log('admin/export', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n default:\n app.dialog.alert('It\\'s not working. Please check the logs.');\n break;\n }\n } else {\n $$('#result').html('<br/><br/>Your download is ready!<br/><br/>' + '<a href=\"' + app.data.config.storageBaseURL + '/' + data.csv + '\" class=\"link external\">CSV file</a><br/>' + '<a href=\"' + app.data.config.storageBaseURL + '/' + data.zip + '\" class=\"link external\">ZIP file</a><br/><br/>');\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n }\n },\n id: '785ef6b425',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page\">\\n <div class=\"page no-navbar\">\\n\\n <div class=\"page-content\">\\n\\n <div class=\"block-title\">Data: Export</div>\\n <div class=\"block block-strong\">\\n\\n <div class=\"row\" style=\"justify-content: center;\">\\n ';\n r += Template7Helpers.each.call(ctx_1, ctx_1.users, {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\n <a href=\"#\" class=\"button\" @click=\"export(';\n r += c(ctx_2.ID, ctx_2);\n r += ')\">';\n r += c(ctx_2.firstname, ctx_2);\n r += ' ';\n r += c(ctx_2.lastname, ctx_2);\n r += ' (';\n r += c(ctx_2.email, ctx_2);\n r += ')</a>\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\n </div>\\n\\n <div id=\"result\" style=\"text-align: center; display: flex; flex-shrink: 1; flex-direction: column; width: 100%; justify-content: center; margin-top:16px;\">\\n </div>\\n\\n </div>\\n\\n\\n </div>\\n\\n </div>\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n \n\n//# sourceURL=webpack:///./src/pages/data-export.f7.html?");
  1034. /***/ }),
  1035. /***/ "./src/pages/default.f7.html":
  1036. /*!***********************************!*\
  1037. !*** ./src/pages/default.f7.html ***!
  1038. \***********************************/
  1039. /*! exports provided: default */
  1040. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1041. "use strict";
  1042. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n test: function () {\n console.log('test');\n }\n },\n id: 'e21ddb2e41',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page no-navbar\">\\n\\n <div class=\"page-content\">\\n \\n <div class=\"block\">\\n </div>\\n\\n </div>\\n\\n </div>\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/default.f7.html?");
  1043. /***/ }),
  1044. /***/ "./src/pages/front-signin.f7.html":
  1045. /*!****************************************!*\
  1046. !*** ./src/pages/front-signin.f7.html ***!
  1047. \****************************************/
  1048. /*! exports provided: default */
  1049. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1050. "use strict";
  1051. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n if (localStorage.getItem('username') !== null) {\n app.form.fillFromData('#login-form', {\n 'username': localStorage.getItem('username'),\n 'password': localStorage.getItem('password'),\n 'store': ['on']\n });\n }\n }\n },\n id: '391597fe50',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page\">\\n <div class=\"navbar\" style=\"background-color: white;\">\\n <div class=\"navbar-inner\">\\n <div class=\"title sliding\"><img src=\"static/images/logo.png\" style=\"height:56px;\"></div>\\n <div class=\"right\" style=\"margin-right:16px;\">IIMT Back-Office</div>\\n </div>\\n </div>\\n <div class=\"page-content login-screen-content\">\\n <div class=\"login-screen-title\">Welcome</div>\\n <form class=\"list\" id=\"login-form\" autocomplete=\"off\">\\n <ul>\\n <li class=\"item-content item-input\">\\n <div class=\"item-inner\">\\n <div class=\"item-title item-label\">Email</div>\\n <div class=\"item-input-wrap\">\\n <input type=\"email\" name=\"username\" placeholder=\"Your e-mail\" required validate>\\n </div>\\n </div>\\n </li>\\n <li class=\"item-content item-input\">\\n <div class=\"item-inner\">\\n <div class=\"item-title item-label\">Password</div>\\n <div class=\"item-input-wrap\">\\n <input type=\"password\" name=\"password\" placeholder=\"Your password\" required validate>\\n </div>\\n </div>\\n </li>\\n <li class=\"item-content\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Remember me</div>\\n <div class=\"item-after\">\\n <label class=\"toggle toggle-init\">\\n <input type=\"checkbox\" name=\"store\">\\n <span class=\"toggle-icon\"></span>\\n </label>\\n </div>\\n </div>\\n </li>\\n </ul>\\n </form>\\n <div class=\"center\">\\n <div class=\"block\">\\n <button class=\"button button-fill\" onclick=\"app.methods.signin();\">Signin</button>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/front-signin.f7.html?");
  1052. /***/ }),
  1053. /***/ "./src/pages/menu.f7.html":
  1054. /*!********************************!*\
  1055. !*** ./src/pages/menu.f7.html ***!
  1056. \********************************/
  1057. /*! exports provided: default */
  1058. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1059. "use strict";
  1060. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n methods: {\n select(what) {\n $$('li').removeClass('menu-select');\n $$('#menu-' + what).addClass('menu-select');\n }\n },\n id: 'a85765e9c0',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page\" style=\"background-color:white; border-right:1px solid #ddd;\">\\n\\n <div class=\"navbar\">\\n <div class=\"navbar-inner sliding\">\\n <div class=\"title\">';\n r += c(ctx_1.data.firstname, ctx_1);\n r += ' ';\n r += c(ctx_1.data.lastname, ctx_1);\n r += '</div>\\n </div>\\n </div>\\n\\n <div class=\"page-content\" style=\"position:relative;\">\\n\\n <div class=\"block-title\" style=\"font-size:14px; font-weight:600;\">General</div>\\n <div class=\"list\">\\n <ul>\\n <li id=\"menu-common\">\\n <a href=\"/common/\" @click=\"select(\\'common\\')\" class=\"item-link item-content panel-close\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Common settings</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n </ul>\\n </div>\\n\\n <div class=\"block-title\" style=\"font-size:14px; font-weight:600;\">Physicians</div>\\n <div class=\"list\">\\n <ul>\\n <li id=\"menu-customer/physician\">\\n <a href=\"/customer/physician/\" @click=\"select(\\'customer/physician\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Customer management</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-pacs\">\\n <a href=\"/pacs/\" @click=\"select(\\'pacs\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">PACS settings</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-phy/ct\">\\n <a href=\"/phystats/\" @click=\"select(\\'phy/ct\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Statistics</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n </ul>\\n </div>\\n\\n <div class=\"block-title\" style=\"font-size:14px; font-weight:600;\">Clinical trial</div>\\n <div class=\"list\">\\n <ul>\\n <li id=\"menu-customer/ct\">\\n <a href=\"/customer/ct/\" @click=\"select(\\'customer/ct\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Customer management</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-customer/ctparams\">\\n <a href=\"/ctparams/\" @click=\"select(\\'customer/ctparams\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Study characteristics</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-customer/ctusers\">\\n <a href=\"/ctusers/\" @click=\"select(\\'customer/ctusers\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Invest-Readers-Admin</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-stats/ct\">\\n <a href=\"/ctstats/\" @click=\"select(\\'stats/ct\\')\" class=\"item-link item-content panel-close\" data-reload-current=\"true\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Statistics</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n </ul>\\n </div>\\n\\n <div class=\"block-title\" style=\"font-size:14px; font-weight:600;\">General data</div>\\n <div class=\"list\">\\n <ul>\\n <li id=\"menu-data/auditlog\">\\n <a href=\"/data/auditlog/\" @click=\"select(\\'data/auditlog\\')\" class=\"item-link item-content panel-close\" data-view=\".view-workspace\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Audit log</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n <li id=\"menu-data/export\">\\n <a href=\"/data/export/\" @click=\"select(\\'data/export\\')\" class=\"item-link item-content panel-close\" data-view=\".view-workspace\" data-ignore-cache=\"true\" data-reload-current=\"true\">\\n <div class=\"item-inner\">\\n <div class=\"item-title\">Data export</div>\\n <div class=\"item-after\"></div>\\n </div>\\n </a>\\n </li>\\n </ul>\\n </div>\\n\\n </div>\\n\\n <div class=\"toolbar toolbar-bottom\">\\n <div class=\"toolbar-inner center-content\">\\n <a href=\"#\" class=\"link\" onclick=\"app.methods.signout();\">Signout</a>\\n </div>\\n </div>\\n\\n </div>\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/menu.f7.html?");
  1061. /***/ }),
  1062. /***/ "./src/pages/not-found.f7.html":
  1063. /*!*************************************!*\
  1064. !*** ./src/pages/not-found.f7.html ***!
  1065. \*************************************/
  1066. /*! exports provided: default */
  1067. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1068. "use strict";
  1069. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n id: '7610c0ad92',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\n <div class=\"page\">\\n <div class=\"navbar\">\\n <div class=\"navbar-inner sliding\">\\n <div class=\"left\">\\n <a href=\"#\" class=\"link back\">\\n <i class=\"icon icon-back\"></i>\\n <span class=\"if-ios\">Back</span>\\n </a>\\n </div>\\n <div class=\"title\">Not found</div>\\n </div>\\n </div>\\n <div class=\"page-content\">\\n <div class=\"block block-strong\">\\n <p>Sorry</p>\\n <p>Requested content not found.</p>\\n </div>\\n </div>\\n </div>\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n\n//# sourceURL=webpack:///./src/pages/not-found.f7.html?");
  1070. /***/ }),
  1071. /***/ "./src/pages/pacs.f7.html":
  1072. /*!********************************!*\
  1073. !*** ./src/pages/pacs.f7.html ***!
  1074. \********************************/
  1075. /*! exports provided: default */
  1076. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1077. "use strict";
  1078. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var template7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! template7 */ \"./node_modules/template7/dist/template7.esm.js\");\n\n \n const Template7Helpers = template7__WEBPACK_IMPORTED_MODULE_0__[\"default\"].helpers;\n \n \n \n /* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n }\n },\n methods: {\n edit: function (ID) {\n for (let i = 0; i < this.pacs.length; i++) {\n if (this.pacs[i].ID == ID) {\n console.log(this.pacs[i]);\n $$('#settings-form-physicianPacs input[name=\"PACSID\"]').val(this.pacs[i].ID);\n $$('#settings-form-physicianPacs select[name=\"physicianID\"]').val(this.pacs[i].fk_physician);\n $$('#settings-form-physicianPacs input[name=\"callingAET\"]').val(this.pacs[i].data.callingAET);\n $$('#settings-form-physicianPacs input[name=\"calledAET\"]').val(this.pacs[i].data.calledAET);\n $$('#settings-form-physicianPacs input[name=\"serverAddress\"]').val(this.pacs[i].data.serverAddress);\n $$('#settings-form-physicianPacs input[name=\"queryPort\"]').val(this.pacs[i].data.queryPort);\n $$('#settings-form-physicianPacs input[name=\"recievePort\"]').val(this.pacs[i].data.recievePort);\n break;\n }\n }\n },\n test: function () {\n let postData = {\n apiKey: '',\n callingAET: $$('#settings-form-physicianPacs input[name=\"callingAET\"]').val(),\n calledAET: $$('#settings-form-physicianPacs input[name=\"calledAET\"]').val(),\n serverAddress: $$('#settings-form-physicianPacs input[name=\"serverAddress\"]').val(),\n queryPort: $$('#settings-form-physicianPacs input[name=\"queryPort\"]').val()\n };\n console.log(postData);\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/echo/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/echo/', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n default:\n app.dialog.alert('It\\'s not working. Please check the logs.');\n break;\n }\n } else {\n app.dialog.alert('It\\'s working well so far!');\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n },\n save: function () {\n var postData = {\n apiKey: '',\n data: app.form.convertToData('#settings-form-physicianPacs'),\n who: this.who\n };\n console.log(postData);\n app.preloader.show();\n app.request.post(app.data.config.apiBaseURL + '/admin/pacs/?apiKey=', postData, function (data) {\n app.methods.refreshToken(data);\n console.log('admin/pacs', data);\n app.preloader.hide();\n if (data.result == 'ERROR') {\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Please signin again.');\n break;\n case 'internal_error':\n app.dialog.alert('Internal error.');\n break;\n }\n } else {\n app.views.workspaceView.router.navigate('/pacs/', {\n reloadCurrent: true,\n ignoreCache: true\n });\n }\n }, function (data) {\n console.log('error', data);\n app.preloader.hide();\n app.dialog.alert('Server unavailable.');\n }, 'json');\n }\n },\n id: '632e8c6e80',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <!--div class=\"block-title\">Our Application Entity Title</div>\\r\\n <div class=\"block block-strong\">\\r\\n <div class=\"list inline-labels\" style=\"margin: 0;\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">AET</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"ourAET\" type=\"text\" value=\"';\n r += c(ctx_1.ourAET, ctx_1);\n r += '\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n </div-->\\r\\n\\r\\n <div id=\"settings-form-physicianPacs\" autocomplete=\"off\">\\r\\n <input type=\"hidden\" name=\"PACSID\" value=\"0\">\\r\\n\\r\\n <div class=\"block-title\">PACS settings</div>\\r\\n <div class=\"block block-strong\">\\r\\n <div class=\"list inline-labels\" style=\"margin: 0;\">\\r\\n <ul>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Customer</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <select placeholder=\"Please choose...\" name=\"physicianID\">\\r\\n ';\n r += Template7Helpers.each.call(ctx_1, ctx_1.customer, {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <option value=\"';\n r += c(ctx_2.physicianID, ctx_2);\n r += '\">';\n r += c(ctx_2.lastname, ctx_2);\n r += ' ';\n r += c(ctx_2.firstname, ctx_2);\n r += ' (';\n r += c(ctx_2.email, ctx_2);\n r += ')</option>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n </select>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Calling AET</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"callingAET\" type=\"text\" value=\"\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Called AET</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"calledAET\" type=\"text\" value=\"\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Server address</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"serverAddress\" type=\"text\" value=\"\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Query port</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"queryPort\" type=\"number\" value=\"\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\"item-content item-input\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title item-label\">Recieve port</div>\\r\\n <div class=\"item-input-wrap\">\\r\\n <input name=\"recievePort\" type=\"number\" value=\"\" />\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n\\r\\n <div class=\"row\" style=\"padding:0 56px 56px 56px; display:flex; flex-shrink:1; flex-direction: row;\">\\r\\n <div>\\r\\n <button class=\"button button-fill color-green\" @click=\"test\">Echo test</button>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\"button button-fill\" @click=\"save\">Save changes</button>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <div class=\"block-title\">Existing PACS</div>\\r\\n <div class=\"block block-strong\">\\r\\n <form class=\"list\" style=\"margin: 0;\" id=\"settings-existing-pacs\" autocomplete=\"off\">\\r\\n <ul id=\"items\">\\r\\n ';\n r += Template7Helpers.each.call(ctx_1, ctx_1.pacs, {\n hash: {},\n data: data_1 || {},\n fn: function (ctx_2, data_2) {\n var r = '';\n r += '\\r\\n <li>\\r\\n <div class=\"item-content\">\\r\\n <div class=\"item-inner\">\\r\\n <div class=\"item-title\">';\n r += c(ctx_2.data.serverAddress, ctx_2);\n r += ': ';\n r += c(ctx_2.data.callingAET, ctx_2);\n r += ' -> ';\n r += c(ctx_2.data.calledAET, ctx_2);\n r += '</div>\\r\\n <div class=\"item-after\" style=\"align-items: center;\">\\r\\n &nbsp;&nbsp;&nbsp;&nbsp;\\r\\n <a class=\"button button-outline\" @click=\"edit(';\n r += c(ctx_2.ID, ctx_2);\n r += ')\">Edit</a>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n ';\n return r;\n },\n inverse: function empty() {\n return '';\n },\n root: root,\n parents: [ctx_1]\n });\n r += '\\r\\n </ul>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n \n\n//# sourceURL=webpack:///./src/pages/pacs.f7.html?");
  1079. /***/ }),
  1080. /***/ "./src/pages/phystats.f7.html":
  1081. /*!************************************!*\
  1082. !*** ./src/pages/phystats.f7.html ***!
  1083. \************************************/
  1084. /*! exports provided: default */
  1085. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1086. "use strict";
  1087. eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony default export */ __webpack_exports__[\"default\"] = ({\n on: {\n pageInit: function () {\n const DATA_COUNT = this.patients.length;\n let labels = [];\n for (let i = 0; i < this.patients.length; i++) {\n labels.push(this.patients[i].m);\n }\n let patients = [];\n for (let i = 0; i < this.patients.length; i++) {\n patients.push(this.patients[i].patients);\n }\n let measures = [];\n for (let i = 0; i < this.patients.length; i++) {\n measures.push(this.patients[i].measures);\n }\n new global.Chart(document.getElementById('statsPanel').getContext('2d'), {\n type: 'line',\n data: {\n labels: labels,\n datasets: [\n {\n label: 'Patients',\n data: patients,\n borderColor: global.ChartUtils.colors().red,\n backgroundColor: global.ChartUtils.colorsAlpha().red\n },\n {\n label: 'Measures',\n data: measures,\n borderColor: global.ChartUtils.colors().blue,\n backgroundColor: global.ChartUtils.colorsAlpha().blue\n }\n ]\n },\n options: {\n responsive: true,\n elements: { bar: { borderWidth: 2 } },\n plugins: {\n legend: { position: 'top' },\n title: {\n display: true,\n text: 'Patients & measures numbers per month'\n }\n }\n }\n });\n }\n },\n methods: {},\n id: 'b719b7a149',\n render() {\n return function (ctx_1, data_1, root) {\n function isArray(arr) {\n return Array.isArray(arr);\n }\n function isFunction(func) {\n return typeof func === 'function';\n }\n function c(val, ctx) {\n if (typeof val !== 'undefined' && val !== null) {\n if (isFunction(val)) {\n return val.call(ctx);\n } else\n return val;\n } else\n return '';\n }\n root = root || ctx_1 || {};\n var r = '';\n r += '\\r\\n <div class=\"page\">\\r\\n <div class=\"page no-navbar\">\\r\\n\\r\\n <div class=\"page-content\">\\r\\n\\r\\n <div class=\"block-title\">Physician statistics</div>\\r\\n <div class=\"block block-strong\">\\r\\n <canvas id=\"statsPanel\"></canvas>\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n \\r\\n </div>\\r\\n </div>\\r\\n';\n return r;\n }(this);\n },\n styleScoped: false\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./src/pages/phystats.f7.html?");
  1088. /***/ }),
  1089. /***/ "./src/routes.js":
  1090. /*!***********************!*\
  1091. !*** ./src/routes.js ***!
  1092. \***********************/
  1093. /*! exports provided: default */
  1094. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1095. "use strict";
  1096. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pages_blank_f7_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pages/blank.f7.html */ \"./src/pages/blank.f7.html\");\n/* harmony import */ var _pages_default_f7_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pages/default.f7.html */ \"./src/pages/default.f7.html\");\n/* harmony import */ var _pages_front_signin_f7_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pages/front-signin.f7.html */ \"./src/pages/front-signin.f7.html\");\n/* harmony import */ var _pages_menu_f7_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pages/menu.f7.html */ \"./src/pages/menu.f7.html\");\n/* harmony import */ var _pages_not_found_f7_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pages/not-found.f7.html */ \"./src/pages/not-found.f7.html\");\n/* harmony import */ var _pages_common_f7_html__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pages/common.f7.html */ \"./src/pages/common.f7.html\");\n/* harmony import */ var _pages_customer_f7_html__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pages/customer.f7.html */ \"./src/pages/customer.f7.html\");\n/* harmony import */ var _pages_ctparams_f7_html__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pages/ctparams.f7.html */ \"./src/pages/ctparams.f7.html\");\n/* harmony import */ var _pages_ctusers_f7_html__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pages/ctusers.f7.html */ \"./src/pages/ctusers.f7.html\");\n/* harmony import */ var _pages_pacs_f7_html__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./pages/pacs.f7.html */ \"./src/pages/pacs.f7.html\");\n/* harmony import */ var _pages_data_auditlog_f7_html__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./pages/data-auditlog.f7.html */ \"./src/pages/data-auditlog.f7.html\");\n/* harmony import */ var _pages_data_export_f7_html__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./pages/data-export.f7.html */ \"./src/pages/data-export.f7.html\");\n/* harmony import */ var _pages_phystats_f7_html__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./pages/phystats.f7.html */ \"./src/pages/phystats.f7.html\");\n/* harmony import */ var _pages_ctstats_f7_html__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./pages/ctstats.f7.html */ \"./src/pages/ctstats.f7.html\");\n\n // Front pages\n\n // Main pages\n\n // Error page\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ([// Default page\n{\n path: '/',\n component: _pages_blank_f7_html__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n}, // Default page\n{\n path: '/default/',\n component: _pages_default_f7_html__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n}, // Front pages\n{\n path: '/front-signin/',\n component: _pages_front_signin_f7_html__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n}, // /data/auditlog/\n{\n path: '/data/auditlog/',\n component: _pages_data_auditlog_f7_html__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n}, // /data/auditlog/\n{\n path: '/data/export/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/export/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/export\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_data_export_f7_html__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // Common pages\n{\n path: '/common/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/common/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/common\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_common_f7_html__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // customer\n{\n path: '/customer/:who/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/customer/' + routeTo.params.who + '/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/customer/\" + routeTo.params.who, data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_customer_f7_html__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // ctparams\n{\n path: '/ctparams/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/ctparams/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/ctparams\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_ctparams_f7_html__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // phystats\n{\n path: '/phystats/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/phystats/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/phystats\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_phystats_f7_html__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // ctparams\n{\n path: '/ctstats/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/ctstats/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/ctstats\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_ctstats_f7_html__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // ctusers\n{\n path: '/ctusers/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/ctusers/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/ctusers\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_ctusers_f7_html__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // PACS\n{\n path: '/pacs/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/pacs/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/pacs/\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_pacs_f7_html__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n }, {\n context: data\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // Main pages\n{\n path: '/menu/',\n async: function async(routeTo, routeFrom, resolve, reject) {\n app.preloader.show();\n app.request.promise.json(app.data.config.apiBaseURL + '/admin/profile/?apiKey=').then(function (data) {\n // Refresh token if needed\n app.methods.refreshToken(data); // Process response\n\n console.log(\"admin/profile\", data);\n app.preloader.hide();\n\n if (data.result == 'ERROR') {\n reject();\n\n switch (data.reason) {\n case 'denied':\n app.methods.signout('Access revoked. Pleas signin again.');\n break;\n\n case 'internal_error':\n app.dialog.alert(\"Internal error.\");\n break;\n }\n } else {\n // Resolve route to load page\n resolve({\n component: _pages_menu_f7_html__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n }, {\n context: {\n data: data\n }\n });\n }\n }).catch(function (e) {\n console.log('exception', e);\n reject();\n app.preloader.hide();\n app.dialog.alert(\"Server unavailable.\");\n });\n }\n}, // Error page\n{\n path: '(.*)',\n component: _pages_not_found_f7_html__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n}]);\n\n//# sourceURL=webpack:///./src/routes.js?");
  1097. /***/ }),
  1098. /***/ "./src/tools.js":
  1099. /*!**********************!*\
  1100. !*** ./src/tools.js ***!
  1101. \**********************/
  1102. /*! exports provided: default */
  1103. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1104. "use strict";
  1105. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // Parse <value> in: http://server/?variable=value\n getQueryVariable: function getQueryVariable(variable) {\n var query = location.search.substring(1);\n var vars = query.split('&');\n\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n return decodeURIComponent(pair[1]);\n }\n }\n\n throw variable + ': not found';\n },\n // Trim string\n trim: function trim(str) {\n // Make sure we trim BOM and NBSP\n var rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n return str.replace(rtrim, '');\n }\n});\n\n//# sourceURL=webpack:///./src/tools.js?");
  1106. /***/ }),
  1107. /***/ 0:
  1108. /*!**************************!*\
  1109. !*** multi ./src/app.js ***!
  1110. \**************************/
  1111. /*! no static exports found */
  1112. /***/ (function(module, exports, __webpack_require__) {
  1113. eval("module.exports = __webpack_require__(/*! ./src/app.js */\"./src/app.js\");\n\n\n//# sourceURL=webpack:///multi_./src/app.js?");
  1114. /***/ })
  1115. /******/ });