\n QuBit Stamp is an electronic stamp that can be used for postal purposes, philately, document verification and the denotion of receipts and instruments.\n
\n\n QuBit Stamp is an electronic stamp that can be used for postal purposes, philately, document verification and the denotion of receipts and instruments.\n
\n\n\n
\n Take me to
\n Desktop version \n
>\",\r\n \"ordering\": false,\r\n \"destroy\": true,\r\n \"scrollCollapse\": true,\r\n \"oLanguage\": {\r\n \"sLengthMenu\": \"_MENU_ \",\r\n \"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\"\r\n },\r\n \"iDisplayLength\": pageSize || 20,\r\n \"drawCallback\": function() {\r\n $('#tableWithSearch_previous', this.api().table().container())\r\n .on('click', function() {\r\n // $this.goPrev();\r\n console.log('previous button has bee clicked')\r\n });\r\n $('#tableWithSearch_next', this.api().table().container())\r\n .on('click', function() {\r\n console.log('nexxt button has been clicked');\r\n if(options.next) {\r\n console.log('next was foound')\r\n options.next(table);\r\n }\r\n });\r\n $('.paginate_button:not(#tableWithSearch_next):not(#tableWithSearch_previous)', this.api().table().container())\r\n .on('click', function(e) {\r\n let incrememt = $(e.target).attr('data-dt-idx');\r\n // $this.updateCounters(parseInt(incrememt));\r\n });\r\n }\r\n };\r\n\r\n table.dataTable(settings);\r\n // search box for table\r\n $(\"#search-table\").keyup(function() {\r\n table.fnFilter($(this).val());\r\n });\r\n}\r\n\r\nexport default applyTable;\r\n","export const paginateTable = ({selector, dataSource, totalNumber, pageNumber, callMeBack}) => {\n var hasPaginationInitialized = false;\n $('#' + (selector || 'qubit-pagination-container')).pagination({\n dataSource,\n totalNumber,\n pageNumber,\n pageSize: 20,\n showGoInput: true,\n showGoButton: true,\n className: 'paginationjs-theme-grey paginationjs-small',\n afterInit: () => {\n hasPaginationInitialized = true;\n },\n callback: (data, pagination) => {\n if(hasPaginationInitialized === true) {\n hasPaginationInitialized = false;\n callMeBack(pagination.pageNumber);\n }\n }\n });\n}","// The Vue build version to load with the `import` command;\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport jquery from 'jquery';\nimport 'babel-polyfill';\nimport Vue from \"vue\";\nimport \"print-js\";\nimport App from \"./App\";\nimport router from \"./router\";\nimport $download from \"./$download\";\n\nimport Loading from \"vue-loading-overlay\";\nimport Notifications from \"vue-notification\";\n\n// clipboard\nimport VueClipboard from 'vue-clipboard2';\n\n// tooltip\nimport VTooltip from \"v-tooltip\";\n\n// select\nimport Select2 from \"v-select2-component\";\n\nimport \"vue-loading-overlay/dist/vue-loading.css\";\n\nimport VueAxios from \"vue-axios\";\nimport axiosInstance from \"./$axios\";\n\nimport NProgress from 'nprogress';\nimport '../node_modules/nprogress/nprogress.css';\n\n// script to encrypt tokens\nimport {encrypt, decrypt} from './encrypt';\nimport {ClientTable, Event} from 'vue-tables-2';\n\n// import VueProgressBar from 'vue-progressbar';\n\n// Custom made functions\nimport {\n loader\n} from \"./loader\";\nimport store from \"./store\";\nimport {\n number\n} from \"./number\";\nimport {\n currency\n} from \"./currency\";\nimport {\n copyClip\n} from \"./modal-copy\";\nimport applyTable from \"./applyTable\";\nimport {paginateTable} from \"./paginator\";\nimport API from \"./Api\";\nimport IdleVue from \"idle-vue\";\n\nwindow.eventBus = new Vue();\nconst eventsHub = new Vue();\n\nVue.use(IdleVue, {\n eventEmitter: eventsHub,\n idleTime: 300000 // 5 Minutes\n});\n\nVue.use(VueAxios, axiosInstance);\nVue.use(Notifications);\nVue.use(Loading);\nVue.use(VTooltip);\nVue.use(VueClipboard);\nVue.component(\"vue-select\", Select2);\nVue.use(ClientTable, {}, false, 'bootstrap3', 'default');\n\nvar consoleHolder = console;\nfunction debug(bool){\n if(!bool) {\n for (var key in console) {\n if (Object.prototype.hasOwnProperty.call(console, key)) {\n console[key] = function () {};\n }\n }\n }\n}\ndebug(true);\n\nVue.filter('toDecimal', (value) => {\n let str = value.toString()\n return `${str.slice(0, -2)}.${str.slice(-2)}`\n})\n\nVue.prototype.$loader = loader;\nVue.prototype.$api = API;\nVue.prototype.$numeral = number;\nVue.prototype.$currency = currency;\nVue.prototype.$download = $download;\n// Vue.prototype.$copy = copy;\nVue.prototype.$copyClip = copyClip;\nVue.prototype.$applyTable = applyTable;\nVue.prototype.$ = jquery;\nVue.prototype.$encrypt = encrypt;\nVue.prototype.$decrypt = decrypt;\nVue.prototype.$paginateTable = paginateTable;\n\nVue.config.productionTip = false;\n\nrouter.beforeResolve((to, from, next) => {\n if (to.name) {\n NProgress.start();\n }\n next();\n});\n\nrouter.afterEach(() => {\n NProgress.done();\n})\n\n/* eslint-disable no-new */\nnew Vue({\n el: \"#app\",\n data() {\n return {\n active: 1\n };\n },\n onIdle() {\n if (localStorage.idle !== false) {\n this.active = 0;\n }\n },\n onActive() {\n this.active = 1;\n },\n router,\n store,\n render(createElement) {\n return createElement(App, {\n props: {\n active: this.active\n }\n })\n }\n});\n","var SI_SYMBOL = [\"\", \"K\", \"M\", \"B\", \"T\", \"Q\", \"QU\"];\r\n\r\nfunction convertValue(val) {\r\n val = val.toString();\r\n return val.split('.')[0] + (val.split('.').length > 1 ? '.' + val.split('.')[1].substring(0,1) : '');\r\n}\r\n\r\nfunction abbreviateNumber(number){\r\n if(typeof number === 'number') {\r\n let thou = Math.pow(10, 3);\r\n let mil = Math.pow(10, 6);\r\n let bil = Math.pow(10, 9);\r\n let tril = Math.pow(10, 12);\r\n let quad = Math.pow(10, 15);\r\n let quat = Math.pow(10, 18);\r\n\r\n if (number >= quat) return convertValue(number / quat) + ' Qt';\r\n else if (number >= quad) return convertValue(number / quad) + ' Q';\r\n else if (number >= tril) return convertValue(number / tril) + 'T';\r\n else if (number >= bil) return convertValue(number / bil) + 'B';\r\n else if (number >= mil) return convertValue(number / mil) + 'M';\r\n else if (number >= thou) return convertValue(number / thou) + 'k';\r\n // else if (number >= thou) return Math.round((number / thou) * 100) / 100 + 'k';\r\n else return number;\r\n }\r\n\r\n // // what tier? (determines SI symbol)\r\n // var tier = Math.log10(number) / 3 | 0;\r\n\r\n // // if zero, we don't need a suffix\r\n // if(tier == 0) return number;\r\n\r\n // // get suffix and determine scale\r\n // var suffix = SI_SYMBOL[tier];\r\n // var scale = Math.pow(10, tier * 3);\r\n\r\n // // scale the number\r\n // var scaled = number / scale;\r\n\r\n // // format number and add suffix\r\n // console.log(\"scaled\", scaled);\r\n // console.log(\"number\", number);\r\n // return scaled.toFixed().split(\".0\")[0] + suffix;\r\n}\r\n\r\nexports.number = abbreviateNumber;\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./light.css?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!./light.css?vue&type=style&index=0&lang=css&\"","let validate = (type, value) => {\r\n var fullnameRegex = /^([A-z]+) ([A-z]+)$/;\r\n var firstnameRegex = /^([A-z]+){2,}$/;\r\n var lastnameRegex = /^([A-z]+)$/;\r\n var emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n var phoneRegex = /^([0-9]{9,16})$/;\r\n var passwordRegex = /^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})/;\r\n var otpRegex = /(\\S{5,7})/;\r\n var serialNumberRegex = /\\d{6}-\\d{4}-\\d{12}-\\d{1}-\\d{6}/;\r\n var linkRegex = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/i;\r\n var generalRegex = /(\\S+)/;\r\n var numberRegex = /(\\d+)/;\r\n var businessRegex = /^(?!\\s)(?!.*\\s$)(?=.*[a-zA-Z0-9])[a-zA-Z0-9 '~?!]{2,}$/;\r\n var usernameRegex = /^(?!\\s)(?!.*\\s$)(?=.*[a-zA-Z0-9])[a-zA-Z0-9 '~?!]{2,}$/;\r\n var priceRegex = /^[1-9]\\d{0,7}(?:\\.\\d{1,4})?$/;\r\n var accountNumberRegex = /^(\\d){8,11}$/;\r\n var bvnRegex = /^(\\d){10,11}$/;\r\n\r\n\r\n\r\n\r\n if (type === \"firstname\") {\r\n\r\n if (firstnameRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"username\") {\r\n\r\n if (usernameRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"password checker\") {\r\n var lowerCaseRegex = /(?=.*[a-z])/;\r\n var upperCaseRegex = /(?=.*[A-Z])/;\r\n var numberRegex = /(?=.*[0-9])/;\r\n var symbolRegex = /(?=.*[!@#$%&\\*])/;\r\n\r\n if (!lowerCaseRegex.test(value)) {\r\n return \"Password must contain lower case\";\r\n }\r\n // else if (!upperCaseRegex.test(value)) {\r\n // return \"Password must contain upper case\"\r\n // }\r\n else if (!numberRegex.test(value)) {\r\n return \"Password must contain atleast one number\";\r\n }\r\n else if (!symbolRegex.test(value)) {\r\n return \"Password must contain atleast one symbol\";\r\n }\r\n else if (value.length < 8) {\r\n return \"Password must be 8 characters long\";\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n else if (type === \"fullname\") {\r\n\r\n if (fullnameRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"lastname\") {\r\n\r\n if (lastnameRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"serial\") {\r\n\r\n if (serialNumberRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"number\") {\r\n\r\n if (numberRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"email\") {\r\n\r\n if (emailRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"phone\") {\r\n\r\n let n = value.startsWith(\"+234\")\r\n\r\n if(n === true) {\r\n phoneRegex = /[+^]([0-9]{9,16})$/;\r\n }\r\n\r\n if (phoneRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"price\") {\r\n\r\n if (priceRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"password\") {\r\n\r\n if (passwordRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"otp\") {\r\n\r\n if (otpRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"link\") {\r\n\r\n if (linkRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"general\") {\r\n\r\n if (generalRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"business\") {\r\n\r\n if (businessRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"account_number\") {\r\n\r\n if (accountNumberRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n else if (type === \"bvn\") {\r\n\r\n if (bvnRegex.test(value)) return true;\r\n return false;\r\n\r\n }\r\n\r\n};\r\n\r\nexport default validate;\r\n","export default {\n methods: {\n triggerFocus(idName) {\n $(`#${idName}`).focus()\n }\n }\n}","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.data.isError === true)?_c('div',{staticClass:\"alert alert-danger \",attrs:{\"role\":\"alert\"}},[_c('button',{staticClass:\"close non-modal-close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.data.isError = false}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Close\")])]),_vm._v(\"\\n \"+_vm._s(_vm.data.message)+\"\\n \")]):_vm._e(),(_vm.data.isError === \"success\")?_c('div',{staticClass:\"alert alert-success\",attrs:{\"role\":\"alert\"}},[_c('button',{staticClass:\"close non-modal-close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.data.isError = false}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Close\")])]),_vm._v(\"\\n \"+_vm._s(_vm.data.message)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n