{"version":3,"sources":["webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/randomstring/lib/randomstring.js","webpack:///./node_modules/randomstring/lib/charset.js","webpack:///./@core/model/common/RequiredHours.ts","webpack:///./node_modules/randomstring/index.js","webpack:///./@core/assets/myinfo-icon.svg","webpack:///./node_modules/randomstring/node_modules/randombytes/browser.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./@core/pages/cpd/summary/CpdSummary.vue?644e","webpack:///./@core/components/AppForm.vue?baa9","webpack:///./@core/components/AppDatatable.vue?fa4e","webpack:///./@core/components/AppDatatable.vue","webpack:///./@core/components/AppDatatable.vue?a0c0","webpack:///./@core/components/AppDatatable.vue?89f0","webpack:///./@core/components/AppCurrencyNA.vue?af5e","webpack:///./@core/services/CSVService.ts","webpack:///./@core/model/common/UserCPDMeta.ts","webpack:///./node_modules/randomstring/node_modules/array-uniq/index.js","webpack:///./@core/components/AppDatatable.vue?8f2d","webpack:///./@core/pages/cpd/summary/CpdSummary.vue?46ab","webpack:///./@core/pages/cpd/summary/model/CpdGlobals.ts","webpack:///./@core/pages/cpd/summary/CpdSummaryMixin.ts","webpack:///./@core/pages/cpd/summary/CpdSummary.vue","webpack:///./@core/pages/cpd/summary/CpdSummary.vue?c845","webpack:///./@core/pages/cpd/summary/CpdSummary.vue?fd6d","webpack:///./@core/components/AppForm.vue?4190","webpack:///./@core/components/AppCurrencyNA.vue?2c19","webpack:///./@core/components/AppCurrencyNA.vue","webpack:///./@core/components/AppCurrencyNA.vue?4219","webpack:///./@core/components/AppCurrencyNA.vue?6502","webpack:///./@core/components/AppForm.vue","webpack:///./@core/components/AppForm.vue?cec5","webpack:///./@core/components/AppForm.vue?3db6","webpack:///./@core/model/common/UserCPDMetaList.ts"],"names":["module","exports","Object","is","x","y","randomBytes","Charset","unsafeRandomBytes","length","stack","i","push","Math","floor","random","readUInt8","index","safeRandomBytes","e","processString","buf","initialString","chars","reqLen","maxByte","string","randomByte","charAt","getAsyncString","cb","err","generatedString","generate","options","charset","setType","capitalization","setcapitalization","readable","removeUnreadable","removeDuplicates","charsLen","ceil","arrayUniq","this","prototype","type","numbers","charsLower","charsUpper","toUpperCase","hexChars","binaryChars","octalChars","unreadableChars","replace","toLowerCase","charMap","split","join","RequiredHours","year","undefined","ethics","reg","suppMs","suppOthers","gi","keyToConvert","filter","key","reduce","result","snakeCaseKey","value","JSON","stringify","keys","every","oldBrowser","Error","crypto","global","msCrypto","size","rawBytes","Uint8Array","getRandomValues","bytes","Buffer","buffer","process","nextTick","call","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","toString","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","RegExp","rx","S","res","done","previousLastIndex","lastIndex","render","_vm","_h","$createElement","_c","_self","staticClass","class","show","directives","name","rawName","expression","ref","attrs","currentPageData","hasNoError","selectionKey","tableRowClassName","on","sortChange","rowClick","handleSelection","_e","_l","column","field","label","sortable","scopedSlots","_u","fn","scope","row","modifiers","$event","$$selectedVal","Array","target","o","selected","map","val","_value","$set","multiple","handleCustomEvent","option","domProps","_v","_s","_n","$forceUpdate","decimal","disabled","convertToCurrency","_t","button","$emit","shouldDisabled","stopPropagation","infoFrom","infoTo","total","currentPage","pageSizesDisplay","pageSize","pageChange","handleSizeChange","staticRenderFns","pageSizes","sortBy","prop","data","order","sizes","lastSize","round","search","searchKeyword","trim","filters","includes","filteredData","sort","a","b","sortedData","slice","error","emit","redirect","window","location","href","rows","appdatatable","$refs","clearSelection","currencySymbol","Number","toLocaleString","minimumFractionDigits","maximumFractionDigits","clearCheckboxOnHeader","default","components","AppDecimalNumber","component","downloadCSVFile","fileName","csvData","fields","quotes","blob","Blob","filename","parseCsvFile","file","callBack","header","complete","sharedVariable","get","SharedVariable","uiService","errors","stringerror","forEach","message","alert","resArray","rowData","parseObj","skipEmptyLines","transform","delimitersToGuess","UserCPDMeta","oid","userOid","username","userFullname","courseTitle","courseProvider","courseVenue","courseDescription","duration","startDateMillis","endDateMillis","faCoreEthicsHours","faCoreRegHours","faSuppMsHours","faSuppOthersHours","giOthers","assignedTo","present","courseId","uniqNoSet","arr","ret","indexOf","uniqSet","seen","Set","el","has","add","uniqSetWithForEach","doesForEachActuallyWork","active","activeTab","addNewCpd","exportCSV","showPopulateDefaultHoursModal","composing","txtSearch","byCourseColumns","byCourselist","clickCourse","byEntryColumns","byEntrylist","clickCourseEntry","requireHoursColumns","assign","globals","showRequiredHoursDialog","showModal","slot","newCpdStructure","newCpd","txtSearchUser","userListColumns","userList","handleAttendeesSelection","errorMessage","toggleAttendeesMode","selectAttendeesMode","saveNewCpd","requiredHoursStructure","setGlobalValues","showUsersListModal","populateDefaultHours","globalCpdReqEthics","globalCpdReqGi","globalCpdReqReg","globalCpdReqSuppMs","globalCpdReqSuppOthers","globalCpdReqYear","config","rawKey","raw","String","Default","RawKey","cpdMetaList","newCpdAttendees","userMetaList","userMetaHeader","unixTime","dateService","format","courses","course","participants","list","cpd","startDateMillisDisplay","endDateMillisDisplay","getPresentDisplayString","onChange","oldVal","newVal","Date","getFullYear","ex","console","classes","getFullList","attd","user_oid","user_fullname","fullname","names","showAttendeesList","fetchUsers","$router","params","validateNewCpd","emptyCpd","hasUnsavedData","some","cpdKey","confirm","valid","selectedAttendees","$api","new","course_info","convertToRawData","attendees","fetchData","headers","UserCPDMetaList","account","groupStatus","query","queryArgs","resUser","UserMetaList","assumptions","getAllRawKeys","response","extractData","values","update","keyValues","colsConfig","dataList","labels","col","entries","formatted","cols","getCurrentColsAndList","log","allIsFilled","adviser_oid_list","convertToCustomRawData","saveMany","fetchGlobalValues","AppDatatable","AppForm","AppDialog","style","structure","shouldShow","getCustomClass","hasErrors","focusId","getId","focusInner","getTestId","labelModelValue","labelModel","set","model","labelKey","tooltip","eidx","msg","full","fullErr","optionCols","multiLimit","buttonName","cycleMode","displayDirection","setValue","blurHandler","getValue","checkboxColumnNo","compact","isMyInfo","getLabelId","setSelectValue","maxChar","currencyFormat","precision","futureDate","disabledFutureDate","isVertical","maxSize","columns","getValueForTable","remove","maxLength","counterMsg","isModernTheme","maxlength","numberAndNAOnly","onBlur","onFocus","onSelect","inputModal","textIsSelected","number","convertCurrencyToNumber","remainingChar","evt","event","charCode","which","keyCode","currentValue","isAlphabetN","isNonNumber","preventDefault","charCodeAt","isAlphabetA","formatValue","isNaN","source","useCurrency","currencyPrefix","currency","replaceAll","projectInfo","inputValue","minimal","structures","charLeft","getCharLeft","getCounterMsg","gridTemplateColumns","projectSettings","theme","condition","readOnly","Function","input","oriValue","labelValue","selectedOption","selectedIndex","uniqueID","curAppForm","$el","hasOverflow","scrollWidth","clientWidth","eleId","ele","document","getElementById","focus","mc","swe","first","find","s","scrollIntoView","behavior","block","arrangeCols","addEventListener","now","deep","AppSmartSelect","AppCheckboxGroup","AppRadioSelection","AppDateInput","AppFormTable","AppCurrencyNA","AppTooltip"],"mappings":"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","file":"js/chunk-213cfb3d.845794f0.js","sourcesContent":["// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","\"use strict\";\n\nvar randomBytes = require('randombytes');\nvar Charset = require('./charset.js');\n\n\nfunction unsafeRandomBytes(length) {\n var stack = [];\n for (var i = 0; i < length; i++) {\n stack.push(Math.floor(Math.random() * 255));\n }\n\n return {\n length,\n readUInt8: function (index) {\n return stack[index];\n }\n };\n}\n\nfunction safeRandomBytes(length) {\n try {\n return randomBytes(length);\n } catch (e) {\n /* React/React Native Fix + Eternal loop removed */\n return unsafeRandomBytes(length);\n }\n}\n\nfunction processString(buf, initialString, chars, reqLen, maxByte) {\n var string = initialString;\n for (var i = 0; i < buf.length && string.length < reqLen; i++) {\n var randomByte = buf.readUInt8(i);\n if (randomByte < maxByte) {\n string += chars.charAt(randomByte % chars.length);\n }\n }\n return string;\n}\n\nfunction getAsyncString(string, chars, length, maxByte, cb) {\n randomBytes(length, function(err, buf) {\n if (err) {\n // Since it is waiting for entropy, errors are legit and we shouldn't just keep retrying\n cb(err);\n }\n var generatedString = processString(buf, string, chars, length, maxByte);\n if (generatedString.length < length) {\n getAsyncString(generatedString, chars, length, maxByte, cb);\n } else {\n cb(null, generatedString);\n }\n })\n}\n\nexports.generate = function(options, cb) {\n var charset = new Charset();\n\n var length, chars, capitalization, string = '';\n\n // Handle options\n if (typeof options === 'object') {\n length = typeof options.length === 'number' ? options.length : 32;\n\n if (options.charset) {\n charset.setType(options.charset);\n }\n else {\n charset.setType('alphanumeric');\n }\n\n if (options.capitalization) {\n charset.setcapitalization(options.capitalization);\n }\n\n if (options.readable) {\n charset.removeUnreadable();\n }\n\n charset.removeDuplicates();\n }\n else if (typeof options === 'number') {\n length = options;\n charset.setType('alphanumeric');\n }\n else {\n length = 32;\n charset.setType('alphanumeric');\n }\n\n // Generate the string\n var charsLen = charset.chars.length;\n var maxByte = 256 - (256 % charsLen);\n\n if (!cb) {\n while (string.length < length) {\n var buf = safeRandomBytes(Math.ceil(length * 256 / maxByte));\n string = processString(buf, string, charset.chars, length, maxByte);\n }\n\n return string;\n }\n\n getAsyncString(string, charset.chars, length, maxByte, cb);\n\n};\n","var arrayUniq = require('array-uniq');\n\nfunction Charset() {\n this.chars = '';\n}\n\nCharset.prototype.setType = function(type) {\n var chars;\n\n var numbers = '0123456789';\n var charsLower = 'abcdefghijklmnopqrstuvwxyz';\n var charsUpper = charsLower.toUpperCase();\n var hexChars = 'abcdef';\n var binaryChars = '01';\n var octalChars = '01234567';\n\n if (type === 'alphanumeric') {\n chars = numbers + charsLower + charsUpper;\n }\n else if (type === 'numeric') {\n chars = numbers;\n }\n else if (type === 'alphabetic') {\n chars = charsLower + charsUpper;\n }\n else if (type === 'hex') {\n chars = numbers + hexChars;\n }\n else if (type === 'binary') {\n chars = binaryChars;\n }\n else if (type === 'octal') {\n chars = octalChars;\n }\n else {\n chars = type;\n }\n\n this.chars = chars;\n}\n\nCharset.prototype.removeUnreadable = function() {\n var unreadableChars = /[0OIl]/g;\n this.chars = this.chars.replace(unreadableChars, '');\n}\n\nCharset.prototype.setcapitalization = function(capitalization) {\n if (capitalization === 'uppercase') {\n this.chars = this.chars.toUpperCase();\n }\n else if (capitalization === 'lowercase') {\n this.chars = this.chars.toLowerCase();\n }\n}\n\nCharset.prototype.removeDuplicates = function() {\n var charMap = this.chars.split('');\n charMap = arrayUniq(charMap);\n this.chars = charMap.join('');\n}\n\nmodule.exports = exports = Charset;\n","import { TypeBase } from '@master/model/TypeBase'\nimport { getRawKey } from '@master/annotation/RawKey'\nimport { isIgnore } from '@master/annotation/Ignore'\nimport { needToConvertJson } from '@master/annotation/Json'\nimport { get } from 'lodash/fp'\n\nexport class RequiredHours extends TypeBase {\n year: number = undefined\n ethics: number = undefined\n reg: number = undefined\n suppMs: number = undefined\n suppOthers: number = undefined\n gi: number = undefined\n\n constructor (type: 'req' | 'global_cpd_req' = 'req') {\n super(type)\n }\n\n convertToCustomRawData (keyToConvert: string[]) {\n return keyToConvert\n .filter(key => !isIgnore(this, key))\n .reduce((result, key) => {\n const snakeCaseKey = getRawKey(keyToConvert, key) || this.snakeCaseKey(key)\n let value = get(key, this)\n // convert back to stringify json\n if (needToConvertJson(this, key)) {\n value = JSON.stringify(value)\n }\n result = { ...result, [snakeCaseKey]: value }\n return result\n }, {})\n }\n\n allIsFilled () {\n return Object.keys(this).every(key => (typeof this[key] === 'number') || (this[key]))\n }\n}\n","module.exports = require(\"./lib/randomstring\");","module.exports = __webpack_public_path__ + \"img/myinfo-icon.28e75045.svg\";","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\n\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n // phantomjs doesn't like a buffer being passed here\n var bytes = new Buffer(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CpdSummary.vue?vue&type=style&index=0&id=78e2e061&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"datatable\",class:{'active': _vm.show, 'inactive': !_vm.show}},[_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"appdatatable\",attrs:{\"data\":_vm.currentPageData,\"stripe\":_vm.hasNoError,\"size\":\"mini\",\"row-key\":_vm.selectionKey,\"row-class-name\":_vm.tableRowClassName,\"header-cell-class-name\":'cell-header'},on:{\"sort-change\":_vm.sortChange,\"row-click\":_vm.rowClick,\"selection-change\":_vm.handleSelection}},[(_vm.selectionKey)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":true}}):_vm._e(),_vm._l((_vm.columns),function(column){return [(column.options)?_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('select',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"lazy\":true}}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(scope.row, column.field, $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.handleCustomEvent(scope.row)}]}},_vm._l((column.options),function(option,index){return _c('option',{key:index,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)]}}],null,true)}):(column.type)?_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(column.type==='number')?[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"number\":true,\"lazy\":true}}],attrs:{\"type\":column.type},domProps:{\"value\":(scope.row[column.field])},on:{\"change\":[function($event){_vm.$set(scope.row, column.field, _vm._n($event.target.value))},function($event){return _vm.handleCustomEvent(scope.row)}],\"blur\":function($event){return _vm.$forceUpdate()}}})]:(column.type === 'decimal-number')?[_c('AppDecimalNumber',{attrs:{\"decimal\":column.decimal,\"inputValue\":scope.row[column.field],\"disabled\":column.disabled}})]:(column.type === 'currency')?[_c('label',[_vm._v(_vm._s(_vm.convertToCurrency(scope.row[column.field])))])]:(column.type === 'action')?_vm._t(\"action\",function(){return _vm._l((column.buttons),function(button,index){return _c('button',{key:index,on:{\"click\":function($event){return _vm.$emit(button, scope.row)}}},[_vm._v(_vm._s(button))])})}):(column.type === 'actionWithFeatures')?_vm._t(\"action\",function(){return _vm._l((column.buttons),function(button,index){return _c('button',{key:index,attrs:{\"disabled\":button.shouldDisabled},on:{\"click\":function($event){return _vm.$emit(button.label, scope.row)}}},[_vm._v(_vm._s(button.label))])})}):_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy\",value:(scope.row[column.field]),expression:\"scope.row[column.field]\",modifiers:{\"lazy\":true}}],attrs:{\"type\":column.type},domProps:{\"value\":(scope.row[column.field])},on:{\"change\":[function($event){return _vm.$set(scope.row, column.field, $event.target.value)},function($event){return _vm.handleCustomEvent(scope.row)}]}})]}}],null,true)}):_c('el-table-column',{key:column.field,attrs:{\"prop\":column.field,\"label\":column.label,\"align\":\"center\",\"sortable\":column.sortable === undefined ? true : column.sortable,\"show-overflow-tooltip\":true},scopedSlots:_vm._u([{key:\"content\",fn:function(scope){return [_c('div',[_vm._v(_vm._s(scope.row[column.field]))])]}}],null,true)})]}),(_vm.redirect)?_c('el-table-column',{key:'redirect',attrs:{\"prop\":'redirect',\"align\":\"center\",\"sortable\":false},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('div',{on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('redirect', scope.row)}}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})])]}}],null,false,2100746354)}):_vm._e()],2),_c('div',{staticClass:\"table-footer\"},[_c('div',{staticClass:\"table-info\"},[_vm._v(\"Show \"+_vm._s(_vm.infoFrom)+\" to \"+_vm._s(_vm.infoTo)+\" of \"+_vm._s(_vm.total)+\" entries\")]),_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"total\":_vm.total,\"hide-on-single-page\":false,\"page-sizes\":_vm.pageSizesDisplay,\"page-size\":_vm.pageSize,\"layout\":\"sizes, prev, pager, next, jumper\",\"background\":\"\"},on:{\"current-change\":_vm.pageChange,\"size-change\":_vm.handleSizeChange}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { isUndefined } from 'lodash/fp'\nimport AppDecimalNumber from './AppDecimalNumber.vue'\n\nexport interface Column {\n label: string;\n field: string;\n sortable?: boolean;\n options: { label: string; value: string }[];\n}\n\ninterface Sort {\n prop: string;\n order: 'ascending' | 'decending';\n}\n\n@Component({\n components: {\n AppDecimalNumber\n }\n})\nexport default class TheDatatable extends Vue {\n @Prop() readonly loading!: boolean\n @Prop() readonly columns!: Array\n @Prop() readonly data!: Array\n @Prop() readonly filters: Array\n @Prop() readonly sort!: Sort\n @Prop() readonly search!: string\n @Prop({ default: true }) readonly show!: boolean\n @Prop({ default: false }) readonly redirect!: boolean\n @Prop() readonly selectionKey: string\n private pageSizes = [10, 50, 100, 500, 1000]\n private pageSize = 10\n private currentPage = 1\n private sortBy: Sort = {\n prop: this.data[0],\n order: 'ascending'\n }\n\n @Prop() clearSelection: boolean\n\n get pageSizesDisplay () {\n // return first size(10), if data total less than 10\n if (this.total < this.pageSizes[0]) return [this.pageSizes[0]]\n\n // get all the size that less than total\n const sizes = this.pageSizes.filter(size => size < this.total)\n\n // push last size\n const lastSize = (Math.round(this.total / 10) + 1) * 10\n sizes.push(lastSize)\n\n return sizes\n }\n\n get filteredData () {\n if (isUndefined(this.search)) return this.data\n\n const searchKeyword = this.search.trim().toLowerCase()\n const data = (this.filters && this.filters.length) ? this.filters : this.data\n return data.filter(value => {\n const result = JSON.stringify(value).toLowerCase().includes(searchKeyword)\n return result\n })\n }\n\n get sortedData () {\n const data = this.filteredData.sort((a, b) => {\n if (this.sortBy.order === 'ascending') {\n if (a[this.sortBy.prop] > b[this.sortBy.prop]) { return 1 }\n if (a[this.sortBy.prop] < b[this.sortBy.prop]) { return -1 }\n } else {\n if (a[this.sortBy.prop] > b[this.sortBy.prop]) { return -1 }\n if (a[this.sortBy.prop] < b[this.sortBy.prop]) { return 1 }\n }\n return 0\n })\n return data\n }\n\n get currentPageData () {\n return this.sortedData.slice((this.currentPage - 1) * this.pageSize, this.pageSize * this.currentPage)\n }\n\n get total () {\n return this.filteredData.length\n }\n\n get infoFrom () {\n if (this.currentPage !== 1) {\n return (this.currentPage - 1) * this.pageSize + 1\n } else {\n return this.filteredData.length ? 1 : 0\n }\n }\n\n get infoTo () {\n return this.currentPageData.length < this.pageSize\n ? this.pageSize * (this.currentPage - 1) + this.currentPageData.length\n : this.pageSize * this.currentPage\n }\n\n get hasNoError () {\n return this.data.every(e => e.error === undefined)\n }\n\n pageChange (currentPage: number): void {\n this.currentPage = currentPage\n this.$emit('pageChangeCustom', this.currentPage)\n }\n\n sortChange (sort: Sort): void {\n this.sortBy.prop = sort.prop\n this.sortBy.order = sort.order || 'ascending'\n }\n\n rowClick (row: any): void {\n if (row.emit) this.$emit('rowClickCustom', row)\n if (!row.redirect) return\n window.location.href = row.redirect\n }\n\n handleSelection (rows: any[]) {\n this.$emit('selectionChange', rows)\n }\n\n handleCustomEvent (row) {\n this.$emit('customEventSelect', row)\n }\n\n tableRowClassName ({ row }) {\n if (row.error) {\n return 'warning-row'\n } else {\n return ''\n }\n }\n\n clearCheckboxOnHeader () {\n const appdatatable = this.$refs.appdatatable as any\n if (this.selectionKey && appdatatable) {\n appdatatable.clearSelection()\n }\n }\n\n handleSizeChange (val) {\n this.pageSize = val\n }\n\n convertToCurrency (value, currencySymbol = '') {\n if (!value && value !== 0) return ''\n return currencySymbol + Number(value).toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n })\n }\n\n mounted () {\n this.sortBy = this.sort\n this.clearCheckboxOnHeader()\n }\n\n @Watch('clearSelection')\n clearSelectionCheckbox () {\n if (this.clearSelection) {\n this.clearCheckboxOnHeader()\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppDatatable.vue?vue&type=template&id=4b557606&scoped=true&\"\nimport script from \"./AppDatatable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppDatatable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppDatatable.vue?vue&type=style&index=0&id=4b557606&lang=scss&scoped=true&\"\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 \"4b557606\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"","import { parse, unparse, download, RECORD_SEP, UNIT_SEP } from 'papaparse'\nimport { SharedVariable } from './../model/SharedVariable'\nimport { cid, container } from 'inversify-props'\n\nexport function downloadCSVFile (column: string[], data: Array, fileName: string) {\n const csvData = unparse({\n fields: column, // column names\n data: data\n }, {\n quotes: false\n })\n\n const blob = new Blob([csvData], { type: 'text/csv' })\n const filename = fileName\n download(blob, filename)\n}\n\nexport function parseCsvFile (file, callBack) {\n parse(file, {\n header: true,\n complete: function (res) {\n const sharedVariable = container.get(cid.SharedVariable)\n const { uiService } = sharedVariable\n\n if (res.errors.length > 0) {\n let stringerror = 'The following errors were encountered.\\n\\n'\n res.errors.forEach((error, index) => {\n stringerror += 'Row ' + (index) + ': ' + error.message + '.\\n'\n })\n uiService.alert.show({\n type: 'error',\n message: stringerror\n })\n return\n }\n const resArray = []\n // if no error\n res.data.forEach(rowData => {\n const parseObj = []\n Object.keys(rowData).forEach(key => {\n parseObj.push(rowData[key])\n })\n resArray.push(parseObj)\n })\n callBack(resArray)\n },\n error: undefined,\n skipEmptyLines: 'greedy',\n transform: undefined,\n delimitersToGuess: [',', 't', '|', ';', RECORD_SEP, UNIT_SEP]\n })\n}\n","import { RawKey } from '@master/annotation/RawKey'\nimport { Meta } from '@master/model/common/Meta'\n\nexport const header = [\n '_oid',\n 'user_oid',\n 'username',\n 'user_fullname',\n 'course_title',\n 'course_provider',\n 'course_venue',\n 'course_description',\n 'duration',\n 'start_date_millis',\n 'end_date_millis',\n 'fa_core_ethics_hours',\n 'fa_core_reg_hours',\n 'fa_supp_ms_hours',\n 'fa_supp_others_hours',\n 'gi_others',\n 'assigned_to',\n 'present',\n 'course_id'\n]\n\nexport class UserCPDMeta extends Meta {\n @RawKey('_oid')\n oid = ''\n\n userOid = ''\n username = ''\n userFullname = ''\n courseTitle = ''\n courseProvider = ''\n courseVenue = ''\n courseDescription = ''\n duration = ''\n startDateMillis: number = undefined\n endDateMillis: number = undefined\n faCoreEthicsHours = 0\n faCoreRegHours = 0\n faSuppMsHours = 0\n faSuppOthersHours = 0\n giOthers = 0\n assignedTo: number = undefined\n present: number = undefined\n courseId = ''\n\n cloneFrom (data: UserCPDMeta) {\n Object.keys(this).forEach((key) => {\n this[key] = data[key]\n })\n }\n}\n","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDatatable.vue?vue&type=style&index=0&id=4b557606&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"page\"},[_c('div',{staticClass:\"tab-top\"},[_c('div',{staticClass:\"tab-header\"},[_c('div',{staticClass:\"tab-links tab-first\",class:{ active: _vm.activeTab === 'byCourse' },on:{\"click\":function($event){_vm.activeTab='byCourse'}}},[_vm._v(\" By Course \"),_c('span',{staticClass:\"add-client\",attrs:{\"aria-label\":\"By Course\"},on:{\"click\":_vm.addNewCpd}},[_c('i',{staticClass:\"fas fa-plus\"})])]),_c('div',{staticClass:\"tab-links\",class:{ active: _vm.activeTab === 'byEntry' },on:{\"click\":function($event){_vm.activeTab='byEntry'}}},[_vm._v(\" By Entry \")]),_c('div',{staticClass:\"tab-links\",class:{ active: _vm.activeTab === 'requiredHours' },on:{\"click\":function($event){_vm.activeTab='requiredHours'}}},[_vm._v(\" Required Hours (Global) \")]),(['byCourse', 'byEntry'].includes(_vm.activeTab))?_c('button',{staticClass:\"btn-default export-csv-button\",on:{\"click\":_vm.exportCSV}},[_vm._v(\"Export as CSV\")]):_vm._e(),(['requiredHours'].includes(_vm.activeTab))?_c('button',{staticClass:\"btn-default export-csv-button\",on:{\"click\":_vm.showPopulateDefaultHoursModal}},[_vm._v(\"Populate Default Hours\")]):_vm._e(),_c('div',{staticClass:\"search-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.txtSearch),expression:\"txtSearch\",modifiers:{\"trim\":true}}],staticClass:\"txt-search\",attrs:{\"type\":\"search\",\"data-test\":\"principal-search-keyword\"},domProps:{\"value\":(_vm.txtSearch)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.txtSearch=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"tab-content\"},[_c('AppDatatable',{attrs:{\"columns\":_vm.byCourseColumns,\"data\":_vm.byCourselist,\"sort\":{prop: 'courseTitle', order: 'ascending'},\"search\":_vm.txtSearch,\"show\":_vm.activeTab === 'byCourse'},on:{\"rowClickCustom\":_vm.clickCourse}}),_c('AppDatatable',{attrs:{\"columns\":_vm.byEntryColumns,\"data\":_vm.byEntrylist,\"sort\":{prop: 'courseTitle', order: 'ascending'},\"search\":_vm.txtSearch,\"show\":_vm.activeTab === 'byEntry'},on:{\"rowClickCustom\":_vm.clickCourseEntry}}),_c('AppDatatable',{attrs:{\"columns\":_vm.requireHoursColumns,\"data\":[Object.assign({}, _vm.globals, { emit: true })],\"sort\":{prop: 'globalCpdReqYear', order: 'ascending'},\"search\":_vm.txtSearch,\"show\":_vm.activeTab === 'requiredHours'},on:{\"rowClickCustom\":function($event){_vm.showRequiredHoursDialog=true}}})],1)]),(_vm.showModal)?_c('AppDialog',{attrs:{\"hideCancel\":true,\"size\":'large'},on:{\"close\":function($event){_vm.showModal = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"Create New CPD Course\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('AppForm',{attrs:{\"structures\":_vm.newCpdStructure,\"model\":_vm.newCpd}}),_c('input',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectAttendeesMode),expression:\"selectAttendeesMode\"},{name:\"model\",rawName:\"v-model.trim\",value:(_vm.txtSearchUser),expression:\"txtSearchUser\",modifiers:{\"trim\":true}}],staticClass:\"txt-search\",attrs:{\"type\":\"search\",\"data-test\":\"user-search-keyword\"},domProps:{\"value\":(_vm.txtSearchUser)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.txtSearchUser=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),(_vm.selectAttendeesMode)?_c('AppDatatable',{staticClass:\"user-list\",attrs:{\"columns\":_vm.userListColumns,\"data\":_vm.userList,\"sort\":{prop: 'names', order: 'ascending'},\"search\":_vm.txtSearchUser,\"show\":true,\"selectionKey\":\"oid\"},on:{\"selectionChange\":_vm.handleAttendeesSelection}}):_vm._e(),(_vm.errorMessage)?_c('div',{staticClass:\"red\"},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e()],1),_c('template',{slot:\"footer\"},[(_vm.selectAttendeesMode)?_c('button',{on:{\"click\":_vm.toggleAttendeesMode}},[_vm._v(\"Back\")]):_vm._e(),(!_vm.selectAttendeesMode)?_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.toggleAttendeesMode}},[_vm._v(\"Next\")]):_vm._e(),(_vm.selectAttendeesMode)?_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.saveNewCpd}},[_vm._v(\"Create\")]):_vm._e()])],2):_vm._e(),(_vm.showRequiredHoursDialog)?_c('AppDialog',{on:{\"close\":function($event){_vm.showRequiredHoursDialog = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"Required CPD Hours (Global)\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('AppForm',{attrs:{\"structures\":_vm.requiredHoursStructure,\"model\":_vm.globals}}),(_vm.errorMessage)?_c('div',{staticClass:\"red\"},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e()],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.setGlobalValues}},[_vm._v(\"Save\")])])],2):_vm._e(),(_vm.showUsersListModal)?_c('AppDialog',{on:{\"close\":function($event){_vm.showUsersListModal = false}}},[_c('template',{slot:\"header\"},[_vm._v(\"Populate Default CPD Hours\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('div',{staticClass:\"search-user\"},[_c('p',[_vm._v(\"Please select users to populate default CPD hours:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.txtSearchUser),expression:\"txtSearchUser\",modifiers:{\"trim\":true}}],staticClass:\"txt-search\",attrs:{\"type\":\"search\",\"data-test\":\"user-search-keyword\"},domProps:{\"value\":(_vm.txtSearchUser)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.txtSearchUser=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_c('AppDatatable',{staticClass:\"user-list\",attrs:{\"columns\":_vm.userListColumns,\"data\":_vm.userList,\"sort\":{prop: 'names', order: 'ascending'},\"search\":_vm.txtSearchUser,\"show\":true,\"selectionKey\":\"oid\"},on:{\"selectionChange\":_vm.handleAttendeesSelection}})],1),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn-default\",on:{\"click\":_vm.populateDefaultHours}},[_vm._v(\"Populate\")])])],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Default } from '@master/annotation/Default'\nimport { getRawKey, RawKey } from '@master/annotation/RawKey'\nimport { isUndefined } from 'lodash/fp'\n\nexport class CpdGlobals {\n @Default('5')\n @RawKey('global_cpd_req_ethics')\n globalCpdReqEthics = undefined\n\n @Default('5')\n @RawKey('global_cpd_req_gi')\n globalCpdReqGi = undefined\n\n @Default('5')\n @RawKey('global_cpd_req_reg')\n globalCpdReqReg = undefined\n\n @Default('5')\n @RawKey('global_cpd_req_supp_ms')\n globalCpdReqSuppMs = undefined\n\n @Default('5')\n @RawKey('global_cpd_req_supp_others')\n globalCpdReqSuppOthers = undefined\n\n @RawKey('global_cpd_req_year')\n globalCpdReqYear = undefined\n\n getAllRawKeys () {\n return Object.keys(this).map((key) => {\n return getRawKey(this, key)\n })\n }\n\n extractData (data: any) {\n Object.keys(this).forEach(config => {\n const rawKey = getRawKey(this, config)\n if (rawKey in data) this[config] = data[rawKey]\n })\n }\n\n convertToRawData () {\n const raw = {}\n Object.keys(this).forEach(config => {\n const rawKey = getRawKey(this, config)\n if (!isUndefined(this[config])) {\n raw[rawKey] = String(this[config])\n }\n })\n return raw\n }\n}\n","import { Component, Vue, Watch } from 'vue-property-decorator'\nimport { inject } from 'inversify-props'\nimport API from '@core/services/API'\nimport AppDatatable from '@core/components/AppDatatable.vue'\nimport AppForm from '@core/components/AppForm.vue'\nimport { FormStructure } from '@master/model/structure/FormStructure'\nimport { IDateService } from '@master/services/IDateService'\nimport { UserCPDMetaList } from '@core/model/common/UserCPDMetaList'\nimport { header, UserCPDMeta } from '@core/model/common/UserCPDMeta'\nimport { groupBy, isUndefined } from 'lodash/fp'\nimport { CpdGlobals } from './model/CpdGlobals'\nimport { UIService } from '@core/services/UIService'\nimport { SharedVariable } from '@core/model/SharedVariable'\nimport { UserMetaList } from '@core/model/common/UserMetaList'\nimport { downloadCSVFile } from '@core/services/CSVService'\nimport AppDialog from '@core/components/AppDialog.vue'\nimport { RequiredHours } from '@core/model/common/RequiredHours'\n\n@Component({\n components: {\n AppDatatable,\n AppForm,\n AppDialog\n }\n})\nexport class CpdSummaryMixin extends Vue {\n @inject()\n protected dateService: IDateService\n\n @inject()\n protected $api: API\n\n @inject()\n private sharedVariable: SharedVariable\n\n uiService: UIService\n\n protected cpdMetaList: UserCPDMetaList = null\n protected newCpd: UserCPDMeta = new UserCPDMeta()\n protected newCpdAttendees = []\n protected selectAttendeesMode = false\n protected txtSearchUser = ''\n\n protected activeTab: 'byCourse' | 'byEntry' | 'requiredHours' = 'byCourse'\n protected txtSearch = ''\n protected showModal = false\n protected showRequiredHoursDialog = false\n protected errorMessage = ''\n protected userMetaList: UserMetaList = null\n protected userMetaHeader = ['_oid', 'names', 'fullname', 'adviser_branch', 'status', 'systemrole', 'company_code', 'mas_repno', 'email', 'mobile', 'adviser_products', 'other_adviser_products']\n\n protected globals: CpdGlobals = new CpdGlobals()\n protected showUsersListModal = false\n\n formattedDate (unixTime: number | string) {\n return this.dateService.format(Number(unixTime), 'YYYY-MM-DD')\n }\n\n get byCourselist () {\n const courses = groupBy('courseId', this.byEntrylist)\n return Object.keys(courses).map(courseId => {\n const course = courses[courseId][0]\n course.faCoreEthicsHours = course.faCoreEthicsHours ?? 0\n course.faCoreRegHours = course.faCoreRegHours ?? 0\n course.faSuppMsHours = course.faSuppMsHours ?? 0\n course.faSuppOthersHours = course.faSuppOthersHours ?? 0\n course.giOthers = course.giOthers ?? 0\n\n return {\n ...course || {},\n participants: courses[courseId].length || 0\n }\n })\n }\n\n get byEntrylist () {\n return !this.cpdMetaList ? [] : this.cpdMetaList.list.map(cpd => {\n cpd.faCoreEthicsHours = cpd.faCoreEthicsHours ?? 0\n cpd.faCoreRegHours = cpd.faCoreRegHours ?? 0\n cpd.faSuppMsHours = cpd.faSuppMsHours ?? 0\n cpd.faSuppOthersHours = cpd.faSuppOthersHours ?? 0\n cpd.giOthers = cpd.giOthers ?? 0\n\n return {\n ...cpd,\n startDateMillisDisplay: this.dateService.format(cpd.startDateMillis, 'YYYY-MM-DD'),\n endDateMillisDisplay: this.dateService.format(cpd.endDateMillis, 'YYYY-MM-DD'),\n emit: true,\n present: this.getPresentDisplayString(cpd.present)\n }\n })\n }\n\n getPresentDisplayString (value: number) {\n if (value == null) return ''\n if (value === 1) return 'Yes'\n if (value === 0) return 'No'\n return ''\n }\n\n get byCourseColumns () {\n return [\n { label: 'Course Title', field: 'courseTitle' },\n { label: 'Course Provider', field: 'courseProvider' },\n { label: 'Course Venue', field: 'courseVenue' },\n { label: 'From', field: 'startDateMillisDisplay' },\n { label: 'To', field: 'endDateMillisDisplay' },\n { label: 'FA Core Ethics Hours', field: 'faCoreEthicsHours' },\n { label: 'FA Core Reg Hours', field: 'faCoreRegHours' },\n { label: 'FA Supp MS Hours', field: 'faSuppMsHours' },\n { label: 'FA Supp Others Hours', field: 'faSuppOthersHours' },\n { label: 'GI Hours', field: 'giOthers' }\n ]\n }\n\n get byEntryColumns () {\n return [\n { label: 'Username', field: 'username' },\n { label: 'Full Name', field: 'userFullname' },\n { label: 'Course Title', field: 'courseTitle' },\n { label: 'From', field: 'startDateMillisDisplay' },\n { label: 'To', field: 'endDateMillisDisplay' },\n { label: 'FA Core Ethics Hours', field: 'faCoreEthicsHours' },\n { label: 'FA Core Reg Hours', field: 'faCoreRegHours' },\n { label: 'FA Supp MS Hours', field: 'faSuppMsHours' },\n { label: 'FA Supp Others Hours', field: 'faSuppOthersHours' },\n { label: 'GI Hours', field: 'giOthers' },\n { label: 'Present', field: 'present' },\n { label: 'Assigned To (Year)', field: 'assignedTo' }\n ]\n }\n\n get requireHoursColumns () {\n return [\n { label: 'Year', field: 'globalCpdReqYear' },\n { label: 'FA Core Ethics Hours', field: 'globalCpdReqEthics' },\n { label: 'FA Core Reg Hours', field: 'globalCpdReqReg' },\n { label: 'FA Supp MS Hours', field: 'globalCpdReqSuppMs' },\n { label: 'FA Supp Others Hours', field: 'globalCpdReqSuppOthers' },\n { label: 'GI Hours', field: 'globalCpdReqGi' }\n ]\n }\n\n get newCpdStructure (): FormStructure {\n return [\n {\n label: 'Course Title*',\n key: 'courseTitle',\n disabled: this.selectAttendeesMode\n },\n {\n label: 'Course Provider*',\n key: 'courseProvider',\n disabled: this.selectAttendeesMode\n },\n {\n label: 'Course Venue*',\n key: 'courseVenue',\n disabled: this.selectAttendeesMode\n },\n {\n label: 'FA Core Ethics Hours*',\n key: 'faCoreEthicsHours',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'FA Core Reg Hours*',\n key: 'faCoreRegHours',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'FA Supp MS Hours*',\n key: 'faSuppMsHours',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'FA Supp Others Hours*',\n key: 'faSuppOthersHours',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'GI Hours*',\n key: 'giOthers',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'Period From*',\n key: 'startDateMillis',\n type: 'date',\n show: !this.selectAttendeesMode,\n onChange: (oldVal, newVal) => {\n try {\n this.newCpd.assignedTo = Number(new Date(newVal).getFullYear())\n this.newCpd.endDateMillis = newVal\n } catch (ex) { console.error(ex) }\n }\n },\n {\n label: 'Period To*',\n key: 'endDateMillis',\n type: 'date',\n show: !this.selectAttendeesMode\n },\n {\n label: 'Duration*',\n key: 'duration',\n show: !this.selectAttendeesMode\n },\n {\n label: 'Assigned To (Year)*',\n key: 'assignedTo',\n type: 'number',\n show: !this.selectAttendeesMode\n },\n {\n label: 'Description*',\n key: 'courseDescription',\n type: 'textarea',\n show: !this.selectAttendeesMode,\n classes: ['colspan']\n }\n ]\n }\n\n get requiredHoursStructure (): FormStructure {\n return [\n {\n label: 'Year',\n key: 'globalCpdReqYear'\n },\n {\n label: 'FA Core Ethics Hours',\n key: 'globalCpdReqEthics',\n type: 'number'\n },\n {\n label: 'FA Core Reg Hours',\n key: 'globalCpdReqReg',\n type: 'number'\n },\n {\n label: 'FA Supp MS Hours',\n key: 'globalCpdReqSuppMs',\n type: 'number'\n },\n {\n label: 'FA Supp Others Hours',\n key: 'globalCpdReqSuppOthers',\n type: 'number'\n },\n {\n label: 'GI Hours',\n key: 'globalCpdReqGi',\n type: 'number'\n }\n ]\n }\n\n get userList () {\n return !this.userMetaList ? [] : this.userMetaList.getFullList()\n }\n\n get userListColumns () {\n return [\n { label: 'Username', field: 'names' },\n { label: 'Full Name', field: 'fullname' },\n { label: 'System Role', field: 'systemrole' }\n ]\n }\n\n handleAttendeesSelection (rows: any[]) {\n this.newCpdAttendees = rows\n }\n\n get selectedAttendees () {\n return this.newCpdAttendees.map(attd => {\n /* eslint-disable @typescript-eslint/camelcase */\n return {\n user_oid: attd.oid,\n user_fullname: attd.fullname,\n username: attd.names[0]\n }\n /* eslint-enable */\n })\n }\n\n @Watch('selectAttendeesMode')\n async toggleAttendees (showAttendeesList) {\n if (showAttendeesList && this.userMetaList === null) await this.fetchUsers()\n }\n\n addNewCpd () {\n this.showModal = true\n this.errorMessage = ''\n this.newCpd = new UserCPDMeta()\n this.newCpdAttendees = []\n this.selectAttendeesMode = false\n }\n\n clickCourse (row: UserCPDMeta) {\n window.location.href = `/live/cpd/course/${row.courseId}`\n }\n\n clickCourseEntry (row: UserCPDMeta) {\n this.$router.push({ name: 'User CPD Records', params: { userOid: row.userOid } })\n }\n\n async toggleAttendeesMode () {\n if (!this.selectAttendeesMode && !this.validateNewCpd()) {\n this.errorMessage = 'Please complete all fields'\n return\n }\n this.selectAttendeesMode = !this.selectAttendeesMode\n this.errorMessage = ''\n }\n\n checkUnsavedCpd (done) {\n const emptyCpd = new UserCPDMeta()\n const hasUnsavedData = Object.keys(this.newCpd).some(cpdKey => this.newCpd[cpdKey] !== emptyCpd[cpdKey])\n if (hasUnsavedData && !confirm('All unsaved data will be removed. Confirm?')) return\n done()\n }\n\n validateNewCpd () {\n let valid = true\n Object.keys(this.newCpd)\n .filter((key) => !['oid', 'userOid', 'userFullname', 'username', 'present', 'courseId'].includes(key))\n .forEach((key) => {\n if ((this.newCpd[key] === '' || !this.newCpd[key]) && typeof this.newCpd[key] !== 'number') valid = false\n })\n return valid\n }\n\n async saveNewCpd () {\n const valid = this.validateNewCpd()\n this.errorMessage = ''\n if (!valid) {\n this.errorMessage = 'Please complete all fields'\n return\n }\n if (this.selectedAttendees.length === 0) {\n this.errorMessage = 'Please select at least one attendee'\n return\n }\n\n /* eslint-disable @typescript-eslint/camelcase */\n await this.$api.cpd.course.new({\n course_info: this.newCpd.convertToRawData(),\n attendees: this.selectedAttendees\n })\n /* eslint-enable */\n this.showModal = false\n await this.fetchData()\n }\n\n async fetchData () {\n const res = await this.$api.cpd.list({\n headers: JSON.stringify(header)\n })\n this.cpdMetaList = new UserCPDMetaList(res.data)\n }\n\n async fetchUsers () {\n const resUser = await this.$api.account.list({\n groupStatus: 'user',\n headers: JSON.stringify(this.userMetaHeader),\n query: 'status = ?',\n queryArgs: 'active'\n })\n this.userMetaList = new UserMetaList(resUser.data, this.userMetaHeader)\n }\n\n async fetchGlobalValues () {\n const response = await this.$api.assumptions.get({\n keys: this.globals.getAllRawKeys()\n })\n\n Object.assign(this.globals, this.globals.extractData(response.values))\n }\n\n async setGlobalValues () {\n const response = await this.$api.assumptions.update({\n keyValues: this.globals.convertToRawData()\n })\n if (!response.error) {\n await this.uiService.alert.show({\n type: 'success',\n message: 'Required Hours global values are saved successfully'\n })\n this.showRequiredHoursDialog = false\n }\n }\n\n getCurrentColsAndList () {\n let colsConfig = []\n let dataList = []\n let name = 'cpd-data'\n if (this.activeTab === 'byEntry') {\n colsConfig = this.byEntryColumns\n dataList = this.byEntrylist\n name = 'cpd-entry'\n } else if (this.activeTab === 'byCourse') {\n colsConfig = this.byCourseColumns\n dataList = this.byCourselist\n name = 'cpd-course'\n }\n const labels = colsConfig.map(col => col.label)\n const entries = dataList.map(course => {\n const formatted = {}\n colsConfig.forEach(config => {\n formatted[config.label] = course[config.field]\n })\n return formatted\n })\n\n return { cols: labels, list: entries, name }\n }\n\n exportCSV () {\n const { cols, list, name } = this.getCurrentColsAndList()\n console.log(cols, list, name)\n downloadCSVFile(cols, list, name)\n }\n\n async showPopulateDefaultHoursModal () {\n if (!this.userMetaList) {\n await this.fetchUsers()\n }\n\n this.newCpdAttendees = []\n this.showUsersListModal = true\n }\n\n async populateDefaultHours () {\n if (this.newCpdAttendees.length === 0) {\n return\n }\n\n /* eslint-disable @typescript-eslint/camelcase */\n const cpd = new RequiredHours()\n\n cpd.year = this.globals.globalCpdReqYear\n cpd.ethics = this.globals.globalCpdReqEthics\n cpd.reg = this.globals.globalCpdReqReg\n cpd.suppMs = this.globals.globalCpdReqSuppMs\n cpd.suppOthers = this.globals.globalCpdReqSuppOthers\n cpd.gi = this.globals.globalCpdReqGi\n\n if (!cpd.allIsFilled()) {\n await this.uiService.alert.show({\n type: 'warning',\n message: 'Global CPD Hours value is empty. Please fill in accordingly.'\n })\n return\n }\n\n const keys = ['year', 'ethics', 'reg', 'suppMs', 'suppOthers', 'gi']\n const data = {\n adviser_oid_list: JSON.stringify(this.newCpdAttendees.map(attd => attd.oid)),\n data: JSON.stringify(cpd.convertToCustomRawData(keys))\n }\n /* eslint-enable */\n\n await this.$api.cpd.saveMany(data)\n\n await this.uiService.alert.show({\n type: 'success',\n message: 'Global CPD Hours has successfully populated to the selected users'\n })\n\n this.showUsersListModal = false\n }\n\n async mounted () {\n this.uiService = this.sharedVariable.uiService\n await this.fetchData()\n await this.fetchGlobalValues()\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Mixins } from 'vue-property-decorator'\nimport { CpdSummaryMixin } from './CpdSummaryMixin'\n\nexport default class CpdSummary extends Mixins(CpdSummaryMixin) {\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CpdSummary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CpdSummary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CpdSummary.vue?vue&type=template&id=78e2e061&scoped=true&\"\nimport script from \"./CpdSummary.vue?vue&type=script&lang=ts&\"\nexport * from \"./CpdSummary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CpdSummary.vue?vue&type=style&index=0&id=78e2e061&lang=scss&scoped=true&\"\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 \"78e2e061\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"column-group\",style:(_vm.gridStyle),attrs:{\"id\":\"app-form\"}},[_vm._l((_vm.structuresDetails),function(structure){return [(_vm.shouldShow(structure.show))?_c('div',{key:structure.key,staticClass:\"input-group-with-theme\",class:[{ 'input-disabled': _vm.shouldDisabled(structure.disabled)}, _vm.getCustomClass(structure)],attrs:{\"has-msg\":structure.hasErrors,\"focusing\":_vm.focusId == _vm.getId(structure.key),\"id\":(\"box-\" + (_vm.getId(structure.key)))},on:{\"click\":function($event){return _vm.focusInner(structure)}}},[[(structure.labelModel)?_c('input',{staticClass:\"label\",attrs:{\"type\":\"text\",\"placeholder\":structure.label,\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":_vm.labelModelValue(structure.labelModel.get())},on:{\"input\":function($event){return structure.labelModel.set($event.target.value)}}}):(structure.labelKey)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model[structure.labelKey]),expression:\"model[structure.labelKey]\"}],staticClass:\"label\",attrs:{\"type\":\"text\",\"data-test\":(\"label-input:\" + (_vm.getTestId(structure.key)))},domProps:{\"value\":(_vm.model[structure.labelKey])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, structure.labelKey, $event.target.value)}}}):_vm._e(),(structure.labelModel || structure.labelKey)?_c('i',{staticClass:\"fa fa-pencil-alt right-sided\"}):(structure.type === 'single-checkbox')?_c('span'):_c('label',{attrs:{\"for\":_vm.getId(structure.key),\"id\":_vm.getId(structure.key) + '_label'},domProps:{\"innerHTML\":_vm._s(structure.label)}}),(structure.tooltip)?_c('AppTooltip',{attrs:{\"tooltipConfig\":structure.tooltip}}):_vm._e(),(_vm.isModernTheme)?_vm._l((structure.errors),function(ref,eidx){\nvar msg = ref.msg;\nreturn _c('div',{key:((structure.key) + \"-error-\" + eidx),staticClass:\"form-msg\",class:{\n full:\n eidx === 0 || _vm.fullErr === ((structure.key) + \"-error-\" + eidx),\n },on:{\"click\":function($event){_vm.fullErr = (structure.key) + \"-error-\" + eidx}}},[_c('el-tooltip',[_c('span',{staticClass:\"el-icon-warning\"}),_c('span',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_vm._v(_vm._s(msg))])])],1)}):_vm._e()],(structure.options && structure.type === 'smart')?_c('AppSmartSelect',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"multiple\":structure.multiple,\"cols\":structure.optionCols,\"multiLimit\":structure.multiLimit,\"buttonName\":structure.buttonName,\"cycleMode\":structure.cycleMode,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'single-checkbox')?_c('el-checkbox',{attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},[_vm._v(\" \"+_vm._s(structure.label)+\" \")]):(structure.options && structure.type === 'checkbox')?_c('AppCheckboxGroup',{attrs:{\"structure\":structure,\"model\":_vm.model,\"column\":structure.checkboxColumnNo,\"compact\":structure.compact},on:{\"change\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.options && structure.type === 'radio')?_c('AppRadioSelection',{attrs:{\"options\":structure.options,\"value\":_vm.model[structure.key],\"buttonName\":structure.buttonName,\"displayDirection\":structure.displayDirection,\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'multi')?_c('el-select',{staticClass:\"form-multi-select\",attrs:{\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"multiple\":\"\",\"collapse-tags\":\"\",\"size\":'small',\"popper-class\":'wen-popper-class'},on:{\"change\":function($event){return _vm.setValue(structure, $event)}}},_vm._l((structure.options),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):(structure.options)?_c('select',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled)},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setSelectValue($event.target, structure)}}},_vm._l((structure.options),function(option,index){return _c('option',{key:index,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.label)+\" \")])}),0):(structure.type === 'decimal-number')?[_c('AppDecimalNumber',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"decimal\":structure.decimal,\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled)},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:(structure.type === 'number' || structure.type === 'time' || structure.type === 'password')?_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":structure.type,\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'currency')?_c('currency-input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"currency\":structure.currencyFormat,\"aria-labelledby\":_vm.getLabelId(structure.key),\"value\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"precision\":structure.precision},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'date' || structure.type === 'month')?_c('AppDateInput',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"value\":_vm.getValue(structure),\"id\":_vm.getId(structure.key),\"input-type\":structure.type,\"data-test\":_vm.getTestId(structure.key),\"aria-label\":structure.label,\"disabled\":_vm.shouldDisabled(structure.disabled),\"futureDate\":structure.futureDate,\"disabledFutureDate\":structure.disabledFutureDate},on:{\"input\":function($event){return _vm.setValue(structure, $event)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'textarea')?_c('textarea',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar,\"rows\":structure.rows || 10},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler()}}}):(structure.type === 'table')?_c('AppFormTable',{staticClass:\"inner-table\",attrs:{\"innerTable\":true,\"vertical\":structure.isVertical,\"maxSize\":structure.maxSize,\"fields\":structure.columns,\"data\":_vm.getValueForTable(structure)},on:{\"add\":structure.add,\"remove\":structure.remove}}):(structure.type==='na-currency')?[_c('AppCurrencyNA',{attrs:{\"inputValue\":_vm.getValue(structure),\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxLength},on:{\"input\":function($event){return _vm.setValue(structure, $event)}}})]:_c('input',{class:{ 'myinfo-disabled': structure.isMyInfo },attrs:{\"id\":_vm.getId(structure.key),\"data-test\":_vm.getTestId(structure.key),\"aria-labelledby\":_vm.getLabelId(structure.key),\"type\":\"text\",\"disabled\":_vm.shouldDisabled(structure.disabled),\"maxlength\":structure.maxChar},domProps:{\"value\":_vm.getValue(structure)},on:{\"input\":function($event){return _vm.setValue(structure, $event.target.value)},\"blur\":function($event){return _vm.blurHandler(structure, $event.target.value)}}}),(structure.isMyInfo)?_c('img',{staticClass:\"input-hint logo\",attrs:{\"src\":require(\"@core/assets/myinfo-icon.svg\")}}):_vm._e(),(structure.counterMsg && _vm.isModernTheme)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(structure.counterMsg)+\" \")]):_vm._e()],2):_vm._e()]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputModal),expression:\"inputModal\"}],attrs:{\"maxlength\":_vm.maxlength,\"disabled\":_vm.disabled},domProps:{\"value\":(_vm.inputModal)},on:{\"keypress\":function($event){return _vm.numberAndNAOnly($event)},\"blur\":function($event){return _vm.onBlur()},\"focus\":function($event){return _vm.onFocus()},\"select\":function($event){return _vm.onSelect($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.inputModal=$event.target.value}}}),(!_vm.disabled)?_c('div',{staticClass:\"char-counter\"},[_vm._v(\" \"+_vm._s(_vm.counterMsg)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { IProjectInfo } from '@master/config/IProjectInfo'\nimport { inject } from 'inversify-props'\n\n@Component\nexport default class AppCurrencyNA extends Vue {\n @Prop() inputValue\n @Prop({ default: true }) useCurrency!: boolean\n @Prop({ default: 10 }) maxlength?: number\n @Prop({ default: false }) disabled: boolean\n\n @inject()\n private projectInfo: IProjectInfo\n\n inputModal = ''\n textIsSelected = false\n\n get counterMsg () {\n if (typeof this.maxlength === 'undefined') return\n const number = this.convertCurrencyToNumber(this.inputModal)\n const remainingChar = this.maxlength - (number.toString().length || 0)\n return remainingChar > 0 ? `${remainingChar} letter(s) remaining` : 'Max character limit reached'\n }\n\n numberAndNAOnly (evt) {\n evt = (evt) || window.event\n const charCode = (evt.which) ? evt.which : evt.keyCode\n\n const currentValue = evt.target.value\n if (this.textIsSelected) {\n if (!this.isAlphabetN(charCode) && this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n this.textIsSelected = false\n }\n return true\n }\n\n // if current value is 'NA', cannot key in other character\n if (currentValue.toUpperCase() === 'NA') {\n evt.preventDefault()\n }\n\n // if current value is N, the followed char must be A\n if (this.isAlphabetN(currentValue.charCodeAt(0))) {\n if (this.isAlphabetA(charCode)) {\n return true\n }\n evt.preventDefault() // only can accept A\n }\n\n // if there is empty value, it can either key in char N or number only\n if (!currentValue) {\n if (this.isAlphabetN(charCode)) {\n return true\n }\n }\n\n // cannot key in non number value\n if (this.isNonNumber(charCode)) {\n evt.preventDefault()\n } else {\n return true\n }\n }\n\n isAlphabetN (charCode) {\n return charCode === 78 || charCode === 110\n }\n\n isAlphabetA (charCode) {\n return charCode === 65 || charCode === 97\n }\n\n isNonNumber (charCode) {\n return charCode > 31 && (charCode < 48 || charCode > 57)\n }\n\n onBlur () {\n if (!this.inputModal && this.inputModal !== '0') {\n this.inputModal = this.formatValue('')\n this.$emit('input', '')\n return\n }\n\n // format na to NA to display\n if (this.inputModal.toUpperCase() === 'NA') {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n // in case only key in 'n' and on blur, format it to NA\n if (isNaN(Number(this.inputModal))) {\n this.inputModal = 'NA'\n this.$emit('input', 'NA')\n return\n }\n\n const number = this.convertCurrencyToNumber(this.inputModal)\n this.inputModal = this.formatValue(number)\n this.$emit('input', Number(number))\n }\n\n onFocus () {\n this.inputModal = this.convertCurrencyToNumber(this.inputModal)\n }\n\n onSelect () {\n this.textIsSelected = true\n }\n\n formatValue (source) {\n if (typeof source === 'string') {\n if (source.toUpperCase() === 'NA' || source === '') {\n return source\n }\n source = Number(source.replace('$', '').replace(',', ''))\n } else if (source === undefined || source == null) {\n source = ''\n }\n return this.useCurrency ? this.currencyPrefix + source?.toLocaleString('en-US') : source?.toLocaleString('en-US')\n }\n\n convertCurrencyToNumber (currency) {\n return currency.replaceAll(this.currencyPrefix, '').replaceAll(',', '')\n }\n\n get currencyPrefix () {\n return this.projectInfo.currency ?? 'SGD$'\n }\n\n @Watch('inputValue')\n inputValueOnChange () {\n if (this.inputValue || this.inputValue === '0' || Number(this.inputValue) === 0) {\n this.inputModal = this.formatValue(this.inputValue)\n } else {\n this.inputModal = this.formatValue('')\n }\n }\n\n mounted () {\n this.inputModal = this.formatValue(this.inputValue)\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppCurrencyNA.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppCurrencyNA.vue?vue&type=template&id=423a3b72&scoped=true&\"\nimport script from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppCurrencyNA.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppCurrencyNA.vue?vue&type=style&index=0&id=423a3b72&lang=scss&scoped=true&\"\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 \"423a3b72\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Base } from '@master/model/Base'\nimport { FormStructure, Input, TableSetup } from '@master/model/structure/FormStructure'\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport AppCheckboxGroup from '@core/components/AppCheckboxGroup.vue'\nimport AppFormTable from '@core/components/AppFormTable.vue'\nimport AppRadioSelection from '@core/components/AppRadioSelection.vue'\nimport AppSmartSelect from '@core/components/AppSmartSelect.vue'\nimport { inject } from 'inversify-props'\nimport { IDateService } from '@master/services/IDateService'\nimport AppDateInput from './AppDateInput.vue'\nimport { getMaxChar } from '@master/annotation/MaxChar'\nimport { IProjectSettings } from '@master/config/IProjectSettings'\nimport { isUndefined } from 'lodash/fp'\nimport randomstring from 'randomstring'\nimport AppCurrencyNA from './AppCurrencyNA.vue'\nimport AppDecimalNumber from './AppDecimalNumber.vue'\nimport AppTooltip from './AppTooltip.vue'\n\n@Component({\n components: {\n AppSmartSelect,\n AppCheckboxGroup,\n AppRadioSelection,\n AppDateInput,\n AppFormTable,\n AppCurrencyNA,\n AppDecimalNumber,\n AppTooltip\n }\n})\n\nexport default class AppForm extends Vue {\n @Prop() readonly structures!: FormStructure[];\n @Prop() readonly model!: T;\n @Prop({ default: 1 }) readonly columns: number;\n @Prop() readonly errors?: { key: string; msg: string }[];\n @Prop({ default: () => { return Date.now() } })\n readonly uniqueID: string;\n\n @Prop({ default: false }) readonly readOnly: boolean;\n\n @inject()\n private dateService: IDateService;\n\n @inject()\n private projectSettings: IProjectSettings;\n\n private minimal = true;\n // private renderCnt = 0;\n private focusId = null;\n private fullErr = null;\n\n get structuresDetails () {\n return this.structures.map((structure) => {\n const key = (structure as any).key\n const errors = this.errors?.filter((err) => err.key === key) || []\n const maxChar = getMaxChar(this.model, key)\n const charLeft = this.getCharLeft(key)\n const counterMsg = this.getCounterMsg(maxChar, charLeft)\n return {\n errors,\n hasErrors: errors?.length > 0,\n maxChar,\n counterMsg,\n ...structure\n }\n })\n }\n\n get gridStyle () {\n return {\n gridTemplateColumns: `repeat(${this.columns}, minmax(0, 1fr))`\n }\n }\n\n get isModernTheme () {\n return this.projectSettings.theme === 'Modern'\n }\n\n getCounterMsg (maxChar, charLeft) {\n if (!this.isModernTheme) return '' // counterMsg only used in Modern Theme\n return maxChar ? charLeft > 0 ? `${charLeft} letters remaining` : 'Max character limit reached' : ''\n }\n\n shouldDisabled (condition: boolean | Function = false) {\n if (this.readOnly) return true\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n shouldShow (condition: boolean | Function = true) {\n if (condition === undefined) {\n return false\n } else if (condition instanceof Function) {\n return condition(this.model)\n } else {\n return condition\n }\n }\n\n getValue (input: Input) {\n if (input.type === 'currency') {\n const oriValue = this.model[input.key]\n if (typeof oriValue === 'string' || oriValue instanceof String) {\n return Number(this.model[input.key])\n }\n }\n if (input.key) {\n return this.model[input.key]\n } else if (input.model) {\n return input.model.get()\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n /**\n * Return null as the label if it is empty so\n * that the placeholder will appear\n */\n labelModelValue (labelValue: string) {\n return !labelValue ? null : labelValue\n }\n\n getValueForTable (input: TableSetup) {\n if (input.key) {\n return this.model[input.key]\n } else if (input.data) {\n return input.data\n } else {\n throw new Error(\n `Invalid config for label ${input.label}: key or model is required`\n )\n }\n }\n\n // this is to resolve the issue of event.target.value is always passed as string, but our use cases might need number\n setSelectValue (event, structure) {\n const selectedOption = structure.options[event.selectedIndex]\n this.setValue(structure, selectedOption.value)\n }\n\n setValue (input: Input, _value: T[keyof T]) {\n const value: any = input.type === 'number' ? +_value || 0 : _value\n\n if (input.key) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n // when only has getter (for currency input), sidestep the error\n try {\n this.model[input.key] = value\n } catch (ex) {}\n } else if (input.model) {\n if (input.onChange) {\n input.onChange(this.model[input.key], value)\n }\n return input.model.set(value)\n } else {\n throw new Error(`Invalid config for label ${input.label}: key or model is required`)\n }\n }\n\n getId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.uniqueID}_${this.model.snakeCaseKey(key)}`\n }\n\n if (isUndefined(key)) {\n key = randomstring.generate(6)\n }\n\n if (this.uniqueID) {\n return `${this.uniqueID}_${key}`\n }\n\n return `${key}`\n }\n\n getTestId (key: string) {\n if (this.model && 'snakeCaseKey' in this.model) {\n return `${this.model.snakeCaseKey(key)}`\n }\n return undefined\n }\n\n getLabelId (key: string) {\n return this.getId(key) + '_label'\n }\n\n arrangeCols () {\n const curAppForm = this.$el\n const hasOverflow = curAppForm.scrollWidth > curAppForm.clientWidth\n if (hasOverflow) this.minimal = true\n }\n\n blurHandler (input: Input, _value: T[keyof T]) {\n if (this.isModernTheme) {\n this.focusId = null\n }\n\n if (input && input?.onBlur) {\n input.onBlur(_value)\n }\n }\n\n // use to handle Modern theme\n focusInner (structure: any) {\n // this means label is also editable, thus do not auto focus input\n if (structure.labelModel || structure.labelKey || structure.model) return\n const eleId = this.getId(structure.key)\n this.focusId = eleId\n const ele = document.getElementById(eleId)\n if (ele) ele.focus()\n }\n\n getCharLeft (key: string) {\n const mc = getMaxChar(this.model, key)\n return mc ? mc - (this.model[key]?.length || 0) : mc\n }\n\n getCustomClass (structure) {\n return structure.classes ? [...structure.classes] : []\n }\n\n // @Watch('structures')\n // structuresUpdated () {\n // // this is to allow view to be updated when structures change\n // this.renderCnt++\n // }\n\n @Watch('structuresDetails', { deep: true })\n focusError (swe) {\n if (!this.isModernTheme) return // this is used for Modern Theme\n\n const first = swe.find((s) => 'msg' in s)\n if (!first) return\n const ele = document.getElementById(`box-${this.getId(first.key)}`)\n if (!ele) return\n ele.scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n\n updated () {\n this.arrangeCols()\n }\n\n mounted () {\n this.arrangeCols()\n window.addEventListener('resize', () => this.arrangeCols())\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppForm.vue?vue&type=template&id=11928856&scoped=true&\"\nimport script from \"./AppForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppForm.vue?vue&type=style&index=0&id=11928856&lang=scss&scoped=true&\"\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 \"11928856\",\n null\n \n)\n\nexport default component.exports","import { MetaList } from '@master/model/common/MetaList'\nimport { header, UserCPDMeta } from './UserCPDMeta'\n\nexport class UserCPDMetaList extends MetaList {\n list: UserCPDMeta[]\n\n constructor (data: (string | number)[][]) {\n super(header, data, UserCPDMeta)\n }\n}\n"],"sourceRoot":""}