Push changes to frontend
This commit is contained in:
1 parent
96b0ad8496
commit
067af27b76
139 files changed
+69635
-12
No files matched your search
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.AttendanceAdapter=l.AttendanceAdapter,window.AttendanceStatusAdapter=l.AttendanceStatusAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("../../../api/AdapterBase")),r=n(e("../../../api/FormValidation"));function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(e,a,l,i){s(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a,l,i));return r.photoAttendance=!1,r}return u(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","employee","in_time","out_time","note"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Time-In"},{sTitle:"Time-Out"},{sTitle:"Note"}]}},{key:"getFormFields",value:function(){return[["employee",{label:"Employee",type:"select2","allow-null":!1,"remote-source":["Employee","id","first_name+last_name"]}],["id",{label:"ID",type:"hidden"}],["in_time",{label:"Time-In",type:"datetime"}],["out_time",{label:"Time-Out",type:"datetime",validation:"none"}],["note",{label:"Note",type:"textarea",validation:"none"}]]}},{key:"getFilters",value:function(){return[["employee",{label:"Employee",type:"select2","allow-null":!1,"remote-source":["Employee","id","first_name+last_name"]}]]}},{key:"setPhotoAttendance",value:function(e){this.photoAttendance=parseInt(e,10)}},{key:"getCustomTableParams",value:function(){var e=this;return{aoColumnDefs:[{fnRender:function(t,a){return e.preProcessRemoteTableData(t,a,2)},aTargets:[2]},{fnRender:function(t,a){return e.preProcessRemoteTableData(t,a,3)},aTargets:[3]},{fnRender:function(t,a){return e.preProcessRemoteTableData(t,a,4)},aTargets:[4]},{fnRender:e.getActionButtons,aTargets:[e.getDataMapping().length]}]}}},{key:"preProcessRemoteTableData",value:function(e,t,a){return 2===a?"0000-00-00 00:00:00"===t||""===t||void 0===t||null==t?"":Date.parse(t).toString("yyyy MMM d <b>HH:mm</b>"):3===a?"0000-00-00 00:00:00"===t||""===t||void 0===t||null==t?"":Date.parse(t).toString("MMM d <b>HH:mm</b>"):4===a?null!=t&&t.length>10?t.substring(0,10)+"..":t:void 0}},{key:"save",value:function(){var e=new r.default(this.getTableName()+"_submit",!0,{ShowPopup:!1,LabelErrorClass:"error"});if(e.checkValues()){var t=e.getFormParameters(),a=this.doCustomValidation(t);if(null==a){var l=$("#"+this.getTableName()+"_submit #id").val();null!=l&&void 0!==l&&""!==l&&(t.id=l);var i=JSON.stringify(t),n=[];n.callBackData=[],n.callBackSuccess="saveSuccessCallback",n.callBackFail="saveFailCallback",this.customAction("savePunch","admin=attendance",i,n)}else{var s=$("#"+this.getTableName()+"Form .label");s.html(a),s.show()}}}},{key:"saveSuccessCallback",value:function(e){this.get(e)}},{key:"saveFailCallback",value:function(e){this.showMessage("Error saving attendance entry",e)}},{key:"isSubProfileTable",value:function(){return"Admin"!==this.user.user_level}},{key:"showPunchImages",value:function(e){var t=JSON.stringify({id:e}),a=[];a.callBackData=[],a.callBackSuccess="getImagesSuccessCallback",a.callBackFail="getImagesFailCallback",this.customAction("getImages","admin=attendance",t,a)}},{key:"getImagesSuccessCallback",value:function(e){if($("#attendancePhotoModel").modal("show"),$("#attendnaceCanvasEmp").html(e.employee_Name),e.in_time&&$("#attendnaceCanvasPunchInTime").html(Date.parse(e.in_time).toString("yyyy MMM d <b>HH:mm</b>")),e.image_in){var t=document.getElementById("attendnaceCanvasIn").getContext("2d"),a=new Image;a.onload=function(){t.drawImage(a,0,0)},a.src=e.image_in}if(e.out_time&&$("#attendnaceCanvasPunchOutTime").html(Date.parse(e.out_time).toString("yyyy MMM d <b>HH:mm</b>")),e.image_out){var l=document.getElementById("attendnaceCanvasOut").getContext("2d"),i=new ImaLine truncated
|
||||
//# sourceMappingURL=attendance.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.CompanyStructureAdapter=l.CompanyStructureAdapter,window.CompanyGraphAdapter=l.CompanyGraphAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","title","address","type","country","timezone","parent"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Address",bSortable:!1},{sTitle:"Type"},{sTitle:"Country",sClass:"center"},{sTitle:"Time Zone"},{sTitle:"Parent Structure"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden",validation:""}],["title",{label:"Name",type:"text",validation:""}],["description",{label:"Details",type:"textarea",validation:""}],["address",{label:"Address",type:"textarea",validation:"none"}],["type",{label:"Type",type:"select",source:[["Company","Company"],["Head Office","Head Office"],["Regional Office","Regional Office"],["Department","Department"],["Unit","Unit"],["Sub Unit","Sub Unit"],["Other","Other"]]}],["country",{label:"Country",type:"select2","remote-source":["Country","code","name"]}],["timezone",{label:"Time Zone",type:"select2","allow-null":!1,"remote-source":["Timezone","name","details"]}],["parent",{label:"Parent Structure",type:"select","allow-null":!0,"remote-source":["CompanyStructure","id","title"]}],["heads",{label:"Heads",type:"select2multi","allow-null":!0,"remote-source":["Employee","id","first_name+last_name"]}]]}},{key:"postRenderForm",value:function(e,t){null!=e&&null!==e.id&&void 0!==e.id&&""!==e.id||t.find("#field_heads").hide()}}]),t}(),d=function(e){function t(e,a,l,i){o(this,t);var r=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a,l,i));return r.nodeIdCounter=0,r}return u(t,c),i(t,[{key:"convertToTree",value:function(e){for(var t={id:-1,title:"",name:"",children:[]},a=null,l=0;l<e.length;l++)e[l].name=e[l].title,null!=e[l].parent&&void 0!==e[l].parent&&null!=(a=this.findParent(e,e[l].parent))&&(void 0!==a.children&&null!=a.children||(a.children=[]),a.children.push(e[l]));for(var i=0;i<e.length;i++)null!=e[i].parent&&void 0!==e[i].parent||t.children.push(e[i]);return t}},{key:"findParent",value:function(e,t){for(var a=0;a<e.length;a++)if(e[a].title===t||e[a].title===t)return e[a];return null}},{key:"createTable",value:function(e){$("#tabPageCompanyGraph").html("");var t=this.sourceData,a=this.convertToTree(t),l=[20,120,20,120],i=5e3-l[1]-l[3],r=1e3-l[0]-l[2],n=d3.layout.tree().size([r,i]);this.diagonal=d3.svg.diagonal().projection(function(e){return[e.y,e.x]}),this.vis=d3.select("#tabPageCompanyGraph").append("svg:svg").attr("width",i+l[1]+l[3]).attr("height",r+l[0]+l[2]).append("svg:g").attr("transform","translate("+l[3]+","+l[0]+")");var o=a;o.x0=r/2,o.y0=0,this.update(o,n,o)}},{key:"update",value:function(e,t,a){var l=this,i=d3.event&&d3.event.altKey?5e3:500,r=t.nodes(a).reverse();r.forEach(function(e){e.y=180*e.depth});var n=l.vis.selectAll("g.node").data(r,function(e){return e.id||(e.id=++l.nodeIdCounter)}),o=n.enter().append("svg:g").attr("class","node").attr("transform",function(t){return"translate("+e.y0+","+e.x0+")"}).on("click",function(e){l.toggle(e),l.update(e,t,a)});o.append("svg:circle").attr("r",1e-6).style("fill",function(e){return e._children?"lightsteelblue":"#fff"}),o.append("svg:text").attr("x",function(e){return e.children||e._children?-10:10}).attr("dy",".35em").attr("text-anchor",function(e){return e.children||e._children?"end":"start"}).text(function(e){return e.name}).style("fill-opaLine truncated
|
||||
//# sourceMappingURL=company_structure.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.DashboardAdapter=l.DashboardAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,n.default),i(t,[{key:"getDataMapping",value:function(){return[]}},{key:"getHeaders",value:function(){return[]}},{key:"getFormFields",value:function(){return[]}},{key:"get",value:function(e){}},{key:"getInitData",value:function(){var e=JSON.stringify({}),t=[];t.callBackData=[],t.callBackSuccess="getInitDataSuccessCallBack",t.callBackFail="getInitDataFailCallBack",this.customAction("getInitData","admin=dashboard",e,t)}},{key:"getInitDataSuccessCallBack",value:function(e){$("#numberOfEmployees").html(e.numberOfEmployees+" Employees"),$("#numberOfCompanyStuctures").html(e.numberOfCompanyStuctures+" Departments"),$("#numberOfUsers").html(e.numberOfUsers+" Users"),$("#numberOfProjects").html(e.numberOfProjects+" Active Projects"),$("#numberOfAttendanceLastWeek").html(e.numberOfAttendanceLastWeek+" Entries Last Week"),$("#numberOfLeaves").html(e.numberOfLeaves+" Upcoming"),$("#numberOfTimeEntries").html(e.numberOfTimeEntries),$("#numberOfCandidates").html(e.numberOfCandidates+" Candidates"),$("#numberOfJobs").html(e.numberOfJobs+" Active"),$("#numberOfCourses").html(e.numberOfCourses+" Courses")}},{key:"getInitDataFailCallBack",value:function(e){}}]),t}();t.exports={DashboardAdapter:s}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status)return null;var a=JSON.stringify(t);return localStorage.setItem(e,a),a}}]),e}();a.default=i},{}],4:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("./ModuleBase")),r=n(e("../api-common/RequestCache"));function n(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(e,a,l,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.moduleRelativeURL=null,r.tableData=[],r.sourceData=[],r.filter=null,r.origFilter=null,r.orderBy=null,r.currentElement=null,r.initALine truncated
|
||||
//# sourceMappingURL=dashboard.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.DataImportAdapter=l.DataImportAdapter,window.DataImportFileAdapter=l.DataImportFileAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","dataType","details"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Data Type"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}],["dataType",{label:"Data Type",type:"text",validation:""}],["details",{label:"Details",type:"textarea",validation:"none"}],["columns",{label:"Columns",type:"datagroup",form:[["name",{label:"Name",type:"text",validation:""}],["title",{label:"Filed Title",type:"text",validation:"none"}],["type",{label:"Type",type:"select",sort:"none",source:[["Normal","Normal"],["Reference","Reference"],["Attached","Attached"]]}],["dependOn",{label:"Depends On",type:"select","allow-null":!0,"null-label":"N/A",source:[["EmergencyContact","Emergency Contacts"],["Ethnicity","Ethnicity"],["Nationality","Nationality"],["JobTitle","JobTitle"],["PayFrequency","PayFrequency"],["PayGrade","PayGrade"],["EmploymentStatus","EmploymentStatus"],["CompanyStructure","CompanyStructure"],["Employee","Employee"]]}],["dependOnField",{label:"Depends On Field",type:"text",validation:"none"}],["isKeyField",{label:"Is Key Field",type:"select",validation:"",source:[["No","No"],["Yes","Yes"]]}],["idField",{label:"Is ID Field",type:"select",validation:"",source:[["No","No"],["Yes","Yes"]]}]],html:'<div id="#_id_#" class="panel panel-default"><div class="panel-heading"><b>#_name_#</b> #_delete_##_edit_#</div><div class="panel-body"><b>Header Title: </b>#_title_#<br/><span style="color:#999;font-size:11px;font-weight:bold">Type: #_type_# </span><br/></div></div>',validation:"none","custom-validate-function":function(e){var t={};return t.params=e,t.valid=!0,"Reference"===e.type&&("NULL"===e.dependOn?(t.message="If the type is Reference this field should referring another table",t.valid=!1):null!==dependOnField&&void 0!==dependOnField||(t.message="If the type is Reference then 'Depends On Field' can not be empty",t.valid=!1)),t}}]]}}]),t}(),d=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","data_import_definition","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Data Import Definition"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}],["data_import_definition",{label:"Data Import Definitions",type:"select","remote-source":["DataImport","id","name"]}],["file",{label:"File to Import",type:"fileupload",validation:"",filetypes:"csv,txt"}],["details",{label:"Last Export Result",type:"textarea",validation:"none"}]]}},{key:"getActionButtonsHtml",value:function(e,t){var a='<div style="width:120px;">_edit__process__clone__delete_</div>';return a=this.showAddNew?a.replace("_clone_",'<img class="tableActionButton" src="_BASE_images/clone.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Copy" onclick="modJs.copyRow(_id_);return false;"></img>'):a.replace("_clone_",""),a=this.showDelete?a.replace("_delete_",'<img class="tableActionButton" src="_BASE_images/delete.png" styLine truncated
|
||||
//# sourceMappingURL=data.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,l,a){function i(n,s){if(!l[n]){if(!t[n]){var r="function"==typeof require&&require;if(!s&&r)return r(n,!0);if(o)return o(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var d=l[n]={exports:{}};t[n][0].call(d.exports,function(e){return i(t[n][1][e]||e)},d,d.exports,e,t,l,a)}return l[n].exports}for(var o="function"==typeof require&&require,n=0;n<a.length;n++)i(a[n]);return i}}()({1:[function(e,t,l){"use strict";var a=e("./lib");window.EmployeeAdapter=a.EmployeeAdapter,window.TerminatedEmployeeAdapter=a.TerminatedEmployeeAdapter,window.ArchivedEmployeeAdapter=a.ArchivedEmployeeAdapter,window.EmployeeSkillAdapter=a.EmployeeSkillAdapter,window.EmployeeEducationAdapter=a.EmployeeEducationAdapter,window.EmployeeCertificationAdapter=a.EmployeeCertificationAdapter,window.EmployeeLanguageAdapter=a.EmployeeLanguageAdapter,window.EmployeeDependentAdapter=a.EmployeeDependentAdapter,window.EmergencyContactAdapter=a.EmergencyContactAdapter,window.EmployeeImmigrationAdapter=a.EmployeeImmigrationAdapter,window.EmployeeSubSkillsAdapter=a.EmployeeSubSkillsAdapter,window.EmployeeSubEducationAdapter=a.EmployeeSubEducationAdapter,window.EmployeeSubCertificationAdapter=a.EmployeeSubCertificationAdapter,window.EmployeeSubLanguageAdapter=a.EmployeeSubLanguageAdapter,window.EmployeeSubDependentAdapter=a.EmployeeSubDependentAdapter,window.EmployeeSubEmergencyContactAdapter=a.EmployeeSubEmergencyContactAdapter,window.EmployeeSubDocumentAdapter=a.EmployeeSubDocumentAdapter,window.EmployeeDocumentAdapter=a.EmployeeDocumentAdapter},{"./lib":2}],2:[function(e,t,l){"use strict";var a=function(){function e(e,t){for(var l=0;l<t.length;l++){var a=t[l];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,l,a){return l&&e(t.prototype,l),a&&e(t,a),t}}(),i=n(e("../../../api/AdapterBase")),o=n(e("../../../api/SubAdapterBase"));function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var d=function(e){function t(){return s(this,t),r(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,o.default),a(t,[{key:"getDataMapping",value:function(){return["id","employee","skill_id","details"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Skill"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"hidden"}],["skill_id",{label:"Skill",type:"select2","allow-null":!0,"remote-source":["Skill","id","name"]}],["details",{label:"Details",type:"textarea",validation:""}]]}},{key:"forceInjectValuesBeforeSave",value:function(e){return e.employee=this.parent.currentId,e}},{key:"getSubHeaderTitle",value:function(){return'<button class="btn btn-small btn-success" onclick="modJs.subModJsList[\'tab'+this.tab+'\'].renderForm();" style="margin-right:10px;"><i class="fa fa-plus"></i></button>'+this.gt("Skills")}},{key:"getSubItemHtml",value:function(e,t,l){return $('<div class="list-group-item sub-tab-item"><h5 class="list-group-item-heading" style="font-weight:bold;">'+e[2]+t+l+'</h5><p class="list-group-item-text">'+nl2br(e[3])+"</p></div>")}}]),t}(),c=function(e){function t(){return s(this,t),r(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,o.default),a(t,[{key:"getDataMapping",value:function(){return["id","employee","education_id","institute","date_start","date_end"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Qualification"},{sTitle:"Institute"},{sTitle:"Start Date"},{sTitle:"Completed On"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"hidden"}],["education_id",{label:"Qualification",type:"select2","allow-null":!1,"remote-source":["Education","id","name"]}],["institute",{label:"Institute",type:"text",validation:""}],["date_start",{label:"Start Date",type:"date",validation:"none"}],["date_end",{label:"Completed On",type:"date",validation:"none"}]]}},{key:"forceInjectValuesBeforeSave",value:function(e){return e.employee=this.parent.currentId,e}},{key:"getSubHeaderTitle",value:function(){return'<button class="btn btn-small btn-success" onclick="modJs.subModJsList[\'tab'+this.tab+'\'].renderForm();" style="margin-right:10px;"><i class="fa fa-plus"></i></button>Line truncated
|
||||
//# sourceMappingURL=employees.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var d=a[n]={exports:{}};t[n][0].call(d.exports,function(e){return i(t[n][1][e]||e)},d,d.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.FieldNameAdapter=l.FieldNameAdapter,window.CustomFieldAdapter=l.CustomFieldAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("../../../api/AdapterBase")),r=n(e("../../../api/CustomFieldAdapter"));function n(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","name","textOrig","textMapped","display"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Original Text"},{sTitle:"Mapped Text"},{sTitle:"Display Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["type",{label:"Type",type:"placeholder",validation:""}],["name",{label:"Name",type:"placeholder",validation:""}],["textOrig",{label:"Original Text",type:"placeholder",validation:""}],["textMapped",{label:"Mapped Text",type:"text",validation:""}],["display",{label:"Display Status",type:"select",source:[["Form","Show"],["Hidden","Hidden"]]}]]}}]),t}();t.exports={FieldNameAdapter:o,CustomFieldAdapter:r.default}},{"../../../api/AdapterBase":4,"../../../api/CustomFieldAdapter":5}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status)return null;var a=JSON.stringify(t);return localStorage.setItem(e,a),a}}]),e}();a.default=i},{}],4:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("./ModuleBase")),r=n(e("../api-common/RequestCache"));function n(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(e,a,l,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.moduleRelativeURL=null,r.tableData=[],r.sourceData=[],r.filter=null,r.origFilter=null,r.orderBy=null,r.currentElement=null,r.initAdapter(e,a,l,i),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeLine truncated
|
||||
//# sourceMappingURL=fieldnames.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.JobTitleAdapter=l.JobTitleAdapter,window.PayGradeAdapter=l.PayGradeAdapter,window.EmploymentStatusAdapter=l.EmploymentStatusAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","code","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Code"},{sTitle:"Name"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["code",{label:"Job Title Code",type:"text"}],["name",{label:"Job Title",type:"text"}],["description",{label:"Description",type:"textarea"}],["specification",{label:"Specification",type:"textarea"}]]}},{key:"getHelpLink",value:function(){return"http://blog.icehrm.com/docs/jobdetails/"}}]),t}(),d=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","currency","min_salary","max_salary"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Currency"},{sTitle:"Min Salary"},{sTitle:"Max Salary"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Pay Grade Name",type:"text"}],["currency",{label:"Currency",type:"select2","remote-source":["CurrencyType","code","name"]}],["min_salary",{label:"Min Salary",type:"text",validation:"float"}],["max_salary",{label:"Max Salary",type:"text",validation:"float"}]]}},{key:"doCustomValidation",value:function(e){try{if(parseFloat(e.min_salary)>parseFloat(e.max_salary))return"Min Salary should be smaller than Max Salary"}catch(e){}return null}}]),t}(),h=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID"},{sTitle:"Name"},{sTitle:"Description"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Employment Status",type:"text"}],["description",{label:"Description",type:"textarea",validation:""}]]}}]),t}();t.exports={JobTitleAdapter:c,PayGradeAdapter:d,EmploymentStatusAdapter:h}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status)return null;var a=JSON.stringify(t);return localSLine truncated
|
||||
//# sourceMappingURL=jobs.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.CompanyLoanAdapter=l.CompanyLoanAdapter,window.EmployeeCompanyLoanAdapter=l.EmployeeCompanyLoanAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","details"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}],["details",{label:"Details",type:"textarea",validation:"none"}]]}}]),t}(),d=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","employee","loan","start_date","period_months","currency","amount","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Loan Type"},{sTitle:"Loan Start Date"},{sTitle:"Loan Period (Months)"},{sTitle:"Currency"},{sTitle:"Amount"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"select2","remote-source":["Employee","id","first_name+last_name"]}],["loan",{label:"Loan Type",type:"select","remote-source":["CompanyLoan","id","name"]}],["start_date",{label:"Loan Start Date",type:"date",validation:""}],["last_installment_date",{label:"Last Installment Date",type:"date",validation:"none"}],["period_months",{label:"Loan Period (Months)",type:"text",validation:"number"}],["currency",{label:"Currency",type:"select2","remote-source":["CurrencyType","id","name"]}],["amount",{label:"Loan Amount",type:"text",validation:"float"}],["monthly_installment",{label:"Monthly Installment",type:"text",validation:"float"}],["status",{label:"Status",type:"select",source:[["Approved","Approved"],["Paid","Paid"],["Suspended","Suspended"]]}],["details",{label:"Details",type:"textarea",validation:"none"}]]}},{key:"getFilters",value:function(){return[["employee",{label:"Employee",type:"select2","allow-null":!0,"null-label":"All Employees","remote-source":["Employee","id","first_name+last_name"]}],["loan",{label:"Loan Type",type:"select","allow-null":!0,"null-label":"All Loan Types","remote-source":["CompanyLoan","id","name"]}]]}}]),t}();t.exports={CompanyLoanAdapter:c,EmployeeCompanyLoanAdapter:d}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;ifLine truncated
|
||||
//# sourceMappingURL=loans.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.CountryAdapter=l.CountryAdapter,window.ProvinceAdapter=l.ProvinceAdapter,window.CurrencyTypeAdapter=l.CurrencyTypeAdapter,window.NationalityAdapter=l.NationalityAdapter,window.ImmigrationStatusAdapter=l.ImmigrationStatusAdapter,window.EthnicityAdapter=l.EthnicityAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("../../../api/AdapterBase")),r=n(e("../../../api/IdNameAdapter"));function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","code","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Code"},{sTitle:"Name"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["code",{label:"Code",type:"text",validation:""}],["name",{label:"Name",type:"text",validation:""}]]}}]),t}(),d=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","code","name","country"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Code"},{sTitle:"Name"},{sTitle:"Country"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["code",{label:"Code",type:"text",validation:""}],["name",{label:"Name",type:"text",validation:""}],["country",{label:"Country",type:"select2","remote-source":["Country","code","name"]}]]}},{key:"getFilters",value:function(){return[["country",{label:"Country",type:"select2","remote-source":["Country","code","name"]}]]}}]),t}(),h=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","code","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Code"},{sTitle:"Name"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["code",{label:"Code",type:"text",validation:""}],["name",{label:"Name",type:"text",validation:""}]]}}]),t}(),f=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,r.default),t}(),p=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,r.default),t}(),v=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,r.default),t}();t.exports={CountryAdapter:c,ProvinceAdapter:d,CurrencyTypeAdapter:h,NationalityAdapter:f,ImmigrationStatusAdapter:p,EthnicityAdapter:v}},{"../../../api/AdapterBase":4,"../../../api/IdNameAdapter":6}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return voiLine truncated
|
||||
//# sourceMappingURL=metadata.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.ModuleAdapter=l.ModuleAdapter,window.UsageAdapter=l.UsageAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","label","menu","mod_group","mod_order","status","version","update_path"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Menu",bVisible:!1},{sTitle:"Group"},{sTitle:"Order"},{sTitle:"Status"},{sTitle:"Version",bVisible:!1},{sTitle:"Path",bVisible:!1}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["label",{label:"Label",type:"text",validation:""}],["status",{label:"Status",type:"select",source:[["Enabled","Enabled"],["Disabled","Disabled"]]}],["user_levels",{label:"User Levels",type:"select2multi",source:[["Admin","Admin"],["Manager","Manager"],["Employee","Employee"],["Other","Other"]]}],["user_roles",{label:"User Roles",type:"select2multi","remote-source":["UserRole","id","name"]}]]}},{key:"getActionButtonsHtml",value:function(e,t){var a={"admin_Company Structure":1,admin_Employees:1,"admin_Job Details Setup":1,admin_Leaves:1,"admin_Manage Modules":1,admin_Projects:1,admin_Qualifications:1,admin_Settings:1,admin_Users:1,admin_Upgrade:1,admin_Dashboard:1,"user_Basic Information":1,user_Dashboard:1};if(1===a[t[3]+"_"+t[1]])return"";var l='<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"/></div>';return l=(l=l.replace(/_id_/g,e)).replace(/_BASE_/g,this.baseUrl)}}]),t}(),d=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return[]}},{key:"getHeaders",value:function(){return[]}},{key:"getFormFields",value:function(){return[]}},{key:"get",value:function(e){}},{key:"saveUsage",value:function(){var e={},t=[];if($(".module-check").each(function(){$(this).is(":checked")&&t.push($(this).val())}),0!==t.length){e.groups=t.join(",");var a=JSON.stringify(e),l=[];l.callBackData=[],l.callBackSuccess="getInitDataSuccessCallBack",l.callBackFail="getInitDataFailCallBack",this.customAction("saveUsage","admin=modules",a,l)}else alert("Please select one or more module groups")}},{key:"saveUsageSuccessCallBack",value:function(e){}},{key:"saveUsageFailCallBack",value:function(e){}}]),t}();t.exports={ModuleAdapter:c,UsageAdapter:d}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:Line truncated
|
||||
//# sourceMappingURL=modules.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.OvertimeCategoryAdapter=l.OvertimeCategoryAdapter,window.EmployeeOvertimeAdminAdapter=l.EmployeeOvertimeAdminAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("../../../api/AdapterBase")),r=n(e("../../../api/ApproveAdminAdapter"));function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}]]}}]),t}(),d=function(e){function t(e,a,l,i){s(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a,l,i));return r.itemName="OvertimeRequest",r.itemNameLower="overtimerequest",r.modulePathName="overtime",r}return u(t,r.default),l(t,[{key:"getDataMapping",value:function(){return["id","employee","category","start_time","end_time","project","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Category"},{sTitle:"Start Time"},{sTitle:"End Time"},{sTitle:"Project"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"select2",sort:"none","allow-null":!1,"remote-source":["Employee","id","first_name+last_name","getActiveSubordinateEmployees"]}],["category",{label:"Category",type:"select2","allow-null":!1,"remote-source":["OvertimeCategory","id","name"]}],["start_time",{label:"Start Time",type:"datetime",validation:""}],["end_time",{label:"End Time",type:"datetime",validation:""}],["project",{label:"Project",type:"select2","allow-null":!0,"null=label":"none","remote-source":["Project","id","name"]}],["notes",{label:"Notes",type:"textarea",validation:"none"}]]}}]),t}();t.exports={OvertimeCategoryAdapter:c,EmployeeOvertimeAdminAdapter:d}},{"../../../api/AdapterBase":4,"../../../api/ApproveAdminAdapter":5}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status)return null;var a=JSON.stringify(t);return localStorage.setItem(e,a),a}}]),e}();a.default=i},{}],4:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("./ModuleBase")),r=n(eLine truncated
|
||||
//# sourceMappingURL=overtime.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(o,r){if(!a[o]){if(!t[o]){var s="function"==typeof require&&require;if(!r&&s)return s(o,!0);if(n)return n(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var d=a[o]={exports:{}};t[o][0].call(d.exports,function(e){return i(t[o][1][e]||e)},d,d.exports,e,t,a,l)}return a[o].exports}for(var n="function"==typeof require&&require,o=0;o<l.length;o++)i(l[o]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.PaydayAdapter=l.PaydayAdapter,window.PayrollAdapter=l.PayrollAdapter,window.PayrollDataAdapter=l.PayrollDataAdapter,window.PayrollColumnAdapter=l.PayrollColumnAdapter,window.PayrollColumnTemplateAdapter=l.PayrollColumnTemplateAdapter,window.PayrollEmployeeAdapter=l.PayrollEmployeeAdapter,window.DeductionAdapter=l.DeductionAdapter,window.DeductionGroupAdapter=l.DeductionGroupAdapter,window.PayslipTemplateAdapter=l.PayslipTemplateAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=function e(t,a,l){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,a);if(void 0===i){var n=Object.getPrototypeOf(t);return null===n?void 0:e(n,a,l)}if("value"in i)return i.value;var o=i.get;return void 0!==o?o.call(l):void 0},n=r(e("../../../api/AdapterBase")),o=r(e("../../../api/TableEditAdapter"));function r(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function d(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return d(t,n.default),l(t,[{key:"getDataMapping",value:function(){return["id","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Select Pay Frequency"}]}},{key:"getFormFields",value:function(){return[["name",{label:"Name",type:"text",validation:""}]]}},{key:"getAddNewLabel",value:function(){return"Run Payroll"}},{key:"createTable",value:function(e){$("#payday_all").off(),i(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"createTable",this).call(this,e),$("#payday_all").off().on("click",function(){$(this).is(":checked")?$(".paydayCheck").prop("checked",!0):$(".paydayCheck").prop("checked",!1)})}},{key:"getActionButtonsHtml",value:function(e,t){var a='<div style="width:120px;">_edit_</div>';return a=(a=(a=a.replace("_edit_",'<input type="checkbox" class="paydayCheck" id="payday__id_" name="payday__id_" value="checkbox_payday__id_"/>')).replace(/_id_/g,e)).replace(/_BASE_/g,this.baseUrl)}},{key:"getActionButtonHeader",value:function(){return{sTitle:'<input type="checkbox" id="payday_all" name="payday_all" value="checkbox_payday_all"/>',sClass:"center"}}}]),t}(),p=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return d(t,n.default),l(t,[{key:"getDataMapping",value:function(){return["id","name","pay_period","department","date_start","date_end","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Pay Frequency"},{sTitle:"Department"},{sTitle:"Date Start"},{sTitle:"Date End"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["pay_period",{label:"Pay Frequency",type:"select","remote-source":["PayFrequency","id","name"],sort:"none"}],["deduction_group",{label:"Calculation Group",type:"select","remote-source":["DeductionGroup","id","name"],sort:"none"}],["payslipTemplate",{label:"Payslip Template",type:"select","remote-source":["PayslipTemplate","id","name"]}],["department",{label:"Department",type:"select2","remote-source":["CompanyStructure","id","title"],sort:"none"}],["date_start",{label:"Start Date",type:"date",validation:""}],["date_end",{label:"End Date",type:"date",validation:""}],["columns",{label:"Payroll Columns",type:"select2multi","remote-source":["PayrollColumn","id","name"]}],["status",{label:"Status",type:"select",source:[["Draft","Draft"],["Completed","Completed"]],sort:"none"}]]}},{key:"postRenderForm",value:function(e,t){null!=e&&void 0!==e&&void 0!==e.id&&null!=e.id&&(t.find("#pay_period").attr("disabled","disabled"),t.find("#department").attr("disabled","disabled"))}},{key:"process",vaLine truncated
|
||||
//# sourceMappingURL=payroll.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.PermissionAdapter=l.PermissionAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","user_level","module_id","permission","value"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"User Level"},{sTitle:"Module"},{sTitle:"Permission"},{sTitle:"Value"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["user_level",{label:"User Level",type:"placeholder",validation:"none"}],["module_id",{label:"Module",type:"placeholder","remote-source":["Module","id","menu+name"]}],["permission",{label:"Permission",type:"placeholder",validation:"none"}],["value",{label:"Value",type:"text",validation:"none"}]]}},{key:"getFilters",value:function(){return[["module_id",{label:"Module",type:"select2","allow-null":!0,"null-label":"All Modules","remote-source":["Module","id","menu+name"]}]]}},{key:"getActionButtonsHtml",value:function(e,t){var a='<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img></div>';return a=(a=a.replace(/_id_/g,e)).replace(/_BASE_/g,this.baseUrl)}},{key:"getMetaFieldForRendering",value:function(e){return"value"===e?"meta":""}},{key:"fillForm",value:function(e){(function e(t,a,l){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,a);if(void 0===i){var r=Object.getPrototypeOf(t);return null===r?void 0:e(r,a,l)}if("value"in i)return i.value;var n=i.get;return void 0!==n?n.call(l):void 0})(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"fillForm",this).call(this,e),$("#helptext").html(e.description)}}]),t}();t.exports={PermissionAdapter:s}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status)return null;var a=JSON.stringify(t);return localStorage.setItem(e,a),a}}]),e}();a.default=i},{}],4:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=n(e("./ModuleBase")),r=n(e("../api-common/RequestCache"));function n(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(e,a,l,Line truncated
|
||||
//# sourceMappingURL=permissions.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.ClientAdapter=l.ClientAdapter,window.ProjectAdapter=l.ProjectAdapter,window.EmployeeProjectAdapter=l.EmployeeProjectAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","details","address","contact_number"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Details"},{sTitle:"Address"},{sTitle:"Contact Number"}]}},{key:"getFormFields",value:function(){return this.showSave?[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["details",{label:"Details",type:"textarea",validation:"none"}],["address",{label:"Address",type:"textarea",validation:"none"}],["contact_number",{label:"Contact Number",type:"text",validation:"none"}],["contact_email",{label:"Contact Email",type:"text",validation:"none"}],["company_url",{label:"Company Url",type:"text",validation:"none"}],["status",{label:"Status",type:"select",source:[["Active","Active"],["Inactive","Inactive"]]}],["first_contact_date",{label:"First Contact Date",type:"date",validation:"none"}]]:[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"placeholder"}],["details",{label:"Details",type:"placeholder",validation:"none"}],["address",{label:"Address",type:"placeholder",validation:"none"}],["contact_number",{label:"Contact Number",type:"placeholder",validation:"none"}],["contact_email",{label:"Contact Email",type:"placeholder",validation:"none"}],["company_url",{label:"Company Url",type:"placeholder",validation:"none"}],["status",{label:"Status",type:"placeholder",source:[["Active","Active"],["Inactive","Inactive"]]}],["first_contact_date",{label:"First Contact Date",type:"placeholder",validation:"none"}]]}},{key:"getHelpLink",value:function(){return"http://blog.icehrm.com/docs/projects/"}}]),t}(),d=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","client"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Client"}]}},{key:"getFormFields",value:function(){return this.showSave?[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["client",{label:"Client",type:"select2","allow-null":!0,"remote-source":["Client","id","name"]}],["details",{label:"Details",type:"textarea",validation:"none"}],["status",{label:"Status",type:"select",source:[["Active","Active"],["On Hold","On Hold"],["Completed","Completed"],["Dropped","Dropped"]]}]]:[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"placeholder"}],["client",{label:"Client",type:"placeholder","allow-null":!0,"remote-source":["Client","id","name"]}],["details",{label:"Details",type:"placeholder",validation:"none"}],["status",{label:"Status",type:"select",source:[["Active","Active"],["On Hold","On Hold"],["Completed","Completed"],["Dropped","Dropped"]]}]]}},{key:"getHelpLink",value:function(){return"http://blog.icehrm.com/docs/projects/"}}]),t}(),h=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","employee","project"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Project"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Line truncated
|
||||
//# sourceMappingURL=projects.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.SkillAdapter=l.SkillAdapter,window.EducationAdapter=l.EducationAdapter,window.CertificationAdapter=l.CertificationAdapter,window.LanguageAdapter=l.LanguageAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Description"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["description",{label:"Description",type:"textarea",validation:""}]]}},{key:"getHelpLink",value:function(){return"http://blog.icehrm.com/docs/qualifications/"}}]),t}(),d=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Description"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["description",{label:"Description",type:"textarea",validation:""}]]}}]),t}(),h=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Description"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["description",{label:"Description",type:"textarea",validation:""}]]}}]),t}(),f=function(e){function t(){return s(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Description"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text"}],["description",{label:"Description",type:"textarea",validation:""}]]}}]),t}();t.exports={SkillAdapter:c,EducationAdapter:d,CertificationAdapter:h,LanguageAdapter:f}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.statuLine truncated
|
||||
//# sourceMappingURL=qualifications.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,s){if(!a[n]){if(!t[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var d=a[n]={exports:{}};t[n][0].call(d.exports,function(e){return i(t[n][1][e]||e)},d,d.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.ReportAdapter=l.ReportAdapter,window.ReportGenAdapter=l.ReportGenAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var d=function(e){function t(e,a,l,i){s(this,t);var r=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a,l,i));return r._construct(),r}return u(t,n.default),i(t,[{key:"_construct",value:function(){this._formFileds=[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"label",validation:""}],["parameters",{label:"Parameters",type:"fieldset",validation:"none"}]],this.remoteFieldsExists=!1}},{key:"_initLocalFormFields",value:function(){this._formFileds=[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"label",validation:""}],["parameters",{label:"Parameters",type:"fieldset",validation:"none"}]]}},{key:"setRemoteFieldExists",value:function(e){this.remoteFieldsExists=e}},{key:"getDataMapping",value:function(){return["id","icon","name","details","parameters"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"",bSortable:!1,sWidth:"22px"},{sTitle:"Name",sWidth:"30%"},{sTitle:"Details"},{sTitle:"Parameters",bVisible:!1}]}},{key:"getFormFields",value:function(){return this._formFileds}},{key:"processFormFieldsWithObject",value:function(e){var t=this;this._initLocalFormFields();var a=this._formFileds.length,l=[];this.remoteFieldsExists=!1;for(var i=0;i<a;i++)if("fieldset"===this._formFileds[i][1].type){var r=JSON.parse(e[this._formFileds[i][0]]);l.push(this._formFileds[i][0]),r.forEach(function(e){t._formFileds.push(e),void 0!==e[1]["remote-source"]&&null!=e[1]["remote-source"]&&(t.remoteFieldsExists=!0)})}var n=[];t._formFileds.forEach(function(e){jQuery.inArray(e[0],l)<0&&n.push(e)}),t._formFileds=n}},{key:"renderForm",value:function(e){var t=this;if(this.processFormFieldsWithObject(e),this.remoteFieldsExists){this.initFieldMasterData(function(){t.renderFormNew(e)})}else this.initFieldMasterData(),t.renderFormNew(e);this.currentReport=e}},{key:"renderFormNew",value:function(e){var t=[];null!=e&&void 0!==e||(this.currentId=null),this.preRenderForm(e);for(var a=this.templates.formTemplate,l="",i=this.getFormFields(),r=0;r<i.length;r++){var n=this.getMetaFieldForRendering(i[r][0]);if(""===n||void 0===n)l+=this.renderFormField(i[r]);else{var s=e[n];""!==s&&null!=s&&void 0!==s&&""!==s.trim()?l+=this.renderFormField(JSON.parse(s)):l+=this.renderFormField(i[r])}}a=(a=a.replace(/_id_/g,this.getTableName()+"_submit")).replace(/_fields_/g,l);var o=void 0,u=this.generateRandom(14);this.showFormOnPopup?(o=$('<div class="reviewBlock popupForm" data-content="Form"></div>')).attr("id",u):o=$("#"+this.getTableName()+"Form"),o.html(a),o.find(".datefield").datepicker({viewMode:2}),o.find(".timefield").datetimepicker({language:"en",pickDate:!1}),o.find(".datetimefield").datetimepicker({language:"en"}),o.find(".colorpick").colorpicker(),o.find(".select2Field").each(function(){$(this).select2().select2("val",$(this).find("option:eq(0)").val())}),o.find(".select2Multi").each(function(){$(this).select2().on("change",function(e){var t=$(this).parents(".row"),a=t.find(".select2-choices").height();t.height(parseInt(a,10))})}),o.find(".signatureField").each(function(){t.push($(this).attr("id"))});for(var d=0;d<i.length;d++)"datagroup"===i[d][1].type&&o.find("#"+i[d][0]).data("field",i[d]);if(!1===this.showSave?o.find(".saveBtn").remove():(o.find(".saveBtn").off(),o.find(".saveBtn").data("modJs",this),o.find(".saveBtn").on("click",function(){return null!=$(this).data("modJs").saveSuccessItemCallback&&void 0!==$(this).data("modJs").saveSuccessItemCallback?$(this).data("modJs").save($(this).data("mLine truncated
|
||||
//# sourceMappingURL=reports.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.SalaryComponentTypeAdapter=l.SalaryComponentTypeAdapter,window.SalaryComponentAdapter=l.SalaryComponentAdapter,window.EmployeeSalaryAdapter=l.EmployeeSalaryAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=e("../../../api/AdapterBase"),n=(l=r)&&l.__esModule?l:{default:l};function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","code","name"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Code"},{sTitle:"Name"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["code",{label:"Code",type:"text",validation:""}],["name",{label:"Name",type:"text",validation:""}]]}}]),t}(),d=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","componentType","details"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Salary Component Type"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}],["componentType",{label:"Salary Component Type",type:"select2","remote-source":["SalaryComponentType","id","name"]}],["details",{label:"Details",type:"textarea",validation:"none"}]]}}]),t}(),h=function(e){function t(){return o(this,t),s(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,n.default),i(t,[{key:"getDataMapping",value:function(){return["id","employee","component","amount","details"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Salary Component"},{sTitle:"Amount"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"select2","remote-source":["Employee","id","first_name+last_name"]}],["component",{label:"Salary Component",type:"select2","remote-source":["SalaryComponent","id","name"]}],["amount",{label:"Amount",type:"text",validation:"float"}],["details",{label:"Details",type:"textarea",validation:"none"}]]}},{key:"getFilters",value:function(){return[["employee",{label:"Employee",type:"select2","remote-source":["Employee","id","first_name+last_name"]}]]}}]),t}();t.exports={SalaryComponentTypeAdapter:c,SalaryComponentAdapter:d,EmployeeSalaryAdapter:h}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)return null;var a=localStorage.getItem(e);return void 0!==a&&null!=a&&""!==a?void 0===(t=JSON.parse(a))||null==t?null:void 0!==t.status&&null!=t.status&&"SUCCESS"!==t.status?null:t:null}},{key:"setData",value:function(e,t){if("undefined"==typeof Storage)return null;if(void 0!==t.status&&null!=t.status&&"SUCCESS"Line truncated
|
||||
//# sourceMappingURL=salary.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.SettingAdapter=l.SettingAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l,i=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),r=function e(t,a,l){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,a);if(void 0===i){var r=Object.getPrototypeOf(t);return null===r?void 0:e(r,a,l)}if("value"in i)return i.value;var n=i.get;return void 0!==n?n.call(l):void 0},n=e("../../../api/AdapterBase"),o=(l=n)&&l.__esModule?l:{default:l};var s=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.default),i(t,[{key:"getDataMapping",value:function(){return["id","name","value","description"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Value"},{sTitle:"Details"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["value",{label:"Value",type:"text",validation:"none"}]]}},{key:"getActionButtonsHtml",value:function(e,t){var a='<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img></div>';return a=(a=a.replace(/_id_/g,e)).replace(/_BASE_/g,this.baseUrl)}},{key:"getMetaFieldForRendering",value:function(e){return"value"===e?"meta":""}},{key:"edit",value:function(e){this.loadRemoteDataForSettings(),r(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"edit",this).call(this,e)}},{key:"fillForm",value:function(e){var a=e[this.getMetaFieldForRendering("value")],l=null;""!==a&&void 0!==a&&(l=[["id",{label:"ID",type:"hidden"}],JSON.parse(a)]),r(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"fillForm",this).call(this,e,null,l),$("#helptext").html(e.description)}},{key:"loadRemoteDataForSettings",value:function(){var e=[],t=null;for(var a in e.push(["country",{label:"Country",type:"select2multi","remote-source":["Country","id","name"]}]),e.push(["countryCompany",{label:"Country",type:"select2","remote-source":["Country","code","name"]}]),e.push(["currency",{label:"Currency",type:"select2multi","remote-source":["CurrencyType","id","code+name"]}]),e.push(["nationality",{label:"Nationality",type:"select2multi","remote-source":["Nationality","id","name"]}]),e.push(["supportedLanguage",{label:"Value",type:"select2","allow-null":!1,"remote-source":["SupportedLanguage","name","description"]}]),e)if(void 0!==(t=e[a])[1]["remote-source"]&&null!==t[1]["remote-source"]){var l=t[1]["remote-source"][0]+"_"+t[1]["remote-source"][1]+"_"+t[1]["remote-source"][2];this.fieldMasterDataKeys[l]=!1,this.sourceMapping[t[0]]=t[1]["remote-source"];var i={callBack:"initFieldMasterDataResponse"};i.callBackData=[l],this.getFieldValues(t[1]["remote-source"],i)}}},{key:"getHelpLink",value:function(){return"http://blog.icehrm.com/docs/settings/"}}]),t}();t.exports={SettingAdapter:s}},{"../../../api/AdapterBase":4}],3:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return l(e,[{key:"getKey",value:function(e,t){var a=e+"|";for(var l in t)a+=l+"="+t[l]+"|";return a}},{key:"invalidateTable",value:function(e){for(var t=void 0,a=0;a<localStorage.length;a++)(t=localStorage.key(a)).indexOf("t="+e)>0&&localStorage.removeItem(t)}},{key:"getData",value:function(e){var t=void 0;if("undefined"==typeof Storage)returnLine truncated
|
||||
//# sourceMappingURL=settings.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(n,o){if(!a[n]){if(!t[n]){var s="function"==typeof require&&require;if(!o&&s)return s(n,!0);if(r)return r(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[n]={exports:{}};t[n][0].call(c.exports,function(e){return i(t[n][1][e]||e)},c,c.exports,e,t,a,l)}return a[n].exports}for(var r="function"==typeof require&&require,n=0;n<l.length;n++)i(l[n]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.ImmigrationDocumentAdapter=l.ImmigrationDocumentAdapter,window.EmployeeImmigrationAdapter=l.EmployeeImmigrationAdapter,window.EmployeeTravelRecordAdminAdapter=l.EmployeeTravelRecordAdminAdapter,window.CustomFieldAdapter=l.CustomFieldAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=o(e("../../../api/AdapterBase")),r=o(e("../../../api/CustomFieldAdapter")),n=o(e("../../../api/ApproveAdminAdapter"));function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var d=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return c(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","name","details","required","alert_on_missing","alert_before_expiry"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Name"},{sTitle:"Details"},{sTitle:"Compulsory"},{sTitle:"Alert If Not Found"},{sTitle:"Alert Before Expiry"}]}},{key:"getFormFields",value:function(){for(var e=[["id",{label:"ID",type:"hidden"}],["name",{label:"Name",type:"text",validation:""}],["details",{label:"Details",type:"textarea",validation:"none"}],["required",{label:"Compulsory",type:"select",source:[["No","No"],["Yes","Yes"]]}],["alert_on_missing",{label:"Alert If Not Found",type:"select",source:[["No","No"],["Yes","Yes"]]}],["alert_before_expiry",{label:"Alert Before Expiry",type:"select",source:[["No","No"],["Yes","Yes"]]}],["alert_before_day_number",{label:"Days for Expiry Alert",type:"text",validation:""}]],t=0;t<this.customFields.length;t++)e.push(this.customFields[t]);return e}}]),t}(),h=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return c(t,i.default),l(t,[{key:"getDataMapping",value:function(){return["id","employee","document","documentname","valid_until","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Document"},{sTitle:"Document Id"},{sTitle:"Valid Until"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden"}],["employee",{label:"Employee",type:"select2","remote-source":["Employee","id","first_name+last_name"]}],["document",{label:"Document",type:"select2","remote-source":["ImmigrationDocument","id","name"]}],["documentname",{label:"Document Id",type:"text",validation:""}],["valid_until",{label:"Valid Until",type:"date",validation:"none"}],["status",{label:"Status",type:"select",source:[["Active","Active"],["Inactive","Inactive"],["Draft","Draft"]]}],["details",{label:"Details",type:"textarea",validation:"none"}],["attachment1",{label:"Attachment 1",type:"fileupload",validation:"none"}],["attachment2",{label:"Attachment 2",type:"fileupload",validation:"none"}],["attachment3",{label:"Attachment 3",type:"fileupload",validation:"none"}]]}},{key:"getFilters",value:function(){return[["employee",{label:"Employee",type:"select2","remote-source":["Employee","id","first_name+last_name"]}]]}}]),t}(),f=function(e){function t(e,a,l,i){s(this,t);var r=u(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a,l,i));return r.itemName="TravelRequest",r.itemNameLower="travelrequest",r.modulePathName="travel",r}return c(t,n.default),l(t,[{key:"getDataMapping",value:function(){return["id","employee","type","purpose","travel_from","travel_to","travel_date","status"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID",bVisible:!1},{sTitle:"Employee"},{sTitle:"Travel Type"},{sTitle:"Purpose"},{sTitle:"From"},{sTitle:"To"},{sTitle:"Travel Date"},{sTitle:"Status"}]}},{key:"getFormFields",value:function(){return this.addCustomFields([["id",{label:"ID",type:"hidden"}],["employee",{label:"EmploLine truncated
|
||||
//# sourceMappingURL=travel.js.map
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
!function(){return function e(t,a,l){function i(s,n){if(!a[s]){if(!t[s]){var o="function"==typeof require&&require;if(!n&&o)return o(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=a[s]={exports:{}};t[s][0].call(c.exports,function(e){return i(t[s][1][e]||e)},c,c.exports,e,t,a,l)}return a[s].exports}for(var r="function"==typeof require&&require,s=0;s<l.length;s++)i(l[s]);return i}}()({1:[function(e,t,a){"use strict";var l=e("./lib");window.UserAdapter=l.UserAdapter,window.UserRoleAdapter=l.UserRoleAdapter},{"./lib":2}],2:[function(e,t,a){"use strict";var l=function(){function e(e,t){for(var a=0;a<t.length;a++){var l=t[a];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}return function(t,a,l){return a&&e(t.prototype,a),l&&e(t,l),t}}(),i=s(e("../../../api/FormValidation")),r=s(e("../../../api/AdapterBase"));function s(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var c=function(e){function t(){return n(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return u(t,r.default),l(t,[{key:"getDataMapping",value:function(){return["id","username","email","employee","user_level"]}},{key:"getHeaders",value:function(){return[{sTitle:"ID"},{sTitle:"User Name"},{sTitle:"Authentication Email"},{sTitle:"Employee"},{sTitle:"User Level"}]}},{key:"getFormFields",value:function(){return[["id",{label:"ID",type:"hidden",validation:""}],["username",{label:"User Name",type:"text",validation:"username"}],["email",{label:"Email",type:"text",validation:"email"}],["employee",{label:"Employee",type:"select2","allow-null":!0,"remote-source":["Employee","id","first_name+last_name"]}],["user_level",{label:"User Level",type:"select",source:[["Admin","Admin"],["Manager","Manager"],["Employee","Employee"],["Other","Other"]]}],["user_roles",{label:"User Roles",type:"select2multi","remote-source":["UserRole","id","name"]}],["lang",{label:"Language",type:"select2","allow-null":!0,"remote-source":["SupportedLanguage","id","description"]}],["default_module",{label:"Default Module",type:"select2","null-label":"No Default Module","allow-null":!0,"remote-source":["Module","id","menu+label"]}]]}},{key:"postRenderForm",value:function(e,t){null!=e&&void 0!==e||t.find("#changePasswordBtn").remove()}},{key:"changePassword",value:function(){$("#adminUsersModel").modal("show"),$("#adminUsersChangePwd #newpwd").val(""),$("#adminUsersChangePwd #conpwd").val("")}},{key:"saveUserSuccessCallBack",value:function(e,t){var a=e[0];e[1]?this.showMessage("Create User","An email has been sent to "+a.email+" with a temporary password to login to IceHrm."):this.showMessage("Create User","User created successfully. But there was a problem sending welcome email."),this.get([])}},{key:"saveUserFailCallBack",value:function(e,t){this.showMessage("Error",e)}},{key:"doCustomValidation",value:function(e){var t=null;return"Admin"!==e.user_level&&"Other"!==e.user_level&&"NULL"===e.employee&&(t="For this user type, you have to assign an employee when adding or editing the user.<br/>",t+=" You may create a new employee through 'Admin'->'Employees' menu"),t}},{key:"save",value:function(){var e=new i.default(this.getTableName()+"_submit",!0,{ShowPopup:!1,LabelErrorClass:"error"});if(e.checkValues()){var t=e.getFormParameters(),a=this.doCustomValidation(t);if(null==a){var l=$("#"+this.getTableName()+"_submit #id").val();if(t.csrf=$("#"+this.getTableName()+"Form").data("csrf"),null!=l&&void 0!==l&&""!==l)t.id=l,this.add(t,[]);else{var r=JSON.stringify(t),s=[];s.callBackData=[],s.callBackSuccess="saveUserSuccessCallBack",s.callBackFail="saveUserFailCallBack",this.customAction("saveUser","admin=users",r,s)}}else this.showMessage("Error Saving User",a)}}},{key:"changePasswordConfirm",value:function(){$("#adminUsersChangePwd_error").hide();var e=$("#adminUsersChangePwd #newpwd").val();if(!(e.length>7))return $("#adminUsersChangePwd_error").html("Password should be longer than 7 characters"),void $("#adminUsersChangePwd_error").show();var t=$("#adminUsersChangePwd #conpwd").val();if(t!==e)return $("#adminUsersChangePwd_error").html("Passwords don't match"),void $("#adminUsersChangePwd_error").show();var a={id:this.currentId,pwd:t},l=JSON.stringify(a),i=[];i.callBackData=[],i.callBackSuccess="changePasswordSuccessCallBack",i.callBackFail="changePasswordFailCallBack",this.customAction("cLine truncated
|
||||
//# sourceMappingURL=users.js.map
|
||||
@@ -0,0 +1,4 @@
|
||||
import { AttendanceAdapter, AttendanceStatusAdapter } from './lib';
|
||||
|
||||
window.AttendanceAdapter = AttendanceAdapter;
|
||||
window.AttendanceStatusAdapter = AttendanceStatusAdapter;
|
||||
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import FormValidation from '../../../api/FormValidation';
|
||||
|
||||
class AttendanceAdapter extends AdapterBase {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this.photoAttendance = false;
|
||||
}
|
||||
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'in_time',
|
||||
'out_time',
|
||||
'note',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Time-In' },
|
||||
{ sTitle: 'Time-Out' },
|
||||
{ sTitle: 'Note' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['employee', {
|
||||
label: 'Employee', type: 'select2', 'allow-null': false, 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['in_time', { label: 'Time-In', type: 'datetime' }],
|
||||
['out_time', { label: 'Time-Out', type: 'datetime', validation: 'none' }],
|
||||
['note', { label: 'Note', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', {
|
||||
label: 'Employee', type: 'select2', 'allow-null': false, 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
setPhotoAttendance(val) {
|
||||
this.photoAttendance = parseInt(val, 10);
|
||||
}
|
||||
|
||||
|
||||
getCustomTableParams() {
|
||||
const that = this;
|
||||
const dataTableParams = {
|
||||
aoColumnDefs: [
|
||||
{
|
||||
fnRender(data, cell) {
|
||||
return that.preProcessRemoteTableData(data, cell, 2);
|
||||
},
|
||||
aTargets: [2],
|
||||
},
|
||||
{
|
||||
fnRender(data, cell) {
|
||||
return that.preProcessRemoteTableData(data, cell, 3);
|
||||
},
|
||||
aTargets: [3],
|
||||
},
|
||||
{
|
||||
fnRender(data, cell) {
|
||||
return that.preProcessRemoteTableData(data, cell, 4);
|
||||
},
|
||||
aTargets: [4],
|
||||
},
|
||||
{
|
||||
fnRender: that.getActionButtons,
|
||||
aTargets: [that.getDataMapping().length],
|
||||
},
|
||||
],
|
||||
};
|
||||
return dataTableParams;
|
||||
}
|
||||
|
||||
preProcessRemoteTableData(data, cell, id) {
|
||||
if (id === 2) {
|
||||
if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell == null) {
|
||||
return '';
|
||||
}
|
||||
return Date.parse(cell).toString('yyyy MMM d <b>HH:mm</b>');
|
||||
} if (id === 3) {
|
||||
if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell == null) {
|
||||
return '';
|
||||
}
|
||||
return Date.parse(cell).toString('MMM d <b>HH:mm</b>');
|
||||
} if (id === 4) {
|
||||
if (cell !== undefined && cell !== null) {
|
||||
if (cell.length > 10) {
|
||||
return `${cell.substring(0, 10)}..`;
|
||||
}
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
save() {
|
||||
const validator = new FormValidation(`${this.getTableName()}_submit`, true, { ShowPopup: false, LabelErrorClass: 'error' });
|
||||
if (validator.checkValues()) {
|
||||
const params = validator.getFormParameters();
|
||||
|
||||
const msg = this.doCustomValidation(params);
|
||||
if (msg == null) {
|
||||
const id = $(`#${this.getTableName()}_submit #id`).val();
|
||||
if (id != null && id !== undefined && id !== '') {
|
||||
params.id = id;
|
||||
}
|
||||
|
||||
const reqJson = JSON.stringify(params);
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'saveSuccessCallback';
|
||||
callBackData.callBackFail = 'saveFailCallback';
|
||||
|
||||
this.customAction('savePunch', 'admin=attendance', reqJson, callBackData);
|
||||
} else {
|
||||
const label = $(`#${this.getTableName()}Form .label`);
|
||||
label.html(msg);
|
||||
label.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
saveSuccessCallback(callBackData) {
|
||||
this.get(callBackData);
|
||||
}
|
||||
|
||||
|
||||
saveFailCallback(callBackData) {
|
||||
this.showMessage('Error saving attendance entry', callBackData);
|
||||
}
|
||||
|
||||
isSubProfileTable() {
|
||||
return this.user.user_level !== 'Admin';
|
||||
}
|
||||
|
||||
showPunchImages(id) {
|
||||
const reqJson = JSON.stringify({ id });
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'getImagesSuccessCallback';
|
||||
callBackData.callBackFail = 'getImagesFailCallback';
|
||||
this.customAction('getImages', 'admin=attendance', reqJson, callBackData);
|
||||
}
|
||||
|
||||
getImagesSuccessCallback(callBackData) {
|
||||
$('#attendancePhotoModel').modal('show');
|
||||
$('#attendnaceCanvasEmp').html(callBackData.employee_Name);
|
||||
if (callBackData.in_time) {
|
||||
$('#attendnaceCanvasPunchInTime').html(Date.parse(callBackData.in_time).toString('yyyy MMM d <b>HH:mm</b>'));
|
||||
}
|
||||
|
||||
if (callBackData.image_in) {
|
||||
const myCanvas = document.getElementById('attendnaceCanvasIn');
|
||||
const ctx = myCanvas.getContext('2d');
|
||||
const img = new Image();
|
||||
img.onload = function () {
|
||||
ctx.drawImage(img, 0, 0); // Or at whatever offset you like
|
||||
};
|
||||
img.src = callBackData.image_in;
|
||||
}
|
||||
|
||||
if (callBackData.out_time) {
|
||||
$('#attendnaceCanvasPunchOutTime').html(Date.parse(callBackData.out_time).toString('yyyy MMM d <b>HH:mm</b>'));
|
||||
}
|
||||
|
||||
if (callBackData.image_out) {
|
||||
const myCanvas = document.getElementById('attendnaceCanvasOut');
|
||||
const ctx = myCanvas.getContext('2d');
|
||||
const img = new Image();
|
||||
img.onload = function () {
|
||||
ctx.drawImage(img, 0, 0); // Or at whatever offset you like
|
||||
};
|
||||
img.src = callBackData.image_out;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getImagesFailCallback(callBackData) {
|
||||
this.showMessage('Error', callBackData);
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
const editButton = '<img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img>';
|
||||
const deleteButton = '<img class="tableActionButton" src="_BASE_images/delete.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Delete" onclick="modJs.deleteRow(_id_);return false;"></img>';
|
||||
const photoButton = '<img class="tableActionButton" src="_BASE_images/cam.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Show Photo" onclick="modJs.showPunchImages(_id_);return false;"></img>';
|
||||
|
||||
let html;
|
||||
if (this.photoAttendance === 1) {
|
||||
html = '<div style="width:80px;">_edit__delete__photo_</div>';
|
||||
} else {
|
||||
html = '<div style="width:80px;">_edit__delete_</div>';
|
||||
}
|
||||
|
||||
html = html.replace('_photo_', photoButton);
|
||||
|
||||
if (this.showDelete) {
|
||||
html = html.replace('_delete_', deleteButton);
|
||||
} else {
|
||||
html = html.replace('_delete_', '');
|
||||
}
|
||||
|
||||
if (this.showEdit) {
|
||||
html = html.replace('_edit_', editButton);
|
||||
} else {
|
||||
html = html.replace('_edit_', '');
|
||||
}
|
||||
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Attendance Status
|
||||
*/
|
||||
|
||||
class AttendanceStatusAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Clocked In Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', {
|
||||
label: 'Employee', type: 'select2', 'allow-null': false, 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
let html = '<div class="online-button-_COLOR_"></div>';
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
if (data[2] == 'Not Clocked In') {
|
||||
html = html.replace(/_COLOR_/g, 'gray');
|
||||
} else if (data[2] == 'Clocked Out') {
|
||||
html = html.replace(/_COLOR_/g, 'yellow');
|
||||
} else if (data[2] == 'Clocked In') {
|
||||
html = html.replace(/_COLOR_/g, 'green');
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
isSubProfileTable() {
|
||||
return this.user.user_level !== 'Admin';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { AttendanceAdapter, AttendanceStatusAdapter };
|
||||
@@ -0,0 +1,4 @@
|
||||
import { CompanyStructureAdapter, CompanyGraphAdapter } from './lib';
|
||||
|
||||
window.CompanyStructureAdapter = CompanyStructureAdapter;
|
||||
window.CompanyGraphAdapter = CompanyGraphAdapter;
|
||||
@@ -0,0 +1,311 @@
|
||||
/* eslint-disable prefer-destructuring */
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
/* global d3, nv */
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
class CompanyStructureAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'title',
|
||||
'address',
|
||||
'type',
|
||||
'country',
|
||||
'timezone',
|
||||
'parent',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Address', bSortable: false },
|
||||
{ sTitle: 'Type' },
|
||||
{ sTitle: 'Country', sClass: 'center' },
|
||||
{ sTitle: 'Time Zone' },
|
||||
{ sTitle: 'Parent Structure' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden', validation: '' }],
|
||||
['title', { label: 'Name', type: 'text', validation: '' }],
|
||||
['description', { label: 'Details', type: 'textarea', validation: '' }],
|
||||
['address', { label: 'Address', type: 'textarea', validation: 'none' }],
|
||||
['type', { label: 'Type', type: 'select', source: [['Company', 'Company'], ['Head Office', 'Head Office'], ['Regional Office', 'Regional Office'], ['Department', 'Department'], ['Unit', 'Unit'], ['Sub Unit', 'Sub Unit'], ['Other', 'Other']] }],
|
||||
['country', { label: 'Country', type: 'select2', 'remote-source': ['Country', 'code', 'name'] }],
|
||||
['timezone', {
|
||||
label: 'Time Zone', type: 'select2', 'allow-null': false, 'remote-source': ['Timezone', 'name', 'details'],
|
||||
}],
|
||||
['parent', {
|
||||
label: 'Parent Structure', type: 'select', 'allow-null': true, 'remote-source': ['CompanyStructure', 'id', 'title'],
|
||||
}],
|
||||
['heads', {
|
||||
label: 'Heads', type: 'select2multi', 'allow-null': true, 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
postRenderForm(object, $tempDomObj) {
|
||||
if (object === undefined
|
||||
|| object === null
|
||||
|| object.id === null
|
||||
|| object.id === undefined || object.id === ''
|
||||
) {
|
||||
$tempDomObj.find('#field_heads').hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Company Graph
|
||||
*/
|
||||
|
||||
|
||||
class CompanyGraphAdapter extends CompanyStructureAdapter {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this.nodeIdCounter = 0;
|
||||
}
|
||||
|
||||
convertToTree(data) {
|
||||
const ice = {};
|
||||
ice.id = -1;
|
||||
ice.title = '';
|
||||
ice.name = '';
|
||||
ice.children = [];
|
||||
|
||||
let parent = null;
|
||||
|
||||
const added = {};
|
||||
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
data[i].name = data[i].title;
|
||||
|
||||
if (data[i].parent != null && data[i].parent !== undefined) {
|
||||
parent = this.findParent(data, data[i].parent);
|
||||
if (parent != null) {
|
||||
if (parent.children === undefined || parent.children == null) {
|
||||
parent.children = [];
|
||||
}
|
||||
parent.children.push(data[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
if (data[i].parent == null || data[i].parent === undefined) {
|
||||
ice.children.push(data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return ice;
|
||||
}
|
||||
|
||||
|
||||
findParent(data, parent) {
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
if (data[i].title === parent || data[i].title === parent) {
|
||||
return data[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
createTable(elementId) {
|
||||
$('#tabPageCompanyGraph').html('');
|
||||
const that = this;
|
||||
const sourceData = this.sourceData;
|
||||
|
||||
// this.fixCyclicParent(sourceData);
|
||||
const treeData = this.convertToTree(sourceData);
|
||||
const m = [20, 120, 20, 120];
|
||||
const w = 5000 - m[1] - m[3];
|
||||
const h = 1000 - m[0] - m[2];
|
||||
|
||||
const tree = d3.layout.tree()
|
||||
.size([h, w]);
|
||||
|
||||
this.diagonal = d3.svg.diagonal()
|
||||
.projection(d => [d.y, d.x]);
|
||||
|
||||
this.vis = d3.select('#tabPageCompanyGraph').append('svg:svg')
|
||||
.attr('width', w + m[1] + m[3])
|
||||
.attr('height', h + m[0] + m[2])
|
||||
.append('svg:g')
|
||||
.attr('transform', `translate(${m[3]},${m[0]})`);
|
||||
|
||||
const root = treeData;
|
||||
root.x0 = h / 2;
|
||||
root.y0 = 0;
|
||||
|
||||
function toggleAll(d) {
|
||||
if (d.children) {
|
||||
console.log(d.name);
|
||||
d.children.forEach(toggleAll);
|
||||
that.toggle(d);
|
||||
}
|
||||
}
|
||||
this.update(root, tree, root);
|
||||
}
|
||||
|
||||
update(source, tree, root) {
|
||||
const that = this;
|
||||
const duration = d3.event && d3.event.altKey ? 5000 : 500;
|
||||
|
||||
// Compute the new tree layout.
|
||||
const nodes = tree.nodes(root).reverse();
|
||||
|
||||
// Normalize for fixed-depth.
|
||||
nodes.forEach((d) => { d.y = d.depth * 180; });
|
||||
|
||||
// Update the nodes�
|
||||
const node = that.vis.selectAll('g.node')
|
||||
.data(nodes, d => d.id || (d.id = ++that.nodeIdCounter));
|
||||
|
||||
// Enter any new nodes at the parent's previous position.
|
||||
const nodeEnter = node.enter().append('svg:g')
|
||||
.attr('class', 'node')
|
||||
.attr('transform', d => `translate(${source.y0},${source.x0})`)
|
||||
.on('click', (d) => { that.toggle(d); that.update(d, tree, root); });
|
||||
|
||||
nodeEnter.append('svg:circle')
|
||||
.attr('r', 1e-6)
|
||||
.style('fill', d => (d._children ? 'lightsteelblue' : '#fff'));
|
||||
|
||||
nodeEnter.append('svg:text')
|
||||
.attr('x', d => (d.children || d._children ? -10 : 10))
|
||||
.attr('dy', '.35em')
|
||||
.attr('text-anchor', d => (d.children || d._children ? 'end' : 'start'))
|
||||
.text(d => d.name)
|
||||
.style('fill-opacity', 1e-6);
|
||||
|
||||
// Transition nodes to their new position.
|
||||
const nodeUpdate = node.transition()
|
||||
.duration(duration)
|
||||
.attr('transform', d => `translate(${d.y},${d.x})`);
|
||||
|
||||
nodeUpdate.select('circle')
|
||||
.attr('r', 4.5)
|
||||
.style('fill', d => (d._children ? 'lightsteelblue' : '#fff'));
|
||||
|
||||
nodeUpdate.select('text')
|
||||
.style('fill-opacity', 1);
|
||||
|
||||
// Transition exiting nodes to the parent's new position.
|
||||
const nodeExit = node.exit().transition()
|
||||
.duration(duration)
|
||||
.attr('transform', d => `translate(${source.y},${source.x})`)
|
||||
.remove();
|
||||
|
||||
nodeExit.select('circle')
|
||||
.attr('r', 1e-6);
|
||||
|
||||
nodeExit.select('text')
|
||||
.style('fill-opacity', 1e-6);
|
||||
|
||||
// Update the links�
|
||||
const link = that.vis.selectAll('path.link')
|
||||
.data(tree.links(nodes), d => d.target.id);
|
||||
|
||||
// Enter any new links at the parent's previous position.
|
||||
link.enter().insert('svg:path', 'g')
|
||||
.attr('class', 'link')
|
||||
.attr('d', (d) => {
|
||||
const o = { x: source.x0, y: source.y0 };
|
||||
return that.diagonal({ source: o, target: o });
|
||||
})
|
||||
.transition()
|
||||
.duration(duration)
|
||||
.attr('d', that.diagonal);
|
||||
|
||||
// Transition links to their new position.
|
||||
link.transition()
|
||||
.duration(duration)
|
||||
.attr('d', that.diagonal);
|
||||
|
||||
// Transition exiting nodes to the parent's new position.
|
||||
link.exit().transition()
|
||||
.duration(duration)
|
||||
.attr('d', (d) => {
|
||||
const o = { x: source.x, y: source.y };
|
||||
return that.diagonal({ source: o, target: o });
|
||||
})
|
||||
.remove();
|
||||
|
||||
// Stash the old positions for transition.
|
||||
nodes.forEach((d) => {
|
||||
d.x0 = d.x;
|
||||
d.y0 = d.y;
|
||||
});
|
||||
}
|
||||
|
||||
// Toggle children.
|
||||
toggle(d) {
|
||||
if (d.children) {
|
||||
d._children = d.children;
|
||||
d.children = null;
|
||||
} else {
|
||||
d.children = d._children;
|
||||
d._children = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getSourceDataById(id) {
|
||||
for (let i = 0; i < this.sourceData.length; i++) {
|
||||
if (this.sourceData[i].id == id) {
|
||||
return this.sourceData[i];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
fixCyclicParent(sourceData) {
|
||||
let errorMsg = '';
|
||||
for (let i = 0; i < sourceData.length; i++) {
|
||||
const obj = sourceData[i];
|
||||
|
||||
|
||||
let curObj = obj;
|
||||
const parentIdArr = {};
|
||||
parentIdArr[curObj.id] = 1;
|
||||
|
||||
while (curObj.parent != null && curObj.parent != undefined) {
|
||||
const parent = this.getSourceDataById(curObj.parent);
|
||||
if (parent == null) {
|
||||
break;
|
||||
} else if (parentIdArr[parent.id] == 1) {
|
||||
errorMsg = `${obj.title}'s parent structure set to ${parent.title}<br/>`;
|
||||
obj.parent = null;
|
||||
break;
|
||||
}
|
||||
parentIdArr[parent.id] = 1;
|
||||
curObj = parent;
|
||||
}
|
||||
}
|
||||
|
||||
if (errorMsg !== '') {
|
||||
this.showMessage('Company Structure is having a cyclic dependency', `We found a cyclic dependency due to following reasons:<br/>${errorMsg}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'https://thilinah.gitbooks.io/icehrm-guide/content/employee-information-setup.html';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { CompanyStructureAdapter, CompanyGraphAdapter };
|
||||
@@ -0,0 +1,3 @@
|
||||
import { DashboardAdapter } from './lib';
|
||||
|
||||
window.DashboardAdapter = DashboardAdapter;
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
class DashboardAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
get(callBackData) {
|
||||
}
|
||||
|
||||
|
||||
getInitData() {
|
||||
const that = this;
|
||||
const object = {};
|
||||
const reqJson = JSON.stringify(object);
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'getInitDataSuccessCallBack';
|
||||
callBackData.callBackFail = 'getInitDataFailCallBack';
|
||||
|
||||
this.customAction('getInitData', 'admin=dashboard', reqJson, callBackData);
|
||||
}
|
||||
|
||||
|
||||
getInitDataSuccessCallBack(data) {
|
||||
$('#numberOfEmployees').html(`${data.numberOfEmployees} Employees`);
|
||||
$('#numberOfCompanyStuctures').html(`${data.numberOfCompanyStuctures} Departments`);
|
||||
$('#numberOfUsers').html(`${data.numberOfUsers} Users`);
|
||||
$('#numberOfProjects').html(`${data.numberOfProjects} Active Projects`);
|
||||
$('#numberOfAttendanceLastWeek').html(`${data.numberOfAttendanceLastWeek} Entries Last Week`);
|
||||
$('#numberOfLeaves').html(`${data.numberOfLeaves} Upcoming`);
|
||||
$('#numberOfTimeEntries').html(data.numberOfTimeEntries);
|
||||
$('#numberOfCandidates').html(`${data.numberOfCandidates} Candidates`);
|
||||
$('#numberOfJobs').html(`${data.numberOfJobs} Active`);
|
||||
$('#numberOfCourses').html(`${data.numberOfCourses} Courses`);
|
||||
}
|
||||
|
||||
getInitDataFailCallBack(callBackData) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { DashboardAdapter };
|
||||
@@ -0,0 +1,4 @@
|
||||
import { DataImportAdapter, DataImportFileAdapter } from './lib';
|
||||
|
||||
window.DataImportAdapter = DataImportAdapter;
|
||||
window.DataImportFileAdapter = DataImportFileAdapter;
|
||||
@@ -0,0 +1,185 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
/* global dependOnField */
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* DataImportAdapter
|
||||
*/
|
||||
|
||||
class DataImportAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'dataType',
|
||||
'details',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Data Type' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['dataType', { label: 'Data Type', type: 'text', validation: '' }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
['columns', {
|
||||
label: 'Columns',
|
||||
type: 'datagroup',
|
||||
form: [
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['title', { label: 'Filed Title', type: 'text', validation: 'none' }],
|
||||
['type', {
|
||||
label: 'Type', type: 'select', sort: 'none', source: [['Normal', 'Normal'], ['Reference', 'Reference'], ['Attached', 'Attached']],
|
||||
}],
|
||||
['dependOn', {
|
||||
label: 'Depends On',
|
||||
type: 'select',
|
||||
'allow-null': true,
|
||||
'null-label': 'N/A',
|
||||
source: [['EmergencyContact', 'Emergency Contacts'], ['Ethnicity', 'Ethnicity'], ['Nationality', 'Nationality'], ['JobTitle', 'JobTitle'], ['PayFrequency', 'PayFrequency'], ['PayGrade', 'PayGrade'], ['EmploymentStatus', 'EmploymentStatus'], ['CompanyStructure', 'CompanyStructure'], ['Employee', 'Employee']],
|
||||
}],
|
||||
['dependOnField', { label: 'Depends On Field', type: 'text', validation: 'none' }],
|
||||
['isKeyField', {
|
||||
label: 'Is Key Field', type: 'select', validation: '', source: [['No', 'No'], ['Yes', 'Yes']],
|
||||
}],
|
||||
['idField', {
|
||||
label: 'Is ID Field', type: 'select', validation: '', source: [['No', 'No'], ['Yes', 'Yes']],
|
||||
}],
|
||||
],
|
||||
html: '<div id="#_id_#" class="panel panel-default"><div class="panel-heading"><b>#_name_#</b> #_delete_##_edit_#</div><div class="panel-body"><b>Header Title: </b>#_title_#<br/><span style="color:#999;font-size:11px;font-weight:bold">Type: #_type_# </span><br/></div></div>',
|
||||
validation: 'none',
|
||||
'custom-validate-function': function (data) {
|
||||
const res = {};
|
||||
res.params = data;
|
||||
res.valid = true;
|
||||
if (data.type === 'Reference') {
|
||||
if (data.dependOn === 'NULL') {
|
||||
res.message = 'If the type is Reference this field should referring another table';
|
||||
res.valid = false;
|
||||
} else if (dependOnField === null || dependOnField === undefined) {
|
||||
res.message = "If the type is Reference then 'Depends On Field' can not be empty";
|
||||
res.valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
},
|
||||
|
||||
}],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* DataImportFileAdapter
|
||||
*/
|
||||
|
||||
class DataImportFileAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'data_import_definition',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Data Import Definition' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['data_import_definition', { label: 'Data Import Definitions', type: 'select', 'remote-source': ['DataImport', 'id', 'name'] }],
|
||||
['file', {
|
||||
label: 'File to Import', type: 'fileupload', validation: '', filetypes: 'csv,txt',
|
||||
}],
|
||||
['details', { label: 'Last Export Result', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
const editButton = '<img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img>';
|
||||
const processButton = '<img class="tableActionButton" src="_BASE_images/run.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Process" onclick="modJs.process(_id_,\'_status_\');return false;"></img>';
|
||||
const deleteButton = '<img class="tableActionButton" src="_BASE_images/delete.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Delete" onclick="modJs.deleteRow(_id_);return false;"></img>';
|
||||
const cloneButton = '<img class="tableActionButton" src="_BASE_images/clone.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Copy" onclick="modJs.copyRow(_id_);return false;"></img>';
|
||||
|
||||
let html = '<div style="width:120px;">_edit__process__clone__delete_</div>';
|
||||
|
||||
|
||||
if (this.showAddNew) {
|
||||
html = html.replace('_clone_', cloneButton);
|
||||
} else {
|
||||
html = html.replace('_clone_', '');
|
||||
}
|
||||
|
||||
if (this.showDelete) {
|
||||
html = html.replace('_delete_', deleteButton);
|
||||
} else {
|
||||
html = html.replace('_delete_', '');
|
||||
}
|
||||
|
||||
if (this.showEdit) {
|
||||
html = html.replace('_edit_', editButton);
|
||||
} else {
|
||||
html = html.replace('_edit_', '');
|
||||
}
|
||||
|
||||
if (data[3] === 'Not Processed') {
|
||||
html = html.replace('_process_', processButton);
|
||||
} else {
|
||||
html = html.replace('_process_', '');
|
||||
}
|
||||
|
||||
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_status_/g, data[6]);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
process(id) {
|
||||
const that = this;
|
||||
const object = { id };
|
||||
const reqJson = JSON.stringify(object);
|
||||
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'processSuccessCallBack';
|
||||
callBackData.callBackFail = 'processFailCallBack';
|
||||
|
||||
this.customAction('processDataFile', 'admin=data', reqJson, callBackData);
|
||||
}
|
||||
|
||||
processSuccessCallBack(callBackData) {
|
||||
this.showMessage('Success', 'File imported successfully.');
|
||||
}
|
||||
|
||||
|
||||
processFailCallBack(callBackData) {
|
||||
this.showMessage('Error', `File import unsuccessful. Result:${callBackData}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { DataImportAdapter, DataImportFileAdapter };
|
||||
@@ -0,0 +1,39 @@
|
||||
import {
|
||||
EmployeeAdapter,
|
||||
TerminatedEmployeeAdapter,
|
||||
ArchivedEmployeeAdapter,
|
||||
EmployeeSkillAdapter,
|
||||
EmployeeEducationAdapter,
|
||||
EmployeeCertificationAdapter,
|
||||
EmployeeLanguageAdapter,
|
||||
EmployeeDependentAdapter,
|
||||
EmergencyContactAdapter,
|
||||
EmployeeImmigrationAdapter,
|
||||
EmployeeSubSkillsAdapter,
|
||||
EmployeeSubEducationAdapter,
|
||||
EmployeeSubCertificationAdapter,
|
||||
EmployeeSubLanguageAdapter,
|
||||
EmployeeSubDependentAdapter,
|
||||
EmployeeSubEmergencyContactAdapter,
|
||||
EmployeeSubDocumentAdapter,
|
||||
EmployeeDocumentAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.EmployeeAdapter = EmployeeAdapter;
|
||||
window.TerminatedEmployeeAdapter = TerminatedEmployeeAdapter;
|
||||
window.ArchivedEmployeeAdapter = ArchivedEmployeeAdapter;
|
||||
window.EmployeeSkillAdapter = EmployeeSkillAdapter;
|
||||
window.EmployeeEducationAdapter = EmployeeEducationAdapter;
|
||||
window.EmployeeCertificationAdapter = EmployeeCertificationAdapter;
|
||||
window.EmployeeLanguageAdapter = EmployeeLanguageAdapter;
|
||||
window.EmployeeDependentAdapter = EmployeeDependentAdapter;
|
||||
window.EmergencyContactAdapter = EmergencyContactAdapter;
|
||||
window.EmployeeImmigrationAdapter = EmployeeImmigrationAdapter;
|
||||
window.EmployeeSubSkillsAdapter = EmployeeSubSkillsAdapter;
|
||||
window.EmployeeSubEducationAdapter = EmployeeSubEducationAdapter;
|
||||
window.EmployeeSubCertificationAdapter = EmployeeSubCertificationAdapter;
|
||||
window.EmployeeSubLanguageAdapter = EmployeeSubLanguageAdapter;
|
||||
window.EmployeeSubDependentAdapter = EmployeeSubDependentAdapter;
|
||||
window.EmployeeSubEmergencyContactAdapter = EmployeeSubEmergencyContactAdapter;
|
||||
window.EmployeeSubDocumentAdapter = EmployeeSubDocumentAdapter;
|
||||
window.EmployeeDocumentAdapter = EmployeeDocumentAdapter;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,4 @@
|
||||
import { FieldNameAdapter, CustomFieldAdapter } from './lib';
|
||||
|
||||
window.FieldNameAdapter = FieldNameAdapter;
|
||||
window.CustomFieldAdapter = CustomFieldAdapter;
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import CustomFieldAdapter from '../../../api/CustomFieldAdapter';
|
||||
|
||||
/**
|
||||
* FieldNameAdapter
|
||||
*/
|
||||
|
||||
class FieldNameAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'textOrig',
|
||||
'textMapped',
|
||||
'display',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Original Text' },
|
||||
{ sTitle: 'Mapped Text' },
|
||||
{ sTitle: 'Display Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['type', { label: 'Type', type: 'placeholder', validation: '' }],
|
||||
['name', { label: 'Name', type: 'placeholder', validation: '' }],
|
||||
['textOrig', { label: 'Original Text', type: 'placeholder', validation: '' }],
|
||||
['textMapped', { label: 'Mapped Text', type: 'text', validation: '' }],
|
||||
['display', { label: 'Display Status', type: 'select', source: [['Form', 'Show'], ['Hidden', 'Hidden']] }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = { FieldNameAdapter, CustomFieldAdapter };
|
||||
@@ -0,0 +1,5 @@
|
||||
import { JobTitleAdapter, PayGradeAdapter, EmploymentStatusAdapter } from './lib';
|
||||
|
||||
window.JobTitleAdapter = JobTitleAdapter;
|
||||
window.PayGradeAdapter = PayGradeAdapter;
|
||||
window.EmploymentStatusAdapter = EmploymentStatusAdapter;
|
||||
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* JobTitleAdapter
|
||||
*/
|
||||
|
||||
class JobTitleAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'code',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Code' },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['code', { label: 'Job Title Code', type: 'text' }],
|
||||
['name', { label: 'Job Title', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea' }],
|
||||
['specification', { label: 'Specification', type: 'textarea' }],
|
||||
];
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/jobdetails/';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PayGradeAdapter
|
||||
*/
|
||||
|
||||
class PayGradeAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'currency',
|
||||
'min_salary',
|
||||
'max_salary',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Currency' },
|
||||
{ sTitle: 'Min Salary' },
|
||||
{ sTitle: 'Max Salary' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Pay Grade Name', type: 'text' }],
|
||||
['currency', { label: 'Currency', type: 'select2', 'remote-source': ['CurrencyType', 'code', 'name'] }],
|
||||
['min_salary', { label: 'Min Salary', type: 'text', validation: 'float' }],
|
||||
['max_salary', { label: 'Max Salary', type: 'text', validation: 'float' }],
|
||||
];
|
||||
}
|
||||
|
||||
doCustomValidation(params) {
|
||||
try {
|
||||
if (parseFloat(params.min_salary) > parseFloat(params.max_salary)) {
|
||||
return 'Min Salary should be smaller than Max Salary';
|
||||
}
|
||||
} catch (e) {
|
||||
// D/N
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EmploymentStatusAdapter
|
||||
*/
|
||||
|
||||
class EmploymentStatusAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID' },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Description' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Employment Status', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = { JobTitleAdapter, PayGradeAdapter, EmploymentStatusAdapter };
|
||||
@@ -0,0 +1,7 @@
|
||||
import {
|
||||
CompanyLoanAdapter,
|
||||
EmployeeCompanyLoanAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.CompanyLoanAdapter = CompanyLoanAdapter;
|
||||
window.EmployeeCompanyLoanAdapter = EmployeeCompanyLoanAdapter;
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* CompanyLoanAdapter
|
||||
*/
|
||||
|
||||
class CompanyLoanAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'details',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* EmployeeCompanyLoanAdapter
|
||||
*/
|
||||
|
||||
class EmployeeCompanyLoanAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'loan',
|
||||
'start_date',
|
||||
'period_months',
|
||||
'currency',
|
||||
'amount',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Loan Type' },
|
||||
{ sTitle: 'Loan Start Date' },
|
||||
{ sTitle: 'Loan Period (Months)' },
|
||||
{ sTitle: 'Currency' },
|
||||
{ sTitle: 'Amount' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
['loan', { label: 'Loan Type', type: 'select', 'remote-source': ['CompanyLoan', 'id', 'name'] }],
|
||||
['start_date', { label: 'Loan Start Date', type: 'date', validation: '' }],
|
||||
['last_installment_date', { label: 'Last Installment Date', type: 'date', validation: 'none' }],
|
||||
['period_months', { label: 'Loan Period (Months)', type: 'text', validation: 'number' }],
|
||||
['currency', { label: 'Currency', type: 'select2', 'remote-source': ['CurrencyType', 'id', 'name'] }],
|
||||
['amount', { label: 'Loan Amount', type: 'text', validation: 'float' }],
|
||||
['monthly_installment', { label: 'Monthly Installment', type: 'text', validation: 'float' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Approved', 'Approved'], ['Paid', 'Paid'], ['Suspended', 'Suspended']] }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', {
|
||||
label: 'Employee', type: 'select2', 'allow-null': true, 'null-label': 'All Employees', 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
['loan', {
|
||||
label: 'Loan Type', type: 'select', 'allow-null': true, 'null-label': 'All Loan Types', 'remote-source': ['CompanyLoan', 'id', 'name'],
|
||||
}],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
CompanyLoanAdapter,
|
||||
EmployeeCompanyLoanAdapter,
|
||||
};
|
||||
@@ -0,0 +1,15 @@
|
||||
import {
|
||||
CountryAdapter,
|
||||
ProvinceAdapter,
|
||||
CurrencyTypeAdapter,
|
||||
NationalityAdapter,
|
||||
ImmigrationStatusAdapter,
|
||||
EthnicityAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.CountryAdapter = CountryAdapter;
|
||||
window.ProvinceAdapter = ProvinceAdapter;
|
||||
window.CurrencyTypeAdapter = CurrencyTypeAdapter;
|
||||
window.NationalityAdapter = NationalityAdapter;
|
||||
window.ImmigrationStatusAdapter = ImmigrationStatusAdapter;
|
||||
window.EthnicityAdapter = EthnicityAdapter;
|
||||
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import IdNameAdapter from '../../../api/IdNameAdapter';
|
||||
/**
|
||||
* CountryAdapter
|
||||
*/
|
||||
|
||||
class CountryAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'code',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Code' },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['code', { label: 'Code', type: 'text', validation: '' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ProvinceAdapter
|
||||
*/
|
||||
|
||||
class ProvinceAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'code',
|
||||
'name',
|
||||
'country',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Code' },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Country' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['code', { label: 'Code', type: 'text', validation: '' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['country', { label: 'Country', type: 'select2', 'remote-source': ['Country', 'code', 'name'] }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['country', { label: 'Country', type: 'select2', 'remote-source': ['Country', 'code', 'name'] }],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* CurrencyTypeAdapter
|
||||
*/
|
||||
|
||||
class CurrencyTypeAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'code',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Code' },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['code', { label: 'Code', type: 'text', validation: '' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* NationalityAdapter
|
||||
*/
|
||||
|
||||
class NationalityAdapter extends IdNameAdapter {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* ImmigrationStatusAdapter
|
||||
*/
|
||||
|
||||
class ImmigrationStatusAdapter extends IdNameAdapter {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EthnicityAdapter
|
||||
*/
|
||||
|
||||
class EthnicityAdapter extends IdNameAdapter {
|
||||
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
CountryAdapter,
|
||||
ProvinceAdapter,
|
||||
CurrencyTypeAdapter,
|
||||
NationalityAdapter,
|
||||
ImmigrationStatusAdapter,
|
||||
EthnicityAdapter,
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
import { ModuleAdapter, UsageAdapter } from './lib';
|
||||
|
||||
window.ModuleAdapter = ModuleAdapter;
|
||||
window.UsageAdapter = UsageAdapter;
|
||||
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
/**
|
||||
* ModuleAdapter
|
||||
*/
|
||||
|
||||
class ModuleAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'label',
|
||||
'menu',
|
||||
'mod_group',
|
||||
'mod_order',
|
||||
'status',
|
||||
'version',
|
||||
'update_path',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Menu', bVisible: false },
|
||||
{ sTitle: 'Group' },
|
||||
{ sTitle: 'Order' },
|
||||
{ sTitle: 'Status' },
|
||||
{ sTitle: 'Version', bVisible: false },
|
||||
{ sTitle: 'Path', bVisible: false },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['label', { label: 'Label', type: 'text', validation: '' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Enabled', 'Enabled'], ['Disabled', 'Disabled']] }],
|
||||
['user_levels', { label: 'User Levels', type: 'select2multi', source: [['Admin', 'Admin'], ['Manager', 'Manager'], ['Employee', 'Employee'], ['Other', 'Other']] }],
|
||||
['user_roles', { label: 'User Roles', type: 'select2multi', 'remote-source': ['UserRole', 'id', 'name'] }],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
const nonEditableFields = {};
|
||||
nonEditableFields['admin_Company Structure'] = 1;
|
||||
nonEditableFields.admin_Employees = 1;
|
||||
nonEditableFields['admin_Job Details Setup'] = 1;
|
||||
nonEditableFields.admin_Leaves = 1;
|
||||
nonEditableFields['admin_Manage Modules'] = 1;
|
||||
nonEditableFields.admin_Projects = 1;
|
||||
nonEditableFields.admin_Qualifications = 1;
|
||||
nonEditableFields.admin_Settings = 1;
|
||||
nonEditableFields.admin_Users = 1;
|
||||
nonEditableFields.admin_Upgrade = 1;
|
||||
nonEditableFields.admin_Dashboard = 1;
|
||||
|
||||
nonEditableFields['user_Basic Information'] = 1;
|
||||
nonEditableFields.user_Dashboard = 1;
|
||||
|
||||
if (nonEditableFields[`${data[3]}_${data[1]}`] === 1) {
|
||||
return '';
|
||||
}
|
||||
let html = '<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"/></div>';
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UsageAdapter
|
||||
*/
|
||||
|
||||
class UsageAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
get(callBackData) {
|
||||
|
||||
}
|
||||
|
||||
saveUsage() {
|
||||
const object = {};
|
||||
const arr = [];
|
||||
$('.module-check').each(function () {
|
||||
if ($(this).is(':checked')) {
|
||||
arr.push($(this).val());
|
||||
}
|
||||
});
|
||||
|
||||
if (arr.length === 0) {
|
||||
alert('Please select one or more module groups');
|
||||
return;
|
||||
}
|
||||
|
||||
object.groups = arr.join(',');
|
||||
|
||||
const reqJson = JSON.stringify(object);
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'getInitDataSuccessCallBack';
|
||||
callBackData.callBackFail = 'getInitDataFailCallBack';
|
||||
|
||||
this.customAction('saveUsage', 'admin=modules', reqJson, callBackData);
|
||||
}
|
||||
|
||||
|
||||
saveUsageSuccessCallBack(data) {
|
||||
|
||||
}
|
||||
|
||||
saveUsageFailCallBack(callBackData) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { ModuleAdapter, UsageAdapter };
|
||||
@@ -0,0 +1,7 @@
|
||||
import {
|
||||
OvertimeCategoryAdapter,
|
||||
EmployeeOvertimeAdminAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.OvertimeCategoryAdapter = OvertimeCategoryAdapter;
|
||||
window.EmployeeOvertimeAdminAdapter = EmployeeOvertimeAdminAdapter;
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import ApproveAdminAdapter from '../../../api/ApproveAdminAdapter';
|
||||
|
||||
/**
|
||||
* OvertimeCategoryAdapter
|
||||
*/
|
||||
|
||||
class OvertimeCategoryAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EmployeeOvertimeAdminAdapter
|
||||
*/
|
||||
|
||||
|
||||
class EmployeeOvertimeAdminAdapter extends ApproveAdminAdapter {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this.itemName = 'OvertimeRequest';
|
||||
this.itemNameLower = 'overtimerequest';
|
||||
this.modulePathName = 'overtime';
|
||||
}
|
||||
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'category',
|
||||
'start_time',
|
||||
'end_time',
|
||||
'project',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Category' },
|
||||
{ sTitle: 'Start Time' },
|
||||
{ sTitle: 'End Time' },
|
||||
{ sTitle: 'Project' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', {
|
||||
label: 'Employee',
|
||||
type: 'select2',
|
||||
sort: 'none',
|
||||
'allow-null': false,
|
||||
'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'],
|
||||
}],
|
||||
['category', {
|
||||
label: 'Category', type: 'select2', 'allow-null': false, 'remote-source': ['OvertimeCategory', 'id', 'name'],
|
||||
}],
|
||||
['start_time', { label: 'Start Time', type: 'datetime', validation: '' }],
|
||||
['end_time', { label: 'End Time', type: 'datetime', validation: '' }],
|
||||
['project', {
|
||||
label: 'Project', type: 'select2', 'allow-null': true, 'null=label': 'none', 'remote-source': ['Project', 'id', 'name'],
|
||||
}],
|
||||
['notes', { label: 'Notes', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
OvertimeCategoryAdapter,
|
||||
EmployeeOvertimeAdminAdapter,
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
PaydayAdapter,
|
||||
PayrollAdapter,
|
||||
PayrollDataAdapter,
|
||||
PayrollColumnAdapter,
|
||||
PayrollColumnTemplateAdapter,
|
||||
PayrollEmployeeAdapter,
|
||||
DeductionAdapter,
|
||||
DeductionGroupAdapter,
|
||||
PayslipTemplateAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.PaydayAdapter = PaydayAdapter;
|
||||
window.PayrollAdapter = PayrollAdapter;
|
||||
window.PayrollDataAdapter = PayrollDataAdapter;
|
||||
window.PayrollColumnAdapter = PayrollColumnAdapter;
|
||||
window.PayrollColumnTemplateAdapter = PayrollColumnTemplateAdapter;
|
||||
window.PayrollEmployeeAdapter = PayrollEmployeeAdapter;
|
||||
window.DeductionAdapter = DeductionAdapter;
|
||||
window.DeductionGroupAdapter = DeductionGroupAdapter;
|
||||
window.PayslipTemplateAdapter = PayslipTemplateAdapter;
|
||||
@@ -0,0 +1,631 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
/* global modJs, modJsList */
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import TableEditAdapter from '../../../api/TableEditAdapter';
|
||||
|
||||
/**
|
||||
* PaydayAdapter
|
||||
*/
|
||||
|
||||
class PaydayAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Select Pay Frequency' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
|
||||
getAddNewLabel() {
|
||||
return 'Run Payroll';
|
||||
}
|
||||
|
||||
createTable(elementId) {
|
||||
$('#payday_all').off();
|
||||
super.createTable(elementId);
|
||||
$('#payday_all').off().on('click', function () {
|
||||
if ($(this).is(':checked')) {
|
||||
$('.paydayCheck').prop('checked', true);
|
||||
} else {
|
||||
$('.paydayCheck').prop('checked', false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
const editButton = '<input type="checkbox" class="paydayCheck" id="payday__id_" name="payday__id_" value="checkbox_payday__id_"/>';
|
||||
|
||||
let html = '<div style="width:120px;">_edit_</div>';
|
||||
html = html.replace('_edit_', editButton);
|
||||
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
getActionButtonHeader() {
|
||||
return { sTitle: '<input type="checkbox" id="payday_all" name="payday_all" value="checkbox_payday_all"/>', sClass: 'center' };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PayrollAdapter
|
||||
*/
|
||||
|
||||
class PayrollAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'pay_period',
|
||||
'department',
|
||||
'date_start',
|
||||
'date_end',
|
||||
'status',
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Pay Frequency' },
|
||||
{ sTitle: 'Department' },
|
||||
{ sTitle: 'Date Start' },
|
||||
{ sTitle: 'Date End' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['pay_period', {
|
||||
label: 'Pay Frequency', type: 'select', 'remote-source': ['PayFrequency', 'id', 'name'], sort: 'none',
|
||||
}],
|
||||
['deduction_group', {
|
||||
label: 'Calculation Group', type: 'select', 'remote-source': ['DeductionGroup', 'id', 'name'], sort: 'none',
|
||||
}],
|
||||
['payslipTemplate', { label: 'Payslip Template', type: 'select', 'remote-source': ['PayslipTemplate', 'id', 'name'] }],
|
||||
['department', {
|
||||
label: 'Department', type: 'select2', 'remote-source': ['CompanyStructure', 'id', 'title'], sort: 'none',
|
||||
}],
|
||||
['date_start', { label: 'Start Date', type: 'date', validation: '' }],
|
||||
['date_end', { label: 'End Date', type: 'date', validation: '' }],
|
||||
// [ "column_template", {"label":"Report Column Template","type":"select","remote-source":["PayrollColumnTemplate","id","name"]}],
|
||||
['columns', { label: 'Payroll Columns', type: 'select2multi', 'remote-source': ['PayrollColumn', 'id', 'name'] }],
|
||||
['status', {
|
||||
label: 'Status', type: 'select', source: [['Draft', 'Draft'], ['Completed', 'Completed']], sort: 'none',
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
postRenderForm(object, $tempDomObj) {
|
||||
if (object != null && object !== undefined && object.id !== undefined && object.id != null) {
|
||||
$tempDomObj.find('#pay_period').attr('disabled', 'disabled');
|
||||
$tempDomObj.find('#department').attr('disabled', 'disabled');
|
||||
// $tempDomObj.find("#date_start").attr('disabled','disabled');
|
||||
// $tempDomObj.find("#date_end").attr('disabled','disabled');
|
||||
// $tempDomObj.find("#column_template").attr('disabled','disabled');
|
||||
}
|
||||
}
|
||||
|
||||
process(id, status) {
|
||||
// eslint-disable-next-line no-global-assign
|
||||
modJs = modJsList.tabPayrollData;
|
||||
modJs.setCurrentPayroll(id);
|
||||
$('#Payroll').hide();
|
||||
$('#PayrollData').show();
|
||||
$('#PayrollDataButtons').show();
|
||||
|
||||
if (status === 'Completed') {
|
||||
$('.completeBtnTable').hide();
|
||||
$('.saveBtnTable').hide();
|
||||
} else {
|
||||
$('.completeBtnTable').show();
|
||||
$('.saveBtnTable').show();
|
||||
}
|
||||
|
||||
modJs.get([]);
|
||||
}
|
||||
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
const editButton = '<img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img>';
|
||||
const processButton = '<img class="tableActionButton" src="_BASE_images/run.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Process" onclick="modJs.process(_id_,\'_status_\');return false;"></img>';
|
||||
const deleteButton = '<img class="tableActionButton" src="_BASE_images/delete.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Delete" onclick="modJs.deleteRow(_id_);return false;"></img>';
|
||||
const cloneButton = '<img class="tableActionButton" src="_BASE_images/clone.png" style="margin-left:15px;cursor:pointer;" rel="tooltip" title="Copy" onclick="modJs.copyRow(_id_);return false;"></img>';
|
||||
|
||||
let html = '<div style="width:120px;">_edit__process__clone__delete_</div>';
|
||||
|
||||
|
||||
if (this.showAddNew) {
|
||||
html = html.replace('_clone_', cloneButton);
|
||||
} else {
|
||||
html = html.replace('_clone_', '');
|
||||
}
|
||||
|
||||
if (this.showDelete) {
|
||||
html = html.replace('_delete_', deleteButton);
|
||||
} else {
|
||||
html = html.replace('_delete_', '');
|
||||
}
|
||||
|
||||
if (this.showEdit) {
|
||||
html = html.replace('_edit_', editButton);
|
||||
} else {
|
||||
html = html.replace('_edit_', '');
|
||||
}
|
||||
|
||||
html = html.replace('_process_', processButton);
|
||||
|
||||
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_status_/g, data[6]);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
get(callBackData) {
|
||||
$('#PayrollData').hide();
|
||||
$('#PayrollForm').hide();
|
||||
$('#PayrollDataButtons').hide();
|
||||
$('#Payroll').show();
|
||||
modJsList.tabPayrollData.setCurrentPayroll(null);
|
||||
super.get(callBackData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PayrollDataAdapter
|
||||
*/
|
||||
|
||||
class PayrollDataAdapter extends TableEditAdapter {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this.cellDataUpdates = {};
|
||||
this.payrollId = null;
|
||||
}
|
||||
|
||||
validateCellValue(element, evt, newValue) {
|
||||
modJs.addCellDataUpdate(element.data('colId'), element.data('rowId'), newValue);
|
||||
return true;
|
||||
}
|
||||
|
||||
setCurrentPayroll(val) {
|
||||
this.payrollId = val;
|
||||
}
|
||||
|
||||
|
||||
addAdditionalRequestData(type, req) {
|
||||
if (type === 'updateData') {
|
||||
req.payrollId = this.payrollId;
|
||||
} else if (type === 'updateAllData') {
|
||||
req.payrollId = this.payrollId;
|
||||
} else if (type === 'getAllData') {
|
||||
req.payrollId = this.payrollId;
|
||||
}
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
modifyCSVHeader(header) {
|
||||
header.unshift('');
|
||||
return header;
|
||||
}
|
||||
|
||||
getCSVData() {
|
||||
let csv = '';
|
||||
|
||||
for (let i = 0; i < this.csvData.length; i++) {
|
||||
csv += this.csvData[i].join(',');
|
||||
if (i < this.csvData.length - 1) {
|
||||
csv += '\r\n';
|
||||
}
|
||||
}
|
||||
|
||||
return csv;
|
||||
}
|
||||
|
||||
downloadPayroll() {
|
||||
const element = document.createElement('a');
|
||||
element.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(this.getCSVData())}`);
|
||||
element.setAttribute('download', `payroll_${this.payrollId}.csv`);
|
||||
|
||||
element.style.display = 'none';
|
||||
document.body.appendChild(element);
|
||||
|
||||
element.click();
|
||||
|
||||
document.body.removeChild(element);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PayrollColumnAdapter
|
||||
*/
|
||||
|
||||
class PayrollColumnAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'colorder',
|
||||
'calculation_hook',
|
||||
'deduction_group',
|
||||
'editable',
|
||||
'enabled',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Column Order' },
|
||||
{ sTitle: 'Calculation Method' },
|
||||
{ sTitle: 'Calculation Group' },
|
||||
{ sTitle: 'Editable' },
|
||||
{ sTitle: 'Enabled' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
const fucntionColumnList = ['calculation_columns', {
|
||||
label: 'Calculation Columns',
|
||||
type: 'datagroup',
|
||||
form: [
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['column', { label: 'Column', type: 'select2', 'remote-source': ['PayrollColumn', 'id', 'name'] }],
|
||||
],
|
||||
html: '<div id="#_id_#" class="panel panel-default">#_delete_##_edit_#<div class="panel-body">#_renderFunction_#</div></div>',
|
||||
validation: 'none',
|
||||
render(item) {
|
||||
const output = `Variable:${item.name}`;
|
||||
return output;
|
||||
},
|
||||
|
||||
}];
|
||||
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['calculation_hook', {
|
||||
label: 'Predefined Calculations', type: 'select2', 'allow-null': true, 'null-label': 'None', 'remote-source': ['CalculationHook', 'code', 'name'],
|
||||
}],
|
||||
['deduction_group', {
|
||||
label: 'Calculation Group', type: 'select2', 'allow-null': true, 'null-label': 'Common', 'remote-source': ['DeductionGroup', 'id', 'name'],
|
||||
}],
|
||||
['salary_components', { label: 'Salary Components', type: 'select2multi', 'remote-source': ['SalaryComponent', 'id', 'name'] }],
|
||||
['deductions', { label: 'Calculation Method', type: 'select2multi', 'remote-source': ['Deduction', 'id', 'name'] }],
|
||||
['add_columns', { label: 'Columns to Add', type: 'select2multi', 'remote-source': ['PayrollColumn', 'id', 'name'] }],
|
||||
['sub_columns', { label: 'Columns to Subtract', type: 'select2multi', 'remote-source': ['PayrollColumn', 'id', 'name'] }],
|
||||
['colorder', { label: 'Column Order', type: 'text', validation: 'number' }],
|
||||
['editable', { label: 'Editable', type: 'select', source: [['Yes', 'Yes'], ['No', 'No']] }],
|
||||
['enabled', { label: 'Enabled', type: 'select', source: [['Yes', 'Yes'], ['No', 'No']] }],
|
||||
['default_value', { label: 'Default Value', type: 'text', validation: '' }],
|
||||
fucntionColumnList,
|
||||
['calculation_function', { label: 'Function', type: 'text', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['deduction_group', {
|
||||
label: 'Calculation Group', type: 'select2', 'allow-null': true, 'null-label': 'Any', 'remote-source': ['DeductionGroup', 'id', 'name'],
|
||||
}],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PayrollColumnTemplateAdapter
|
||||
*/
|
||||
|
||||
class PayrollColumnTemplateAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: true },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['columns', { label: 'Payroll Columns', type: 'select2multi', 'remote-source': ['PayrollColumn', 'id', 'name'] }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PayrollEmployeeAdapter
|
||||
*/
|
||||
|
||||
class PayrollEmployeeAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'pay_frequency',
|
||||
'deduction_group',
|
||||
'currency',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Pay Frequency' },
|
||||
{ sTitle: 'Calculation Group' },
|
||||
{ sTitle: 'Currency' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
['pay_frequency', { label: 'Pay Frequency', type: 'select2', 'remote-source': ['PayFrequency', 'id', 'name'] }],
|
||||
['currency', { label: 'Currency', type: 'select2', 'remote-source': ['CurrencyType', 'id', 'code'] }],
|
||||
['deduction_group', {
|
||||
label: 'Calculation Group', type: 'select2', 'allow-null': true, 'null-label': 'None', 'remote-source': ['DeductionGroup', 'id', 'name'],
|
||||
}],
|
||||
['deduction_exemptions', {
|
||||
label: 'Calculation Exemptions', type: 'select2multi', 'remote-source': ['Deduction', 'id', 'name'], validation: 'none',
|
||||
}],
|
||||
['deduction_allowed', {
|
||||
label: 'Calculations Assigned', type: 'select2multi', 'remote-source': ['Deduction', 'id', 'name'], validation: 'none',
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* DeductionAdapter
|
||||
*/
|
||||
|
||||
class DeductionAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'deduction_group',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Calculation Group' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
const rangeAmounts = ['rangeAmounts', {
|
||||
label: 'Calculation Process',
|
||||
type: 'datagroup',
|
||||
form: [
|
||||
['lowerCondition', { label: 'Lower Limit Condition', type: 'select', source: [['No Lower Limit', 'No Lower Limit'], ['gt', 'Greater than'], ['gte', 'Greater than or Equal']] }],
|
||||
['lowerLimit', { label: 'Lower Limit', type: 'text', validation: 'float' }],
|
||||
['upperCondition', { label: 'Upper Limit Condition', type: 'select', source: [['No Upper Limit', 'No Upper Limit'], ['lt', 'Less than'], ['lte', 'Less than or Equal']] }],
|
||||
['upperLimit', { label: 'Upper Limit', type: 'text', validation: 'float' }],
|
||||
['amount', { label: 'Value', type: 'text', validation: '' }],
|
||||
],
|
||||
html: '<div id="#_id_#" class="panel panel-default">#_delete_##_edit_#<div class="panel-body">#_renderFunction_#</div></div>',
|
||||
validation: 'none',
|
||||
'custom-validate-function': function (data) {
|
||||
const res = {};
|
||||
res.valid = true;
|
||||
if (data.lowerCondition === 'No Lower Limit') {
|
||||
data.lowerLimit = 0;
|
||||
}
|
||||
if (data.upperCondition === 'No Upper Limit') {
|
||||
data.upperLimit = 0;
|
||||
}
|
||||
res.params = data;
|
||||
return res;
|
||||
},
|
||||
render(item) {
|
||||
let output = '';
|
||||
const getSymbol = function (text) {
|
||||
const map = {};
|
||||
map.gt = '>';
|
||||
map.gte = '>=';
|
||||
map.lt = '<';
|
||||
map.lte = '<=';
|
||||
|
||||
return map[text];
|
||||
};
|
||||
|
||||
if (item.lowerCondition !== 'No Lower Limit') {
|
||||
output += `${item.lowerLimit} ${getSymbol(item.lowerCondition)} `;
|
||||
}
|
||||
|
||||
if (item.upperCondition !== 'No Upper Limit') {
|
||||
output += ' and ';
|
||||
output += `${getSymbol(item.upperCondition)} ${item.upperLimit} `;
|
||||
}
|
||||
if (output === '') {
|
||||
return `Deduction is ${item.amount} for all ranges`;
|
||||
}
|
||||
return `If salary component ${output} deduction is ${item.amount}`;
|
||||
},
|
||||
|
||||
}];
|
||||
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['componentType', {
|
||||
label: 'Salary Component Type', type: 'select2multi', 'allow-null': true, 'remote-source': ['SalaryComponentType', 'id', 'name'],
|
||||
}],
|
||||
['component', {
|
||||
label: 'Salary Component', type: 'select2multi', 'allow-null': true, 'remote-source': ['SalaryComponent', 'id', 'name'],
|
||||
}],
|
||||
['payrollColumn', {
|
||||
label: 'Payroll Report Column', type: 'select2', 'allow-null': true, 'remote-source': ['PayrollColumn', 'id', 'name'],
|
||||
}],
|
||||
rangeAmounts,
|
||||
['deduction_group', {
|
||||
label: 'Calculation Group', type: 'select2', 'allow-null': true, 'null-label': 'None', 'remote-source': ['DeductionGroup', 'id', 'name'],
|
||||
}],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* DeductionGroupAdapter
|
||||
*/
|
||||
|
||||
class DeductionGroupAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['description', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PayslipTemplateAdapter
|
||||
*/
|
||||
|
||||
class PayslipTemplateAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
const payslipFields = ['data', {
|
||||
label: 'Payslip Fields',
|
||||
type: 'datagroup',
|
||||
form: [
|
||||
['type', {
|
||||
label: 'Type', type: 'select', sort: 'none', source: [['Payroll Column', 'Payroll Column'], ['Text', 'Text'], ['Company Name', 'Company Name'], ['Company Logo', 'Company Logo'], ['Separators', 'Separators']],
|
||||
}],
|
||||
['payrollColumn', {
|
||||
label: 'Payroll Column', type: 'select2', sort: 'none', 'allow-null': true, 'null-label': 'None', 'remote-source': ['PayrollColumn', 'id', 'name'],
|
||||
}],
|
||||
|
||||
['label', { label: 'Label', type: 'text', validation: 'none' }],
|
||||
['text', { label: 'Text', type: 'textarea', validation: 'none' }],
|
||||
['status', {
|
||||
label: 'Status', type: 'select', sort: 'none', source: [['Show', 'Show'], ['Hide', 'Hide']],
|
||||
}],
|
||||
],
|
||||
|
||||
// "html":'<div id="#_id_#" class="panel panel-default">#_delete_##_edit_#<div class="panel-body"><table class="table table-striped"><tr><td>Type</td><td>#_type_#</td></tr><tr><td>Label</td><td>#_label_#</td></tr><tr><td>Text</td><td>#_text_#</td></tr><tr><td>Font Size</td><td>#_fontSize_#</td></tr><tr><td>Font Style</td><td>#_fontStyle_#</td></tr><tr><td>Font Color</td><td>#_fontColor_#</td></tr><tr><td>Status</td><td>#_status_#</td></tr></table> </div></div>',
|
||||
html: '<div id="#_id_#" class="panel panel-default">#_delete_##_edit_#<div class="panel-body">#_type_# #_label_# <br/> #_text_#</div></div>',
|
||||
validation: 'none',
|
||||
'custom-validate-function': function (data) {
|
||||
const res = {};
|
||||
res.valid = true;
|
||||
if (data.type === 'Payroll Column') {
|
||||
if (data.payrollColumn === 'NULL') {
|
||||
res.valid = false;
|
||||
res.message = 'Please select payroll column';
|
||||
} else {
|
||||
data.payrollColumn = 'NULL';
|
||||
}
|
||||
} else if (data.type === 'Text') {
|
||||
if (data.text === '') {
|
||||
res.valid = false;
|
||||
res.message = 'Text can not be empty';
|
||||
}
|
||||
}
|
||||
|
||||
res.params = data;
|
||||
return res;
|
||||
},
|
||||
}];
|
||||
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
payslipFields,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
PaydayAdapter,
|
||||
PayrollAdapter,
|
||||
PayrollDataAdapter,
|
||||
PayrollColumnAdapter,
|
||||
PayrollColumnTemplateAdapter,
|
||||
PayrollEmployeeAdapter,
|
||||
DeductionAdapter,
|
||||
DeductionGroupAdapter,
|
||||
PayslipTemplateAdapter,
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
import { PermissionAdapter } from './lib';
|
||||
|
||||
window.PermissionAdapter = PermissionAdapter;
|
||||
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* PermissionAdapter
|
||||
*/
|
||||
|
||||
class PermissionAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'user_level',
|
||||
'module_id',
|
||||
'permission',
|
||||
'value',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'User Level' },
|
||||
{ sTitle: 'Module' },
|
||||
{ sTitle: 'Permission' },
|
||||
{ sTitle: 'Value' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['user_level', { label: 'User Level', type: 'placeholder', validation: 'none' }],
|
||||
['module_id', { label: 'Module', type: 'placeholder', 'remote-source': ['Module', 'id', 'menu+name'] }],
|
||||
['permission', { label: 'Permission', type: 'placeholder', validation: 'none' }],
|
||||
['value', { label: 'Value', type: 'text', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['module_id', {
|
||||
label: 'Module', type: 'select2', 'allow-null': true, 'null-label': 'All Modules', 'remote-source': ['Module', 'id', 'menu+name'],
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
let html = '<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img></div>';
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
getMetaFieldForRendering(fieldName) {
|
||||
if (fieldName === 'value') {
|
||||
return 'meta';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
fillForm(object) {
|
||||
super.fillForm(object);
|
||||
$('#helptext').html(object.description);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { PermissionAdapter };
|
||||
@@ -0,0 +1,9 @@
|
||||
import {
|
||||
ClientAdapter,
|
||||
ProjectAdapter,
|
||||
EmployeeProjectAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.ClientAdapter = ClientAdapter;
|
||||
window.ProjectAdapter = ProjectAdapter;
|
||||
window.EmployeeProjectAdapter = EmployeeProjectAdapter;
|
||||
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* ClientAdapter
|
||||
*/
|
||||
|
||||
class ClientAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'details',
|
||||
'address',
|
||||
'contact_number',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Details' },
|
||||
{ sTitle: 'Address' },
|
||||
{ sTitle: 'Contact Number' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
if (this.showSave) {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
['address', { label: 'Address', type: 'textarea', validation: 'none' }],
|
||||
['contact_number', { label: 'Contact Number', type: 'text', validation: 'none' }],
|
||||
['contact_email', { label: 'Contact Email', type: 'text', validation: 'none' }],
|
||||
['company_url', { label: 'Company Url', type: 'text', validation: 'none' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Active', 'Active'], ['Inactive', 'Inactive']] }],
|
||||
['first_contact_date', { label: 'First Contact Date', type: 'date', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'placeholder' }],
|
||||
['details', { label: 'Details', type: 'placeholder', validation: 'none' }],
|
||||
['address', { label: 'Address', type: 'placeholder', validation: 'none' }],
|
||||
['contact_number', { label: 'Contact Number', type: 'placeholder', validation: 'none' }],
|
||||
['contact_email', { label: 'Contact Email', type: 'placeholder', validation: 'none' }],
|
||||
['company_url', { label: 'Company Url', type: 'placeholder', validation: 'none' }],
|
||||
['status', { label: 'Status', type: 'placeholder', source: [['Active', 'Active'], ['Inactive', 'Inactive']] }],
|
||||
['first_contact_date', { label: 'First Contact Date', type: 'placeholder', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/projects/';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ProjectAdapter
|
||||
*/
|
||||
|
||||
class ProjectAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'client',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Client' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
if (this.showSave) {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['client', {
|
||||
label: 'Client', type: 'select2', 'allow-null': true, 'remote-source': ['Client', 'id', 'name'],
|
||||
}],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Active', 'Active'], ['On Hold', 'On Hold'], ['Completed', 'Completed'], ['Dropped', 'Dropped']] }],
|
||||
];
|
||||
}
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'placeholder' }],
|
||||
['client', {
|
||||
label: 'Client', type: 'placeholder', 'allow-null': true, 'remote-source': ['Client', 'id', 'name'],
|
||||
}],
|
||||
['details', { label: 'Details', type: 'placeholder', validation: 'none' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Active', 'Active'], ['On Hold', 'On Hold'], ['Completed', 'Completed'], ['Dropped', 'Dropped']] }],
|
||||
];
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/projects/';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* EmployeeProjectAdapter
|
||||
*/
|
||||
|
||||
|
||||
class EmployeeProjectAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'project',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Project' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
['project', { label: 'Project', type: 'select2', 'remote-source': ['Project', 'id', 'name'] }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/projects/';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ClientAdapter,
|
||||
ProjectAdapter,
|
||||
EmployeeProjectAdapter,
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
import {
|
||||
SkillAdapter,
|
||||
EducationAdapter,
|
||||
CertificationAdapter,
|
||||
LanguageAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.SkillAdapter = SkillAdapter;
|
||||
window.EducationAdapter = EducationAdapter;
|
||||
window.CertificationAdapter = CertificationAdapter;
|
||||
window.LanguageAdapter = LanguageAdapter;
|
||||
@@ -0,0 +1,140 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* SkillAdapter
|
||||
*/
|
||||
|
||||
class SkillAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Description' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea', validation: '' }],
|
||||
];
|
||||
}
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/qualifications/';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EducationAdapter
|
||||
*/
|
||||
|
||||
class EducationAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Description' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CertificationAdapter
|
||||
*/
|
||||
|
||||
class CertificationAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Description' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* LanguageAdapter
|
||||
*/
|
||||
|
||||
class LanguageAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Description' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text' }],
|
||||
['description', { label: 'Description', type: 'textarea', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
SkillAdapter,
|
||||
EducationAdapter,
|
||||
CertificationAdapter,
|
||||
LanguageAdapter,
|
||||
};
|
||||
@@ -0,0 +1,4 @@
|
||||
import { ReportAdapter, ReportGenAdapter } from './lib';
|
||||
|
||||
window.ReportAdapter = ReportAdapter;
|
||||
window.ReportGenAdapter = ReportGenAdapter;
|
||||
@@ -0,0 +1,372 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
/* global SignaturePad, modJs */
|
||||
/* eslint-disable no-underscore-dangle */
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
|
||||
/**
|
||||
* ReportAdapter
|
||||
*/
|
||||
|
||||
|
||||
class ReportAdapter extends AdapterBase {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this._construct();
|
||||
}
|
||||
|
||||
_construct() {
|
||||
this._formFileds = [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'label', validation: '' }],
|
||||
['parameters', { label: 'Parameters', type: 'fieldset', validation: 'none' }],
|
||||
];
|
||||
this.remoteFieldsExists = false;
|
||||
}
|
||||
|
||||
_initLocalFormFields() {
|
||||
this._formFileds = [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'label', validation: '' }],
|
||||
['parameters', { label: 'Parameters', type: 'fieldset', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
setRemoteFieldExists(val) {
|
||||
this.remoteFieldsExists = val;
|
||||
}
|
||||
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'icon',
|
||||
'name',
|
||||
'details',
|
||||
'parameters',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: '', bSortable: false, sWidth: '22px' },
|
||||
{ sTitle: 'Name', sWidth: '30%' },
|
||||
{ sTitle: 'Details' },
|
||||
{ sTitle: 'Parameters', bVisible: false },
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
getFormFields() {
|
||||
return this._formFileds;
|
||||
}
|
||||
|
||||
processFormFieldsWithObject(object) {
|
||||
const that = this;
|
||||
this._initLocalFormFields();
|
||||
const len = this._formFileds.length;
|
||||
const fieldIDsToDelete = [];
|
||||
const fieldsToDelete = [];
|
||||
this.remoteFieldsExists = false;
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (this._formFileds[i][1].type === 'fieldset') {
|
||||
const newFields = JSON.parse(object[this._formFileds[i][0]]);
|
||||
fieldsToDelete.push(this._formFileds[i][0]);
|
||||
newFields.forEach((entry) => {
|
||||
that._formFileds.push(entry);
|
||||
if (entry[1]['remote-source'] !== undefined && entry[1]['remote-source'] != null) {
|
||||
that.remoteFieldsExists = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const tempArray = [];
|
||||
that._formFileds.forEach((entry) => {
|
||||
if (jQuery.inArray(entry[0], fieldsToDelete) < 0) {
|
||||
tempArray.push(entry);
|
||||
}
|
||||
});
|
||||
|
||||
that._formFileds = tempArray;
|
||||
}
|
||||
|
||||
|
||||
renderForm(object) {
|
||||
const that = this;
|
||||
this.processFormFieldsWithObject(object);
|
||||
if (this.remoteFieldsExists) {
|
||||
const cb = function () {
|
||||
that.renderFormNew(object);
|
||||
};
|
||||
this.initFieldMasterData(cb);
|
||||
} else {
|
||||
this.initFieldMasterData();
|
||||
that.renderFormNew(object);
|
||||
}
|
||||
|
||||
this.currentReport = object;
|
||||
}
|
||||
|
||||
renderFormNew(object) {
|
||||
const that = this;
|
||||
const signatureIds = [];
|
||||
if (object == null || object === undefined) {
|
||||
this.currentId = null;
|
||||
}
|
||||
|
||||
this.preRenderForm(object);
|
||||
|
||||
let formHtml = this.templates.formTemplate;
|
||||
let html = '';
|
||||
const fields = this.getFormFields();
|
||||
|
||||
for (let i = 0; i < fields.length; i++) {
|
||||
const metaField = this.getMetaFieldForRendering(fields[i][0]);
|
||||
if (metaField === '' || metaField === undefined) {
|
||||
html += this.renderFormField(fields[i]);
|
||||
} else {
|
||||
const metaVal = object[metaField];
|
||||
if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') {
|
||||
html += this.renderFormField(JSON.parse(metaVal));
|
||||
} else {
|
||||
html += this.renderFormField(fields[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
formHtml = formHtml.replace(/_id_/g, `${this.getTableName()}_submit`);
|
||||
formHtml = formHtml.replace(/_fields_/g, html);
|
||||
|
||||
|
||||
let $tempDomObj;
|
||||
const randomFormId = this.generateRandom(14);
|
||||
if (!this.showFormOnPopup) {
|
||||
$tempDomObj = $(`#${this.getTableName()}Form`);
|
||||
} else {
|
||||
$tempDomObj = $('<div class="reviewBlock popupForm" data-content="Form"></div>');
|
||||
$tempDomObj.attr('id', randomFormId);
|
||||
}
|
||||
|
||||
$tempDomObj.html(formHtml);
|
||||
|
||||
|
||||
$tempDomObj.find('.datefield').datepicker({ viewMode: 2 });
|
||||
$tempDomObj.find('.timefield').datetimepicker({
|
||||
language: 'en',
|
||||
pickDate: false,
|
||||
});
|
||||
$tempDomObj.find('.datetimefield').datetimepicker({
|
||||
language: 'en',
|
||||
});
|
||||
|
||||
$tempDomObj.find('.colorpick').colorpicker();
|
||||
|
||||
// $tempDomObj.find('.select2Field').select2();
|
||||
$tempDomObj.find('.select2Field').each(function () {
|
||||
$(this).select2().select2('val', $(this).find('option:eq(0)').val());
|
||||
});
|
||||
|
||||
$tempDomObj.find('.select2Multi').each(function () {
|
||||
$(this).select2().on('change', function (e) {
|
||||
const parentRow = $(this).parents('.row');
|
||||
const height = parentRow.find('.select2-choices').height();
|
||||
parentRow.height(parseInt(height, 10));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$tempDomObj.find('.signatureField').each(function () {
|
||||
// $(this).data('signaturePad',new SignaturePad($(this)));
|
||||
signatureIds.push($(this).attr('id'));
|
||||
});
|
||||
|
||||
for (let i = 0; i < fields.length; i++) {
|
||||
if (fields[i][1].type === 'datagroup') {
|
||||
$tempDomObj.find(`#${fields[i][0]}`).data('field', fields[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.showSave === false) {
|
||||
$tempDomObj.find('.saveBtn').remove();
|
||||
} else {
|
||||
$tempDomObj.find('.saveBtn').off();
|
||||
$tempDomObj.find('.saveBtn').data('modJs', this);
|
||||
$tempDomObj.find('.saveBtn').on('click', function () {
|
||||
if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) {
|
||||
$(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback);
|
||||
} else {
|
||||
$(this).data('modJs').save();
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if (this.showCancel === false) {
|
||||
$tempDomObj.find('.cancelBtn').remove();
|
||||
} else {
|
||||
$tempDomObj.find('.cancelBtn').off();
|
||||
$tempDomObj.find('.cancelBtn').data('modJs', this);
|
||||
$tempDomObj.find('.cancelBtn').on('click', function () {
|
||||
$(this).data('modJs').cancel();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if (!this.showFormOnPopup) {
|
||||
$(`#${this.getTableName()}Form`).show();
|
||||
$(`#${this.getTableName()}`).hide();
|
||||
|
||||
for (let i = 0; i < signatureIds.length; i++) {
|
||||
$(`#${signatureIds[i]}`)
|
||||
.data('signaturePad',
|
||||
new SignaturePad(document.getElementById(signatureIds[i])));
|
||||
}
|
||||
|
||||
if (object !== undefined && object != null) {
|
||||
this.fillForm(object);
|
||||
}
|
||||
} else {
|
||||
// var tHtml = $tempDomObj.wrap('<div>').parent().html();
|
||||
// this.showMessage("Edit",tHtml,null,null,true);
|
||||
this.showMessage('Edit', '', null, null, true);
|
||||
|
||||
$('#plainMessageModel .modal-body').html('');
|
||||
$('#plainMessageModel .modal-body').append($tempDomObj);
|
||||
|
||||
|
||||
for (let i = 0; i < signatureIds.length; i++) {
|
||||
$(`#${signatureIds[i]}`)
|
||||
.data('signaturePad',
|
||||
new SignaturePad(document.getElementById(signatureIds[i])));
|
||||
}
|
||||
|
||||
if (object !== undefined && object != null) {
|
||||
this.fillForm(object, `#${randomFormId}`);
|
||||
}
|
||||
}
|
||||
|
||||
this.postRenderForm(object, $tempDomObj);
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
let html = '<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/download.png" style="cursor:pointer;" rel="tooltip" title="Download" onclick="modJs.edit(_id_);return false;"></img></div>';
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
addSuccessCallBack(callBackData, serverData) {
|
||||
const fileName = serverData[0];
|
||||
let link;
|
||||
|
||||
if (fileName.indexOf('https:') === 0) {
|
||||
link = `<a href="${fileName}" target="_blank" style="font-size:14px;font-weight:bold;">Download Report <img src="_BASE_images/download.png"></img> </a>`;
|
||||
} else {
|
||||
link = `<a href="${modJs.getCustomActionUrl('download', { file: fileName })}" target="_blank" style="font-size:14px;font-weight:bold;">Download Report <img src="_BASE_images/download.png"></img> </a>`;
|
||||
}
|
||||
link = link.replace(/_BASE_/g, this.baseUrl);
|
||||
|
||||
if (this.currentReport.output === 'PDF' || this.currentReport.output === 'JSON') {
|
||||
this.showMessage('Download Report', link);
|
||||
} else {
|
||||
if (serverData[1].length === 0) {
|
||||
this.showMessage('Empty Report', 'There were no data for selected filters');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
const tableHtml = `${link}<br/><br/><div class="box-body table-responsive" style="overflow-x:scroll;padding: 5px;border: solid 1px #DDD;"><table id="tempReportTable" cellpadding="0" cellspacing="0" border="0" class="table table-bordered table-striped"></table></div>`;
|
||||
|
||||
// Delete existing temp report table
|
||||
$('#tempReportTable').remove();
|
||||
|
||||
// this.showMessage("Report",tableHtml);
|
||||
|
||||
$(`#${this.table}`).html(tableHtml);
|
||||
$(`#${this.table}`).show();
|
||||
$(`#${this.table}Form`).hide();
|
||||
|
||||
// Prepare headers
|
||||
const headers = [];
|
||||
for (const index in serverData[1]) {
|
||||
headers.push({ sTitle: serverData[1][index] });
|
||||
}
|
||||
|
||||
const data = serverData[2];
|
||||
|
||||
|
||||
const dataTableParams = {
|
||||
oLanguage: {
|
||||
sLengthMenu: '_MENU_ records per page',
|
||||
},
|
||||
aaData: data,
|
||||
aoColumns: headers,
|
||||
bSort: false,
|
||||
iDisplayLength: 15,
|
||||
iDisplayStart: 0,
|
||||
};
|
||||
|
||||
$('#tempReportTable').dataTable(dataTableParams);
|
||||
|
||||
$('.dataTables_paginate ul').addClass('pagination');
|
||||
$('.dataTables_length').hide();
|
||||
$('.dataTables_filter input').addClass('form-control');
|
||||
$('.dataTables_filter input').attr('placeholder', 'Search');
|
||||
$('.dataTables_filter label').contents().filter(function () {
|
||||
return (this.nodeType === 3);
|
||||
}).remove();
|
||||
$('.tableActionButton').tooltip();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fillForm(object) {
|
||||
const fields = this.getFormFields();
|
||||
for (let i = 0; i < fields.length; i++) {
|
||||
if (fields[i][1].type === 'label') {
|
||||
$(`#${this.getTableName()}Form #${fields[i][0]}`).html(object[fields[i][0]]);
|
||||
} else {
|
||||
$(`#${this.getTableName()}Form #${fields[i][0]}`).val(object[fields[i][0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class ReportGenAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
let html = '<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/download.png" style="cursor:pointer;" rel="tooltip" title="Download" onclick="download(_name_);return false;"></img></div>';
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_name_/g, data[1]);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = { ReportAdapter, ReportGenAdapter };
|
||||
@@ -0,0 +1,9 @@
|
||||
import {
|
||||
SalaryComponentTypeAdapter,
|
||||
SalaryComponentAdapter,
|
||||
EmployeeSalaryAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.SalaryComponentTypeAdapter = SalaryComponentTypeAdapter;
|
||||
window.SalaryComponentAdapter = SalaryComponentAdapter;
|
||||
window.EmployeeSalaryAdapter = EmployeeSalaryAdapter;
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* SalaryComponentTypeAdapter
|
||||
*/
|
||||
|
||||
class SalaryComponentTypeAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'code',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Code' },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['code', { label: 'Code', type: 'text', validation: '' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* SalaryComponentAdapter
|
||||
*/
|
||||
|
||||
class SalaryComponentAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'componentType',
|
||||
'details',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Salary Component Type' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['componentType', { label: 'Salary Component Type', type: 'select2', 'remote-source': ['SalaryComponentType', 'id', 'name'] }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* EmployeeSalaryAdapter
|
||||
*/
|
||||
|
||||
class EmployeeSalaryAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'component',
|
||||
'amount',
|
||||
'details',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Salary Component' },
|
||||
{ sTitle: 'Amount' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
['component', { label: 'Salary Component', type: 'select2', 'remote-source': ['SalaryComponent', 'id', 'name'] }],
|
||||
['amount', { label: 'Amount', type: 'text', validation: 'float' }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
SalaryComponentTypeAdapter,
|
||||
SalaryComponentAdapter,
|
||||
EmployeeSalaryAdapter,
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
import { SettingAdapter } from './lib';
|
||||
|
||||
window.SettingAdapter = SettingAdapter;
|
||||
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
/**
|
||||
* SettingAdapter
|
||||
*/
|
||||
|
||||
class SettingAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'value',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Value' },
|
||||
{ sTitle: 'Details' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['value', { label: 'Value', type: 'text', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
getActionButtonsHtml(id, data) {
|
||||
let html = '<div style="width:80px;"><img class="tableActionButton" src="_BASE_images/edit.png" style="cursor:pointer;" rel="tooltip" title="Edit" onclick="modJs.edit(_id_);return false;"></img></div>';
|
||||
html = html.replace(/_id_/g, id);
|
||||
html = html.replace(/_BASE_/g, this.baseUrl);
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
getMetaFieldForRendering(fieldName) {
|
||||
if (fieldName === 'value') {
|
||||
return 'meta';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
edit(id) {
|
||||
this.loadRemoteDataForSettings();
|
||||
super.edit(id);
|
||||
}
|
||||
|
||||
|
||||
fillForm(object) {
|
||||
const metaField = this.getMetaFieldForRendering('value');
|
||||
const metaVal = object[metaField];
|
||||
let formFields = null;
|
||||
|
||||
if (metaVal !== '' && metaVal !== undefined) {
|
||||
formFields = [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
JSON.parse(metaVal),
|
||||
];
|
||||
}
|
||||
|
||||
super.fillForm(object, null, formFields);
|
||||
$('#helptext').html(object.description);
|
||||
}
|
||||
|
||||
|
||||
loadRemoteDataForSettings() {
|
||||
const fields = [];
|
||||
let field = null;
|
||||
fields.push(['country', { label: 'Country', type: 'select2multi', 'remote-source': ['Country', 'id', 'name'] }]);
|
||||
fields.push(['countryCompany', { label: 'Country', type: 'select2', 'remote-source': ['Country', 'code', 'name'] }]);
|
||||
fields.push(['currency', { label: 'Currency', type: 'select2multi', 'remote-source': ['CurrencyType', 'id', 'code+name'] }]);
|
||||
fields.push(['nationality', { label: 'Nationality', type: 'select2multi', 'remote-source': ['Nationality', 'id', 'name'] }]);
|
||||
fields.push(['supportedLanguage', {
|
||||
label: 'Value', type: 'select2', 'allow-null': false, 'remote-source': ['SupportedLanguage', 'name', 'description'],
|
||||
}]);
|
||||
|
||||
for (const index in fields) {
|
||||
field = fields[index];
|
||||
if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) {
|
||||
const key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`;
|
||||
this.fieldMasterDataKeys[key] = false;
|
||||
this.sourceMapping[field[0]] = field[1]['remote-source'];
|
||||
|
||||
const callBackData = {};
|
||||
callBackData.callBack = 'initFieldMasterDataResponse';
|
||||
callBackData.callBackData = [key];
|
||||
|
||||
this.getFieldValues(field[1]['remote-source'], callBackData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getHelpLink() {
|
||||
return 'http://blog.icehrm.com/docs/settings/';
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { SettingAdapter };
|
||||
@@ -0,0 +1,11 @@
|
||||
import {
|
||||
ImmigrationDocumentAdapter,
|
||||
EmployeeImmigrationAdapter,
|
||||
EmployeeTravelRecordAdminAdapter,
|
||||
CustomFieldAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.ImmigrationDocumentAdapter = ImmigrationDocumentAdapter;
|
||||
window.EmployeeImmigrationAdapter = EmployeeImmigrationAdapter;
|
||||
window.EmployeeTravelRecordAdminAdapter = EmployeeTravelRecordAdminAdapter;
|
||||
window.CustomFieldAdapter = CustomFieldAdapter;
|
||||
@@ -0,0 +1,195 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
import CustomFieldAdapter from '../../../api/CustomFieldAdapter';
|
||||
import ApproveAdminAdapter from '../../../api/ApproveAdminAdapter';
|
||||
|
||||
/**
|
||||
* ImmigrationDocumentAdapter
|
||||
*/
|
||||
|
||||
class ImmigrationDocumentAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'details',
|
||||
'required',
|
||||
'alert_on_missing',
|
||||
'alert_before_expiry',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
{ sTitle: 'Details' },
|
||||
{ sTitle: 'Compulsory' },
|
||||
{ sTitle: 'Alert If Not Found' },
|
||||
{ sTitle: 'Alert Before Expiry' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
const fields = [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
['required', { label: 'Compulsory', type: 'select', source: [['No', 'No'], ['Yes', 'Yes']] }],
|
||||
['alert_on_missing', { label: 'Alert If Not Found', type: 'select', source: [['No', 'No'], ['Yes', 'Yes']] }],
|
||||
['alert_before_expiry', { label: 'Alert Before Expiry', type: 'select', source: [['No', 'No'], ['Yes', 'Yes']] }],
|
||||
['alert_before_day_number', { label: 'Days for Expiry Alert', type: 'text', validation: '' }],
|
||||
];
|
||||
|
||||
for (let i = 0; i < this.customFields.length; i++) {
|
||||
fields.push(this.customFields[i]);
|
||||
}
|
||||
|
||||
return fields;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EmployeeImmigrationAdapter
|
||||
*/
|
||||
|
||||
|
||||
class EmployeeImmigrationAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'document',
|
||||
'documentname',
|
||||
'valid_until',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Document' },
|
||||
{ sTitle: 'Document Id' },
|
||||
{ sTitle: 'Valid Until' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
['document', { label: 'Document', type: 'select2', 'remote-source': ['ImmigrationDocument', 'id', 'name'] }],
|
||||
['documentname', { label: 'Document Id', type: 'text', validation: '' }],
|
||||
['valid_until', { label: 'Valid Until', type: 'date', validation: 'none' }],
|
||||
['status', { label: 'Status', type: 'select', source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] }],
|
||||
['details', { label: 'Details', type: 'textarea', validation: 'none' }],
|
||||
['attachment1', { label: 'Attachment 1', type: 'fileupload', validation: 'none' }],
|
||||
['attachment2', { label: 'Attachment 2', type: 'fileupload', validation: 'none' }],
|
||||
['attachment3', { label: 'Attachment 3', type: 'fileupload', validation: 'none' }],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
getFilters() {
|
||||
return [
|
||||
['employee', { label: 'Employee', type: 'select2', 'remote-source': ['Employee', 'id', 'first_name+last_name'] }],
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* EmployeeTravelRecordAdminAdapter
|
||||
*/
|
||||
|
||||
|
||||
class EmployeeTravelRecordAdminAdapter extends ApproveAdminAdapter {
|
||||
constructor(endPoint, tab, filter, orderBy) {
|
||||
super(endPoint, tab, filter, orderBy);
|
||||
this.itemName = 'TravelRequest';
|
||||
this.itemNameLower = 'travelrequest';
|
||||
this.modulePathName = 'travel';
|
||||
}
|
||||
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'employee',
|
||||
'type',
|
||||
'purpose',
|
||||
'travel_from',
|
||||
'travel_to',
|
||||
'travel_date',
|
||||
'status',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'Travel Type' },
|
||||
{ sTitle: 'Purpose' },
|
||||
{ sTitle: 'From' },
|
||||
{ sTitle: 'To' },
|
||||
{ sTitle: 'Travel Date' },
|
||||
{ sTitle: 'Status' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return this.addCustomFields([
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['employee', {
|
||||
label: 'Employee',
|
||||
type: 'select2',
|
||||
sort: 'none',
|
||||
'allow-null': false,
|
||||
'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'],
|
||||
}],
|
||||
['type', {
|
||||
label: 'Means of Transportation',
|
||||
type: 'select',
|
||||
source: [
|
||||
['Plane', 'Plane'],
|
||||
['Rail', 'Rail'],
|
||||
['Taxi', 'Taxi'],
|
||||
['Own Vehicle', 'Own Vehicle'],
|
||||
['Rented Vehicle', 'Rented Vehicle'],
|
||||
['Other', 'Other'],
|
||||
],
|
||||
}],
|
||||
['purpose', { label: 'Purpose of Travel', type: 'textarea', validation: '' }],
|
||||
['travel_from', { label: 'Travel From', type: 'text', validation: '' }],
|
||||
['travel_to', { label: 'Travel To', type: 'text', validation: '' }],
|
||||
['travel_date', { label: 'Travel Date', type: 'datetime', validation: '' }],
|
||||
['return_date', { label: 'Return Date', type: 'datetime', validation: '' }],
|
||||
['details', { label: 'Notes', type: 'textarea', validation: 'none' }],
|
||||
['currency', {
|
||||
label: 'Currency', type: 'select2', 'allow-null': false, 'remote-source': ['CurrencyType', 'id', 'code'],
|
||||
}],
|
||||
['funding', {
|
||||
label: 'Total Funding Proposed', type: 'text', validation: 'float', default: '0.00', mask: '9{0,10}.99',
|
||||
}],
|
||||
['attachment1', { label: 'Attachment', type: 'fileupload', validation: 'none' }],
|
||||
['attachment2', { label: 'Attachment', type: 'fileupload', validation: 'none' }],
|
||||
['attachment3', { label: 'Attachment', type: 'fileupload', validation: 'none' }],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ImmigrationDocumentAdapter,
|
||||
EmployeeImmigrationAdapter,
|
||||
EmployeeTravelRecordAdminAdapter,
|
||||
CustomFieldAdapter,
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
import {
|
||||
UserAdapter,
|
||||
UserRoleAdapter,
|
||||
} from './lib';
|
||||
|
||||
window.UserAdapter = UserAdapter;
|
||||
window.UserRoleAdapter = UserRoleAdapter;
|
||||
@@ -0,0 +1,201 @@
|
||||
/*
|
||||
Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)
|
||||
Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)
|
||||
*/
|
||||
|
||||
import FormValidation from '../../../api/FormValidation';
|
||||
import AdapterBase from '../../../api/AdapterBase';
|
||||
|
||||
|
||||
class UserAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'username',
|
||||
'email',
|
||||
'employee',
|
||||
'user_level',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID' },
|
||||
{ sTitle: 'User Name' },
|
||||
{ sTitle: 'Authentication Email' },
|
||||
{ sTitle: 'Employee' },
|
||||
{ sTitle: 'User Level' },
|
||||
];
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden', validation: '' }],
|
||||
['username', { label: 'User Name', type: 'text', validation: 'username' }],
|
||||
['email', { label: 'Email', type: 'text', validation: 'email' }],
|
||||
['employee', {
|
||||
label: 'Employee', type: 'select2', 'allow-null': true, 'remote-source': ['Employee', 'id', 'first_name+last_name'],
|
||||
}],
|
||||
['user_level', { label: 'User Level', type: 'select', source: [['Admin', 'Admin'], ['Manager', 'Manager'], ['Employee', 'Employee'], ['Other', 'Other']] }],
|
||||
['user_roles', { label: 'User Roles', type: 'select2multi', 'remote-source': ['UserRole', 'id', 'name'] }],
|
||||
['lang', {
|
||||
label: 'Language', type: 'select2', 'allow-null': true, 'remote-source': ['SupportedLanguage', 'id', 'description'],
|
||||
}],
|
||||
['default_module', {
|
||||
label: 'Default Module', type: 'select2', 'null-label': 'No Default Module', 'allow-null': true, 'remote-source': ['Module', 'id', 'menu+label'],
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
postRenderForm(object, $tempDomObj) {
|
||||
if (object == null || object === undefined) {
|
||||
$tempDomObj.find('#changePasswordBtn').remove();
|
||||
}
|
||||
}
|
||||
|
||||
changePassword() {
|
||||
$('#adminUsersModel').modal('show');
|
||||
$('#adminUsersChangePwd #newpwd').val('');
|
||||
$('#adminUsersChangePwd #conpwd').val('');
|
||||
}
|
||||
|
||||
saveUserSuccessCallBack(callBackData, serverData) {
|
||||
const user = callBackData[0];
|
||||
if (callBackData[1]) {
|
||||
this.showMessage('Create User', `An email has been sent to ${user.email} with a temporary password to login to IceHrm.`);
|
||||
} else {
|
||||
this.showMessage('Create User', 'User created successfully. But there was a problem sending welcome email.');
|
||||
}
|
||||
this.get([]);
|
||||
}
|
||||
|
||||
saveUserFailCallBack(callBackData, serverData) {
|
||||
this.showMessage('Error', callBackData);
|
||||
}
|
||||
|
||||
doCustomValidation(params) {
|
||||
let msg = null;
|
||||
if ((params.user_level !== 'Admin' && params.user_level !== 'Other') && params.employee === 'NULL') {
|
||||
msg = 'For this user type, you have to assign an employee when adding or editing the user.<br/>';
|
||||
msg += " You may create a new employee through 'Admin'->'Employees' menu";
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
save() {
|
||||
const validator = new FormValidation(`${this.getTableName()}_submit`, true, { ShowPopup: false, LabelErrorClass: 'error' });
|
||||
if (validator.checkValues()) {
|
||||
const params = validator.getFormParameters();
|
||||
|
||||
const msg = this.doCustomValidation(params);
|
||||
if (msg == null) {
|
||||
const id = $(`#${this.getTableName()}_submit #id`).val();
|
||||
params.csrf = $(`#${this.getTableName()}Form`).data('csrf');
|
||||
if (id != null && id !== undefined && id !== '') {
|
||||
params.id = id;
|
||||
this.add(params, []);
|
||||
} else {
|
||||
const reqJson = JSON.stringify(params);
|
||||
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'saveUserSuccessCallBack';
|
||||
callBackData.callBackFail = 'saveUserFailCallBack';
|
||||
|
||||
this.customAction('saveUser', 'admin=users', reqJson, callBackData);
|
||||
}
|
||||
} else {
|
||||
// $("#"+this.getTableName()+'Form .label').html(msg);
|
||||
// $("#"+this.getTableName()+'Form .label').show();
|
||||
this.showMessage('Error Saving User', msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
changePasswordConfirm() {
|
||||
$('#adminUsersChangePwd_error').hide();
|
||||
|
||||
const passwordValidation = function (str) {
|
||||
return str.length > 7;
|
||||
};
|
||||
|
||||
const password = $('#adminUsersChangePwd #newpwd').val();
|
||||
|
||||
if (!passwordValidation(password)) {
|
||||
$('#adminUsersChangePwd_error').html('Password should be longer than 7 characters');
|
||||
$('#adminUsersChangePwd_error').show();
|
||||
return;
|
||||
}
|
||||
|
||||
const conPassword = $('#adminUsersChangePwd #conpwd').val();
|
||||
|
||||
if (conPassword !== password) {
|
||||
$('#adminUsersChangePwd_error').html("Passwords don't match");
|
||||
$('#adminUsersChangePwd_error').show();
|
||||
return;
|
||||
}
|
||||
|
||||
const req = { id: this.currentId, pwd: conPassword };
|
||||
const reqJson = JSON.stringify(req);
|
||||
|
||||
const callBackData = [];
|
||||
callBackData.callBackData = [];
|
||||
callBackData.callBackSuccess = 'changePasswordSuccessCallBack';
|
||||
callBackData.callBackFail = 'changePasswordFailCallBack';
|
||||
|
||||
this.customAction('changePassword', 'admin=users', reqJson, callBackData);
|
||||
}
|
||||
|
||||
closeChangePassword() {
|
||||
$('#adminUsersModel').modal('hide');
|
||||
}
|
||||
|
||||
changePasswordSuccessCallBack(callBackData, serverData) {
|
||||
this.closeChangePassword();
|
||||
this.showMessage('Password Change', 'Password changed successfully');
|
||||
}
|
||||
|
||||
changePasswordFailCallBack(callBackData, serverData) {
|
||||
this.closeChangePassword();
|
||||
this.showMessage('Error', callBackData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* UserRoleAdapter
|
||||
*/
|
||||
|
||||
class UserRoleAdapter extends AdapterBase {
|
||||
getDataMapping() {
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
];
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return [
|
||||
{ sTitle: 'ID', bVisible: false },
|
||||
{ sTitle: 'Name' },
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
postRenderForm(object, $tempDomObj) {
|
||||
$tempDomObj.find('#changePasswordBtn').remove();
|
||||
}
|
||||
|
||||
getFormFields() {
|
||||
return [
|
||||
['id', { label: 'ID', type: 'hidden' }],
|
||||
['name', { label: 'Name', type: 'text', validation: '' }],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
UserAdapter,
|
||||
UserRoleAdapter,
|
||||
};
|
||||
Reference in new issue
Block a user