\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1736e8dd&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=1736e8dd&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport router from \"./router\";\nimport store from \"./store/index.js\";\nimport App from \"./App.vue\";\n\n//date-fns\nimport { format } from \"date-fns\";\nvar caLocale = require(\"date-fns/locale/en\");\n//Fontawesome stuff\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon, FontAwesomeLayers } from \"@fortawesome/vue-fontawesome\";\n\n//mapbox css\nimport \"@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css\";\nimport \"@mapbox/mapbox-gl-geocoder/dist/mapbox-gl-geocoder.css\";\nimport \"mapbox-gl/dist/mapbox-gl.css\";\n\n//Progressbar\nimport VueProgressBar from \"vue-progressbar\";\nconst progressBarOpts = {\n color: \"#1E965B\",\n failedColor: \"#961e1e\",\n thickness: \"5px\",\n transition: {\n speed: \"0.2s\",\n opacity: \"0.6s\",\n termination: 300\n },\n autoRevert: true,\n location: \"top\",\n inverse: false\n};\nVue.use(VueProgressBar, progressBarOpts);\n\n//Notifications\nimport Notifications from \"vue-notification\";\nVue.use(Notifications);\n\n//Font awesome\nimport {\n faBalanceScale,\n faBan,\n faCalendarAlt,\n faCheck,\n faChevronRight,\n faCogs,\n faCommentDots,\n faCut,\n faDrawPolygon,\n faFingerprint,\n faLeaf,\n faMapMarkedAlt,\n faRulerCombined,\n faShippingFast,\n faSnowplow,\n faUserShield,\n faFrown,\n faBars\n} from \"@fortawesome/free-solid-svg-icons\";\n\nlibrary.add(\n faBalanceScale,\n faBan,\n faCalendarAlt,\n faCheck,\n faChevronRight,\n faCogs,\n faCommentDots,\n faCut,\n faDrawPolygon,\n faFingerprint,\n faLeaf,\n faMapMarkedAlt,\n faRulerCombined,\n faShippingFast,\n faSnowplow,\n faUserShield,\n faFrown,\n faBars\n);\nVue.component(\"font-awesome-icon\", FontAwesomeIcon);\nVue.component(\"font-awesome-layers\", FontAwesomeLayers);\n\n//Vue select\nimport vSelect from \"vue-select\";\nVue.component(\"v-select\", vSelect);\n\n//Vue multi-select\nimport vMultiSelect from \"vue-multiselect\";\nVue.component(\"vue-multiselect\", vMultiSelect);\n//Vue-mulotiselect css\nimport \"vue-multiselect/dist/vue-multiselect.min.css\";\n\n//Vue select\nimport DatePicker from \"vuejs-datepicker\";\nVue.component(\"v-datepicker\", DatePicker);\n\n//Pretty-checkbox\nimport \"pretty-checkbox/src/pretty-checkbox.scss\";\nimport PrettyCheckBox from \"pretty-checkbox-vue/check\";\nVue.component(\"p-checkbox\", PrettyCheckBox);\n\n//Finally\nVue.config.productionTip = false;\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount(\"#app\");\n\nVue.prototype.$dateFns = {\n format: format,\n locale: caLocale\n};\n","/* *\n * asyncRequest is a place where we can centralise talking to our server.\n * error handling, data processing, and even the functions which deals with the server\n * can be centralised here.\n *\n * For instance we are initially using axios to talk to the server api, but should be decide to\n * use a different ajax lib we can relplace it one and everything should work.\n * */\nimport axios from \"axios\";\nimport store from \"./../store/index.js\";\nimport router from \"./../router.js\";\n\nexport default {\n M_SUCCESS: 1 << 0, //Enable success messages\n M_FAIL: 1 << 2, //Enable fail messages\n\n /* *\n * ServerAPI makes a request to the database and on success calls a given callback.\n *\n * method : A string expected, the string has to be one of the following post, put, get, delete\n * api : Is basically the api call to the server minus the url host information. SHOULD BEGIN WITH /\n * onSuccessCallback : Callbacks have to be in the form callback(data) where data corresponds to the data we recieved from the database.\n * onFailCallback : call when something fails\n * postData : post data.\n * flags : Tells us which messages we should handle. If you only want success messages printed M_SUCCESS for fails only M_FAIL\n * for both M_SUCCESS|M_FAIL\n * customSuccessMessage: if its empty ServerApi(..) will use the success message recieved from the server as the params used in the success popup\n * else, it will use this message passed as the successpopup 200 and 201 will be considered as suceess\n * customErrorMessage : same as onHTTPSuccess but for errors.\n * 400(bad-request),401(unauthorized),404,409(conflict), 500(internal),\n * AND >500 will all be considered as serverside errors and will promt a hard js alart\n *\n * beforeAfterCallback : a function that will be called before execution of the axios call\n * the function will be called once again on success or fail.\n * usefull if you are trying to toggle a flag of some sort before and after calling :D\n * progressBarObj\n *\n * of course this wrapper wont satisfy everything, for very specialised snowflake situations you could use an ajax lib directly, but it is NOT ADVISED!\n * its better to create a new function to handle the special case.\n *\n * to make copy pasting easy :D\n *\n {\n method :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n api :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n onSuccessCallback :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n onFailCallback :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n postData :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n flags :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n customSuccessMessage:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n customErrorMessage :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n beforeAfterCallback :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,\n }\n *\n *\n *\n * */\n ServerAPI({\n method,\n api,\n onSuccessCallback,\n onFailCallback,\n postData,\n flags,\n customSuccessMessage,\n customErrorMessage,\n beforeAfterCallback,\n progressBarObj\n }) {\n if (progressBarObj) {\n progressBarObj.set(0);\n }\n\n if (typeof beforeAfterCallback == \"function\") {\n beforeAfterCallback();\n }\n\n var that = this;\n\n axios({\n method: method,\n url: api,\n data: postData,\n withCredentials: true //indicates whether or not cross-site Access-Control requests should be made or not, should be enabled when developing\n })\n .then(function(response) {\n if (progressBarObj) {\n progressBarObj.finish();\n }\n if (typeof beforeAfterCallback == \"function\") {\n beforeAfterCallback(response.data);\n }\n that.onHTTPSuccess(response, flags, customSuccessMessage);\n return response;\n })\n .then(function(responseData) {\n if (onSuccessCallback != \"\") {\n //Sometimes we can call without callbacks\n onSuccessCallback(responseData.data);\n }\n return responseData;\n })\n .catch(function(err_response) {\n //eslint-disable-next-line\n console.log(\"M::::\", method, \"\\nAPI::\", api, \"\\nR::::\", err_response);\n if (onFailCallback && onFailCallback != \"\") {\n onFailCallback(err_response);\n }\n if (progressBarObj) {\n progressBarObj.fail();\n }\n that.onHTTPFail(err_response.response, flags, customErrorMessage);\n\n return err_response;\n })\n .then(function(response) {\n if (typeof beforeAfterCallback == \"function\") {\n beforeAfterCallback(response.response.data);\n }\n });\n\n if (progressBarObj) {\n progressBarObj.finish();\n }\n },\n\n //This function helps us deal with the custom messages and overiding them when the http request was a success\n onHTTPSuccess(serverResponse, messageFlags, msgOverride) {\n if (!(messageFlags & this.M_SUCCESS)) {\n //Dont do anything if M_SUCCESS flag is not set\n return;\n }\n\n var serverMessage = \"\";\n try {\n serverMessage = serverResponse.data.Message;\n } catch (e) {\n //do Nothing.\n }\n\n if (!msgOverride) {\n // For 200 we do not expect any messages from the server. 200 just denotes the presense of a successfull get request most times.\n switch (serverResponse.status) {\n case 200:\n msgOverride = serverMessage == \"\" ? \" Success! Everything was A-OK! \" : serverMessage;\n break;\n\n case 201:\n msgOverride = serverMessage == \"\" ? \" Success! \" : serverMessage;\n break;\n default:\n msgOverride = \"Success. No idea why. Please report this incident to the admin.\";\n }\n }\n store.commit(\"notifications/changeNotificationModalState\", {\n message: msgOverride,\n type: \"Success\"\n });\n },\n\n onHTTPFail(serverResponse, messageFlags, msgOverride) {\n if (!(messageFlags & this.M_FAIL)) {\n //this is not supposed to happen.\n //eslint-disable-next-line\n console.log(\"ERROR, but flags told me not give feedback to user\");\n return; //Dont do anything if M_FAIL flag is not set\n }\n\n var serverMessage = \"\";\n try {\n serverMessage = serverResponse.data.Message;\n } catch (e) {\n //do Nothing.\n }\n\n if (!msgOverride) {\n switch (serverResponse.status) {\n case 400: //Bad request normally this is when the user sends crap to the user. basically validation error.\n msgOverride = serverMessage == \"\" ? \"Please check the data you have entered!\" : serverMessage;\n break;\n case 401: //Unauthorised, we need to check the user\"s login status and redirect him\n msgOverride = serverMessage == \"\" ? \" Unrecognised login. Please login again. \" : serverMessage;\n router.push(\"/login/\");\n break;\n case 403: //Forbidden, says the user is logged in but he has no access to this resource\n msgOverride =\n serverMessage == \"\"\n ? \" Sorry, your account does not have the required permission to do that. \"\n : serverMessage;\n break;\n case 404: //404 not found, mostly ui dev side error. Or server changed the routes.\n msgOverride = serverMessage == \"\" ? \"Resource requested for was not found!\" : serverMessage;\n break;\n case 406: //406 not acceptable, mostly user error. The data sent to the server is basically malformed, ie SHIT :p\n msgOverride =\n serverMessage == \"\"\n ? \"The server refuses to accept the data you have just sent! Please check your data and try again.\"\n : serverMessage;\n break;\n case 409: //Conflict. When a user tries to create a resource that is unique and its already created on the server.\n msgOverride =\n serverMessage == \"\" ? \"Resource you tried to create is already on the server.\" : serverMessage;\n break;\n case 500: //internal error, server side dev error.\n msgOverride =\n serverMessage == \"\"\n ? \"Something is wrong at the server end. Please let the admin know of this error.\"\n : serverMessage;\n break;\n default:\n }\n }\n store.commit(\"notifications/changeNotificationModalState\", {\n message: msgOverride,\n type: \"Error\"\n });\n }\n};\n"],"sourceRoot":""}