{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/library/modules/es6.array.is-array.js","webpack:///./src/module/Traceplan/EarnListx2.vue?5206","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./src/module/Traceplan/components/HistoryLog.vue?77a4","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./src/module/Traceplan/EarnListx2.vue?a666","webpack:///./node_modules/frappe-gantt/src/date_utils.js","webpack:///./node_modules/frappe-gantt/src/svg_utils.js","webpack:///./node_modules/frappe-gantt/src/bar.js","webpack:///./node_modules/frappe-gantt/src/arrow.js","webpack:///./node_modules/frappe-gantt/src/popup.js","webpack:///./node_modules/frappe-gantt/src/index.js","webpack:///./src/module/Traceplan/components/HistoryLog.vue?3f13","webpack:///src/module/Traceplan/components/HistoryLog.vue","webpack:///./src/module/Traceplan/components/HistoryLog.vue?8033","webpack:///./src/module/Traceplan/components/HistoryLog.vue","webpack:///src/module/Traceplan/EarnListx2.vue","webpack:///./src/module/Traceplan/EarnListx2.vue?e4f4","webpack:///./src/module/Traceplan/EarnListx2.vue","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack:///./src/core/PlanReward/service/BzbsEarnList.js","webpack:///./src/module/Traceplan/EarnListx2.vue?dfe2","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/library/fn/array/is-array.js"],"names":["ctx","IObject","toObject","toLength","asc","module","exports","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","callbackfn","that","val","res","O","self","f","length","index","result","undefined","push","$export","S","isArray","fails","method","arg","call","aFunction","$sort","sort","test","P","F","comparefn","this","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","lbl","allEarning","on","$event","isOpenHistory","currentPointAccumCondition","traceplanPeriod","staticStyle","currentPointCondition","DisableExtraPoint","_e","currentExtraPointCondition","onFilter","_l","i","key","value","handleSelectFilter","label","style","color","isActive","onChangeStatus","model","callback","$$v","status","expression","onResetFilter","onApplyFilter","filter_selected","mapLabel","removeFilter","changeViewMode","viewMode","tasks","class","isShowList","disableCreatePointSetup","handleCreate","getSpecificType","item","EarnKey","Name","handleEdit","getPeriod","StartDate","ExpireDate","getClassName","type","Status","getStatusLabel","extraList","MaxExtraPoint","ExtraEarnKey","ref","staticRenderFns","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","month_names","en","es","ru","ptBr","fr","tr","zh","date","date_separator","time_separator","Date","date_parts","time_parts","parts","split","map","parseInt","vals","parseFloat","concat","with_time","TypeError","get_date_values","padStart","date_string","time_string","format_string","lang","values","d","format_map","YYYY","MM","DD","HH","mm","ss","SSS","D","MMMM","MMM","str","formatted_values","Object","keys","a","b","forEach","includes","replace","date_a","date_b","scale","milliseconds","seconds","hours","minutes","days","months","years","endsWith","Math","floor","slice","qty","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","scores","should_reset","_scale","max_score","no_of_days","month","year","targetLength","padString","String","repeat","$","expr","con","document","querySelector","createSVG","tag","elem","createElementNS","attr","parent","append_to","appendChild","innerHTML","setAttribute","animateSVG","svgElement","from","to","animatedSvgElement","getAnimationElement","event","createEvent","initEvent","eventName","dispatchEvent","dur","begin","animEl","attributeName","animateElement","calcMode","keyTimes","keySplines","cubic_bezier","name","ease","linear","element","selector","delegate","bind","off","handler","removeEventListener","addEventListener","e","delegatedTarget","target","closest","matches","parentNode","getAttribute","gantt","task","set_defaults","prepare","draw","action_completed","prepare_values","prepare_helpers","invalid","height","options","bar_height","x","compute_x","y","compute_y","corner_radius","bar_corner_radius","duration","date_utils","diff","_end","_start","step","width","column_width","progress_width","progress","group","custom_class","id","bar_group","handle_group","SVGElement","prototype","getX","getY","getWidth","getHeight","getEndX","draw_bar","draw_progress_bar","draw_label","draw_resize_handles","$bar","rx","ry","classList","add","$bar_progress","requestAnimationFrame","update_label_position","bar","handle_width","$handle_progress","points","get_progress_polygon_points","join","bar_progress","setup_click_event","popup_trigger","show_popup","unselect_all","trigger_event","bar_being_dragged","start_date","format","language","end_date","subtitle","target_element","title","xs","dependencies","dep","get_bar","valid_x","reduce","prev","curr","update_attr","update_handle_position","update_progressbar_position","update_arrow_position","changed","new_start_date","new_end_date","compute_start_end_date","Number","new_progress","compute_progress","setTimeout","x_in_units","gantt_start","width_in_units","task_start","view_is","header_height","padding","_index","dx","rem","position","odx","isNaN","getBBox","remove","handle","arrows","arrow","update","from_task","to_task","calculate_path","start_x","condition","start_y","end_x","end_y","from_is_below_to","curve","arrow_curve","clockwise","curve_y","offset","path","down_1","down_2","left","Popup","custom_html","make","hide","pointer","Error","html","clientWidth","position_meta","HTMLElement","getBoundingClientRect","top","transform","opacity","VIEW_MODE","QUARTER_DAY","HALF_DAY","WEEK","wrapper","setup_wrapper","setup_options","setup_tasks","change_view_mode","bind_events","svg_element","wrapper_element","$svg","$container","createElement","parent_element","parentElement","popup_wrapper","default_options","view_modes","view_mode","date_format","custom_popup_html","assign","parse","start","end","today","task_end_values","every","deps","trim","filter","generate_id","setup_dependencies","dependency_map","t","mode","update_view_scale","setup_dates","setup_gantt_dates","setup_date_values","gantt_end","start_of","dates","cur_date","clone","bind_grid_click","bind_bar_events","clear","setup_layers","make_grid","make_dates","make_bars","make_arrows","map_arrows_on_bars","set_width","set_scroll_position","layers","layer","make_grid_background","make_grid_rows","make_grid_header","make_grid_ticks","make_grid_highlights","grid_width","grid_height","grid","rows_layer","lines_layer","row_width","row_height","row_y","x1","y1","x2","y2","header_width","tick_x","tick_y","tick_height","tick_class","get_days_in_month","get_dates_to_draw","lower_x","lower_y","lower_text","upper_text","$upper_text","upper_x","upper_y","last_date","get_date_info","date_text","Day_lower","Week_lower","Month_lower","Year_lower","Day_upper","Week_upper","Month_upper","Year_upper","base_pos","x_pos","bars","task_id","dependency","get_task","Boolean","cur_width","actual_width","hours_before_first_task","get_oldest_starting_date","scroll_pos","scrollLeft","hide_popup","is_dragging","x_on_start","y_on_start","is_resizing_left","is_resizing_right","parent_bar_id","action_in_progress","bar_wrapper","contains","offsetX","offsetY","ids","get_all_dependent_tasks","ox","oy","owidth","finaldx","get_snap_position","update_bar_position","date_changed","set_action_completed","bind_bar_progress","is_resizing","$bar_wrapper","min_dx","max_dx","$handle","progress_changed","out","to_process","acc","querySelectorAll","el","modes","Array","some","find","popup","show","args","apply","prev_date","random","toString","historyLog","log","EntityKey","dateFormat","CreatedDate","mapType","EarnType","mapName","Changes","action","Field","OldValue","NewValue","Email","$emit","mixins","props","visible","default","list","watch","data","locale","created","moment","methods","getHistoryLog","BzbsEarnList","then","resolve","catch","reject","component","components","Header","HistoryLog","currentWelcomePoint","numberPerpoint","selected","subFilter","activeTraceplan","activeTraceplanExtra","currentLocale","computed","deep","mounted","init","renderGantt","draggable","getCRMPlusProfile","BzbsProfile","disableGanttDrag","getEarnList","getNormal","subtract","getExtra","setLocale","params","rowKey","localStorage","$find","KEY","forced","arguments","_arrayWithoutHoles","arr","arr2","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","config","Vue","bzbsConfig","token","Cache","get","Token","agencyId","AgencyId","getEarnHistory","strUrl","bzbsModuleUrl","BzbsApi","connectBzbsGet","createEarnPoint","obj","Description","description","Active","active","startDate","expireDate","Expiration","expiration","PointRatio","pointRatio","WelcomePoint","welcomePoint","VdRatio","postJsonData","updateEarnPoint","getEarnPointDetail","earnKey","getEarnListExtra","createEarnPointExtra","ExtraPointRate","pointExtra","updateEarnPointExtra","getEarnPointExtraDetail","extraEarnKey","speciesConstructor","original","isObject","SPECIES","C","constructor"],"mappings":"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r2PoD,EAAkB,G,4HCDtB,MAAMC,EAAO,OACPC,EAAQ,QACRC,EAAM,MACNC,EAAO,OACPC,EAAS,SACTC,EAAS,SACTC,EAAc,cAEdC,EAAc,CAChBC,GAAI,CACA,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEJC,GAAI,CACA,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEJC,GAAI,CACA,SACA,UACA,OACA,SACA,MACA,OACA,OACA,SACA,WACA,UACA,SACA,WAEJC,KAAM,CACF,UACA,YACA,QACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YAEJC,GAAI,CACA,UACA,UACA,OACA,QACA,MACA,OACA,UACA,OACA,YACA,UACA,WACA,YAEJC,GAAI,CACA,OACA,QACA,OACA,QACA,QACA,UACA,SACA,UACA,QACA,OACA,QACA,UAEJC,GAAI,CACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,QAIO,OACX,MAAMC,EAAMC,EAAiB,IAAKC,EAAiB,QAC/C,GAAIF,aAAgBG,KAChB,OAAOH,EAEX,GAAoB,kBAATA,EAAmB,CAC1B,IAAII,EAAYC,EAChB,MAAMC,EAAQN,EAAKO,MAAM,KAEzBH,EAAaE,EAAM,GACdC,MAAMN,GACNO,IAAKnH,GAAQoH,SAASpH,EAAK,KAChCgH,EAAaC,EAAM,IAAMA,EAAM,GAAGC,MAAML,GAGxCE,EAAW,GAAKA,EAAW,GAAK,EAEhC,IAAIM,EAAON,EAUX,OARIC,GAAcA,EAAW3G,SACA,GAArB2G,EAAW3G,SACX2G,EAAW,GAAK,KAAOA,EAAW,GAClCA,EAAW,GAAiC,IAA5BM,WAAWN,EAAW,KAE1CK,EAAOA,EAAKE,OAAOP,IAGhB,IAAIF,QAAQO,KAI3B,UAAUV,EAAMa,GAAY,GACxB,KAAMb,aAAgBG,MAClB,MAAM,IAAIW,UAAU,yBAExB,MAAMJ,EAAO7F,KAAKkG,gBAAgBf,GAAMQ,IAAI,CAACnH,EAAKiD,KACpC,IAANA,IAEAjD,GAAY,GA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WAMAnB,oBACA,sBACA,4DAGA,+CACA,4BAGAE,oBACA,MACA,4DACA,kBACA,YCnJkX,I,wBCQ9WyB,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,olBCgSA,OACfjW,kBACAgV,gBACAkB,YACAC,cACAC,cAEAd,gBACA,OACAC,8BACAc,uBACAC,iBACArK,QACA,CAAAxW,eAAAE,eAAAG,YAAAygB,cAGAC,aACAnhB,YACAkB,iBACAJ,gBAGAA,eACAtB,iBACA8B,gBACAC,WACAsK,WACAnK,2BACAD,cACAe,aACAnD,cACA+hB,mBACAC,wBACAC,mBACAzhB,qBACA4C,kBAGA8e,UACA3hB,iCACA,4BAEA,kCACA,IACA,SACA,+DAKA,KACA,SACA,gEAKAH,sCACA,6DAEA,iDACA,IACA,yBACA,MACA,oBACA,IACA,qDAGA,6DAGAM,sCACA,8BAYA,GAVA,2BACA,yCAEA,WACA,0EACA,sDAEA,qEAOAigB,OACAze,OACAigB,QACArW,oBACA,YACA,sBAKAgV,mBACA,uCACAC,wBACA,aAEAqB,mBACA,oBAEApB,SACAqB,gBAAA,WACA,sBACA,iBACA,0CACA,oBAGAC,uBAAA,WACA,2BACA,0BACA,qCACAC,aACA5L,mBAEA,wBACArN,+DACAqV,0BAAA,uCAKA6D,6BAAA,WACA,gCACAC,2BACAtB,kBACA,oBACAtjB,qCACAA,6BAEAA,yBACA,gBACAA,iCACAA,wBACA,EACAA,qBAEA,uCACA,6BACA,gCACAA,eACAA,oCAIA,6BACA,8CAIAujB,aAEAC,mBACAD,YAIAsB,4BAAA,WACA,2BACA,eAEA,wBACApZ,+DACAqV,0BAAA,sCAKAgE,uBAAA,4EACA,uBACA,cACA,mCACA,qBACA,gBACA,cACA3f,aACAsL,WACAhD,QACA0L,SACAC,OACA9I,WACA8C,gBACA5C,2BAGA,qBAEA,cACA8S,iBACA,uBAEAE,kBACA,2BAKAuB,qBAAA,4EACA,kCACA1B,qBACAC,kBACA,aACA,SACA,gBACA,0CACA,mDAEAhjB,oBACA,gDACA,OACAshB,oBACA/c,gBAGA,2BACA,mBACA,IACA,0BACA,2BAoBA,OAlBA,SACA,WACAyL,MACA,IACA,kCACAA,KAGAA,IAGAA,IAEA3L,SACAA,gCACA,UACAA,SAEA,KACAA,GACAQ,aACAsL,aACAhD,YACA0L,uBACA6L,oBACAnS,qBACAuG,sBACA4L,oBACAnS,qBACAvC,WACA8C,gBACA5C,qBAGA,4BACA,OACA,SACA,WACA,UACA,YAEA,sBACA,sBAEA,qBACA,GAEA,MACA,GAEA,OACA,EAEA,OAIA,oBACA,oCAIA,gCAKA,oBACA+S,iBAEA,oBACAE,QAIAD,mBACA,oBACAC,YAIAwB,oBAAA,4EAuBA,OAtBA,gBACA,CACA9f,aACAsL,WACAhD,QACA0L,SACAC,OACA9I,WACA8C,gBACA5C,0BAEA,CACArL,aACAsL,WACAhD,QACA0L,SACAC,OACA9I,WACA8C,gBACA5C,2BAGA,2BACA6S,0BACAC,kBACA,SACA,mBACA,mCACA,oDACA,mDAEA,8CACA,OACA1B,yBACA/c,gBAGA,uEACAvE,0CACA,mBACA,IACA,0BACA,2BAmBA,OAjBA,SACA,WACAgQ,MACA,IACA,kCACAA,KAGAA,IAGAA,IAEA3L,SACAA,gCACA,UACAA,SACA,KACAA,GACAQ,aACAsL,kBACAhD,YACA0L,uBACA6L,oBACAnS,qBACAuG,sBACA4L,oBACAnS,qBACAvC,WACA8C,gBACA5C,qBAGA,oBACAlQ,wBACA,gCAGAA,sBACA,OACA,SACA,WACA,UACA,YAEA,sBACA,sBAEA,qBACA,GAEA,MACA,GAEA,OACA,EAEA,OAEA,6DAGA,sCACA,qCACAokB,aACA5L,mBAEA,8BAEA,oCACA,yBAEA,oBACAyK,oBAEA,oBACAE,OAGAD,mBACA,oBACAC,YAIAyB,qBACA,2CAEA,qBACA,2DAGA,0BACA,CACAhiB,YACAE,4BAEA,CACAF,eACAE,MACA,mEAEA,CACAF,iBACAE,MACA,2DACA,YAEA,CACAF,gBACAE,MACA,0DACA,WAEA,CACAF,iBACAE,MACA,2DACA,aAIA,yCAEAZ,2BACA,4BAIA,IACA0gB,oCACA8B,oBA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","file":"js/chunk-4da437fa.js","sourcesContent":["// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EarnListx2.vue?vue&type=style&index=0&id=407bc647&lang=scss&scoped=true&\"","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HistoryLog.vue?vue&type=style&index=0&id=b78b9eea&lang=scss&scoped=true&\"","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('Header'),_c('div',{staticClass:\"mx-auto content-outer-container\"},[_c('div',{staticClass:\"mx-auto mainContainer page-wrapper\"},[_c('div',{staticClass:\"header-page\"},[_c('div',{staticClass:\"header-title\"},[_c('a-icon',{attrs:{\"type\":\"fire\",\"theme\":\"filled\"}}),_c('strong',[_vm._v(_vm._s(_vm.lbl['plan-reward-point-earn-tab']))])],1),_c('a-button',{staticClass:\"history-log\",attrs:{\"disabled\":_vm.allEarning.length === 0},on:{\"click\":function($event){_vm.isOpenHistory = true}}},[_c('a-icon',{attrs:{\"type\":\"sync\"}}),_c('span',[_vm._v(_vm._s(_vm.lbl['history_log_text']))])],1)],1),_c('div',{staticClass:\"traceplan-conclusion-wrapper\"},[_c('div',{staticClass:\"conclusion-box\"},[_c('div',{staticClass:\"period\"},[_c('a-icon',{attrs:{\"type\":\"calculator\",\"theme\":\"twoTone\",\"two-tone-color\":\"#f9a601\"}}),_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"detail\"},[_c('strong',[_vm._v(\" \"+_vm._s(_vm.lbl['traceplan-point-accumulation-ratio-title'])+\" \")]),_c('strong',{staticClass:\"point\"},[_vm._v(_vm._s(_vm.currentPointAccumCondition))])]),_c('div',{staticClass:\"desc\"},[_c('span',[_vm._v(_vm._s(_vm.traceplanPeriod()))])])])],1)]),_c('div',{staticClass:\"line-vertical\"}),_c('div',{staticClass:\"conclusion-box\"},[_c('div',{staticClass:\"period\"},[_c('a-icon',{staticStyle:{\"color\":\"#1890ff\"},attrs:{\"type\":\"user-add\"}}),_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"detail\"},[_c('strong',[_vm._v(\" \"+_vm._s(_vm.lbl[ 'traceplan-point-accumulation-field-welcome-points-switch-text' ])+\" \")]),_c('strong',{staticClass:\"point\"},[_vm._v(_vm._s(_vm.currentPointCondition))])]),_c('div',{staticClass:\"desc\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.lbl[ 'traceplan-point-accumulation-field-welcome-points-desc-text' ])+\" \")])])])],1)]),(!_vm.DisableExtraPoint)?_c('div',{staticClass:\"line-vertical\"}):_vm._e(),(!_vm.DisableExtraPoint)?_c('div',{staticClass:\"conclusion-box\"},[_c('div',{staticClass:\"period\"},[_c('a-icon',{attrs:{\"type\":\"up-circle\",\"theme\":\"twoTone\",\"two-tone-color\":\"#f9a601\"}}),_c('div',{staticClass:\"detail-container\"},[_c('div',{staticClass:\"detail\"},[_c('strong',[_vm._v(\" \"+_vm._s(_vm.lbl['concussion-extra-point-text'] || 'Extra Points')+\" \")]),_c('strong',{staticClass:\"point\"},[_vm._v(\" \"+_vm._s(_vm.currentExtraPointCondition)+\" \")])]),_c('div',{staticClass:\"desc\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.lbl['concussion-extra-point-desc-text'] || 'เพิ่มคะแนนสะสม')+\" \")])])])],1)]):_vm._e()]),_c('div',{staticClass:\"filter-wrapper\"},[_c('div',{staticClass:\"left\"},[_c('a-button',{staticClass:\"filtter-button\",on:{\"click\":function($event){_vm.onFilter = !_vm.onFilter}}},[_vm._v(\" \"+_vm._s(_vm.lbl['fillter-text'] || 'Fillter')+\" \"),_c('a-icon',{attrs:{\"type\":\"filter\",\"theme\":\"filled\"}})],1),(_vm.onFilter)?_c('div',{staticClass:\"filter-board\"},[_c('div',{staticClass:\"select-wrapper\"},[_c('div',{staticClass:\"main\"},_vm._l((_vm.filter),function(i){return _c('div',{key:i.value,staticClass:\"option-menu\",on:{\"click\":function($event){return _vm.handleSelectFilter(i.value)}}},[_c('strong',[_vm._v(\" \"+_vm._s(i.label)+\" \")]),_c('a-icon',{style:({ color: i.isActive ? '#FF9800' : '#616161' }),attrs:{\"type\":\"right\"}})],1)}),0),_c('div',{staticClass:\"sub\"},[_c('a-checkbox-group',{on:{\"change\":_vm.onChangeStatus},model:{value:(_vm.status),callback:function ($$v) {_vm.status=$$v},expression:\"status\"}},_vm._l((_vm.subFilter),function(i){return _c('div',{key:i.value,staticClass:\"sub-option-menu\"},[_c('a-checkbox',{attrs:{\"value\":i.value}},[_vm._v(\" \"+_vm._s(i.label)+\" \")])],1)}),0)],1)]),_c('div',{staticClass:\"action-wrapper\"},[_c('a-button',{staticClass:\"reset-btn\",on:{\"click\":_vm.onResetFilter}},[_vm._v(\" \"+_vm._s(_vm.lbl['user-permissions-reset'] || 'Reset')+\" \")]),_c('a-button',{staticClass:\"apply-btn\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onApplyFilter}},[_vm._v(\" \"+_vm._s(_vm.lbl['user-permissions-apply'] || 'Apply')+\" \")])],1)]):_vm._e(),(_vm.filter_selected.status.length)?_c('div',{staticClass:\"tag-filter-wrapper\"},_vm._l((_vm.filter_selected.status),function(i){return _c('a-tag',{key:i,staticClass:\"tag-filter\"},[_vm._v(\" \"+_vm._s(_vm.mapLabel(i))+\" \"),_c('a-icon',{attrs:{\"type\":\"close\"},on:{\"click\":function($event){return _vm.removeFilter(i)}}})],1)}),1):_vm._e()],1),_c('div',{staticClass:\"right\"},[_c('a-radio-group',{on:{\"change\":_vm.changeViewMode},model:{value:(_vm.viewMode),callback:function ($$v) {_vm.viewMode=$$v},expression:\"viewMode\"}},[_c('a-radio-button',{attrs:{\"value\":\"Week\"}},[_vm._v(\" \"+_vm._s(_vm.lbl['traceplan-view-week-mode'] || 'Week'))]),_c('a-radio-button',{attrs:{\"value\":\"Month\"}},[_vm._v(\" \"+_vm._s(_vm.lbl['traceplan-view-month-mode'] || 'Month'))]),_c('a-radio-button',{attrs:{\"value\":\"Year\"}},[_vm._v(\" \"+_vm._s(_vm.lbl['traceplan-view-year-mode'] || 'Year'))])],1)],1)]),_c('div',{staticClass:\"traceplan-wrapper\"},[(_vm.tasks && _vm.tasks.length)?_c('div',{staticClass:\"traceplan-list-container\",class:{ 'hide-menu': !_vm.isShowList }},[_c('div',{staticClass:\"title\"},[_c('a-icon',{staticClass:\"icon-comtrol-menu-list\",class:{ 'icon-comtrol-onhide-menu': !_vm.isShowList },attrs:{\"type\":\"double-left\"},on:{\"click\":function($event){_vm.isShowList = !_vm.isShowList}}})],1),(_vm.isShowList)?_c('div',{staticClass:\"normal-container\"},[_c('div',{staticClass:\"section-type-title\"},[_c('strong',[_vm._v(_vm._s(_vm.lbl['point-accumulation-ratio-title'] || 'Point Accumulation Ratio'))]),_c('a-button',{staticClass:\"create-btn\",attrs:{\"disabled\":_vm.disableCreatePointSetup},on:{\"click\":function($event){return _vm.handleCreate('Point')}}},[_c('a-icon',{attrs:{\"type\":\"plus\"}}),_vm._v(\" \"+_vm._s(_vm.lbl['new'])+\" \")],1)],1),_c('div',{staticClass:\"campaign-wrapper\"},_vm._l((_vm.getSpecificType('Point')),function(item){return _c('div',{key:item.EarnKey,staticClass:\"campaign\"},[_c('div',{staticClass:\"detail\"},[_c('div',{staticClass:\"name\"},[_c('strong',[_vm._v(\" \"+_vm._s(item.Name))]),_c('a-icon',{attrs:{\"type\":\"edit\"},on:{\"click\":function($event){return _vm.handleEdit(item)}}})],1),_c('span',[_vm._v(\" \"+_vm._s(_vm.getPeriod(item.StartDate, item.ExpireDate)))])]),_c('div',{staticClass:\"tag-status\",class:_vm.getClassName(item.type, item.Status)},[_vm._v(\" \"+_vm._s(_vm.getStatusLabel(item.Status))+\" \")])])}),0)]):_vm._e(),_c('div',{staticClass:\"separate-box\"},_vm._l((1),function(i){return _c('div',{key:i,staticStyle:{\"height\":\"38px\"}})}),0),(!_vm.DisableExtraPoint && _vm.isShowList)?_c('div',{staticClass:\"extra-container\"},[_c('div',{staticClass:\"section-type-title\"},[_c('strong',[_vm._v(_vm._s(_vm.lbl['extra-points-title'] || 'Extra Points'))]),_c('a-button',{staticClass:\"create-btn\",attrs:{\"disabled\":_vm.extraList.length >= _vm.MaxExtraPoint},on:{\"click\":function($event){return _vm.handleCreate('Extra')}}},[_c('a-icon',{attrs:{\"type\":\"plus\"}}),_vm._v(\" \"+_vm._s(_vm.lbl['new'])+\" \")],1)],1),_c('div',{staticClass:\"campaign-wrapper\"},_vm._l((_vm.getSpecificType('Extra')),function(item){return _c('div',{key:item.ExtraEarnKey,staticClass:\"campaign\"},[_c('div',{staticClass:\"detail\"},[_c('div',{staticClass:\"name\"},[_c('strong',[_vm._v(\" \"+_vm._s(item.Name))]),_c('a-icon',{attrs:{\"type\":\"edit\"},on:{\"click\":function($event){return _vm.handleEdit(item)}}})],1),_c('span',[_vm._v(\" \"+_vm._s(_vm.getPeriod(item.StartDate, item.ExpireDate)))])]),_c('div',{staticClass:\"tag-status\",class:_vm.getClassName(item.type, item.Status)},[_vm._v(\" \"+_vm._s(_vm.getStatusLabel(item.Status))+\" \")])])}),0)]):_vm._e()]):_c('div',[_c('a-skeleton',{attrs:{\"active\":\"\"}}),_c('a-skeleton',{attrs:{\"active\":\"\"}})],1),_c('div',{ref:\"gantt\",staticClass:\"gantt-container\"},[(!_vm.tasks)?_c('div',[_c('a-skeleton',{attrs:{\"active\":\"\"}}),_c('a-skeleton',{attrs:{\"active\":\"\"}})],1):_vm._e()])])])]),(_vm.isOpenHistory)?_c('div',{staticClass:\"history-log-backdrop-background\"}):_vm._e(),_c('HistoryLog',{attrs:{\"visible\":_vm.isOpenHistory,\"list\":_vm.allEarning},on:{\"close\":function($event){_vm.isOpenHistory = false}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const YEAR = 'year';\nconst MONTH = 'month';\nconst DAY = 'day';\nconst HOUR = 'hour';\nconst MINUTE = 'minute';\nconst SECOND = 'second';\nconst MILLISECOND = 'millisecond';\n\nconst month_names = {\n en: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n es: [\n 'Enero',\n 'Febrero',\n 'Marzo',\n 'Abril',\n 'Mayo',\n 'Junio',\n 'Julio',\n 'Agosto',\n 'Septiembre',\n 'Octubre',\n 'Noviembre',\n 'Diciembre',\n ],\n ru: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n ptBr: [\n 'Janeiro',\n 'Fevereiro',\n 'Março',\n 'Abril',\n 'Maio',\n 'Junho',\n 'Julho',\n 'Agosto',\n 'Setembro',\n 'Outubro',\n 'Novembro',\n 'Dezembro',\n ],\n fr: [\n 'Janvier',\n 'Février',\n 'Mars',\n 'Avril',\n 'Mai',\n 'Juin',\n 'Juillet',\n 'Août',\n 'Septembre',\n 'Octobre',\n 'Novembre',\n 'Décembre',\n ],\n tr: [\n 'Ocak',\n 'Şubat',\n 'Mart',\n 'Nisan',\n 'Mayıs',\n 'Haziran',\n 'Temmuz',\n 'Ağustos',\n 'Eylül',\n 'Ekim',\n 'Kasım',\n 'Aralık',\n ],\n zh: [\n '一月',\n '二月',\n '三月',\n '四月',\n '五月',\n '六月',\n '七月',\n '八月',\n '九月',\n '十月',\n '十一月',\n '十二月',\n ],\n};\n\nexport default {\n parse(date, date_separator = '-', time_separator = /[.:]/) {\n if (date instanceof Date) {\n return date;\n }\n if (typeof date === 'string') {\n let date_parts, time_parts;\n const parts = date.split(' ');\n\n date_parts = parts[0]\n .split(date_separator)\n .map((val) => parseInt(val, 10));\n time_parts = parts[1] && parts[1].split(time_separator);\n\n // month is 0 indexed\n date_parts[1] = date_parts[1] - 1;\n\n let vals = date_parts;\n\n if (time_parts && time_parts.length) {\n if (time_parts.length == 4) {\n time_parts[3] = '0.' + time_parts[3];\n time_parts[3] = parseFloat(time_parts[3]) * 1000;\n }\n vals = vals.concat(time_parts);\n }\n\n return new Date(...vals);\n }\n },\n\n to_string(date, with_time = false) {\n if (!(date instanceof Date)) {\n throw new TypeError('Invalid argument type');\n }\n const vals = this.get_date_values(date).map((val, i) => {\n if (i === 1) {\n // add 1 for month\n val = val + 1;\n }\n\n if (i === 6) {\n return padStart(val + '', 3, '0');\n }\n\n return padStart(val + '', 2, '0');\n });\n const date_string = `${vals[0]}-${vals[1]}-${vals[2]}`;\n const time_string = `${vals[3]}:${vals[4]}:${vals[5]}.${vals[6]}`;\n\n return date_string + (with_time ? ' ' + time_string : '');\n },\n\n format(date, format_string = 'YYYY-MM-DD HH:mm:ss.SSS', lang = 'en') {\n const values = this.get_date_values(date).map((d) => padStart(d, 2, 0));\n const format_map = {\n YYYY: values[0],\n MM: padStart(+values[1] + 1, 2, 0),\n DD: values[2],\n HH: values[3],\n mm: values[4],\n ss: values[5],\n SSS: values[6],\n D: values[2],\n MMMM: month_names[lang][+values[1]],\n MMM: month_names[lang][+values[1]],\n };\n\n let str = format_string;\n const formatted_values = [];\n\n Object.keys(format_map)\n .sort((a, b) => b.length - a.length) // big string first\n .forEach((key) => {\n if (str.includes(key)) {\n str = str.replace(key, `$${formatted_values.length}`);\n formatted_values.push(format_map[key]);\n }\n });\n\n formatted_values.forEach((value, i) => {\n str = str.replace(`$${i}`, value);\n });\n\n return str;\n },\n\n diff(date_a, date_b, scale = DAY) {\n let milliseconds, seconds, hours, minutes, days, months, years;\n\n milliseconds = date_a - date_b;\n seconds = milliseconds / 1000;\n minutes = seconds / 60;\n hours = minutes / 60;\n days = hours / 24;\n months = days / 30;\n years = months / 12;\n\n if (!scale.endsWith('s')) {\n scale += 's';\n }\n\n return Math.floor(\n {\n milliseconds,\n seconds,\n minutes,\n hours,\n days,\n months,\n years,\n }[scale]\n );\n },\n\n today() {\n const vals = this.get_date_values(new Date()).slice(0, 3);\n return new Date(...vals);\n },\n\n now() {\n return new Date();\n },\n\n add(date, qty, scale) {\n qty = parseInt(qty, 10);\n const vals = [\n date.getFullYear() + (scale === YEAR ? qty : 0),\n date.getMonth() + (scale === MONTH ? qty : 0),\n date.getDate() + (scale === DAY ? qty : 0),\n date.getHours() + (scale === HOUR ? qty : 0),\n date.getMinutes() + (scale === MINUTE ? qty : 0),\n date.getSeconds() + (scale === SECOND ? qty : 0),\n date.getMilliseconds() + (scale === MILLISECOND ? qty : 0),\n ];\n return new Date(...vals);\n },\n\n start_of(date, scale) {\n const scores = {\n [YEAR]: 6,\n [MONTH]: 5,\n [DAY]: 4,\n [HOUR]: 3,\n [MINUTE]: 2,\n [SECOND]: 1,\n [MILLISECOND]: 0,\n };\n\n function should_reset(_scale) {\n const max_score = scores[scale];\n return scores[_scale] <= max_score;\n }\n\n const vals = [\n date.getFullYear(),\n should_reset(YEAR) ? 0 : date.getMonth(),\n should_reset(MONTH) ? 1 : date.getDate(),\n should_reset(DAY) ? 0 : date.getHours(),\n should_reset(HOUR) ? 0 : date.getMinutes(),\n should_reset(MINUTE) ? 0 : date.getSeconds(),\n should_reset(SECOND) ? 0 : date.getMilliseconds(),\n ];\n\n return new Date(...vals);\n },\n\n clone(date) {\n return new Date(...this.get_date_values(date));\n },\n\n get_date_values(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ];\n },\n\n get_days_in_month(date) {\n const no_of_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n const month = date.getMonth();\n\n if (month !== 1) {\n return no_of_days[month];\n }\n\n // Feb\n const year = date.getFullYear();\n if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {\n return 29;\n }\n return 28;\n },\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart\nfunction padStart(str, targetLength, padString) {\n str = str + '';\n targetLength = targetLength >> 0;\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n }\n}\n","export function $(expr, con) {\n return typeof expr === 'string'\n ? (con || document).querySelector(expr)\n : expr || null;\n}\n\nexport function createSVG(tag, attrs) {\n const elem = document.createElementNS('http://www.w3.org/2000/svg', tag);\n for (let attr in attrs) {\n if (attr === 'append_to') {\n const parent = attrs.append_to;\n parent.appendChild(elem);\n } else if (attr === 'innerHTML') {\n elem.innerHTML = attrs.innerHTML;\n } else {\n elem.setAttribute(attr, attrs[attr]);\n }\n }\n return elem;\n}\n\nexport function animateSVG(svgElement, attr, from, to) {\n const animatedSvgElement = getAnimationElement(svgElement, attr, from, to);\n\n if (animatedSvgElement === svgElement) {\n // triggered 2nd time programmatically\n // trigger artificial click event\n const event = document.createEvent('HTMLEvents');\n event.initEvent('click', true, true);\n event.eventName = 'click';\n animatedSvgElement.dispatchEvent(event);\n }\n}\n\nfunction getAnimationElement(\n svgElement,\n attr,\n from,\n to,\n dur = '0.4s',\n begin = '0.1s'\n) {\n const animEl = svgElement.querySelector('animate');\n if (animEl) {\n $.attr(animEl, {\n attributeName: attr,\n from,\n to,\n dur,\n begin: 'click + ' + begin, // artificial click\n });\n return svgElement;\n }\n\n const animateElement = createSVG('animate', {\n attributeName: attr,\n from,\n to,\n dur,\n begin,\n calcMode: 'spline',\n values: from + ';' + to,\n keyTimes: '0; 1',\n keySplines: cubic_bezier('ease-out'),\n });\n svgElement.appendChild(animateElement);\n\n return svgElement;\n}\n\nfunction cubic_bezier(name) {\n return {\n ease: '.25 .1 .25 1',\n linear: '0 0 1 1',\n 'ease-in': '.42 0 1 1',\n 'ease-out': '0 0 .58 1',\n 'ease-in-out': '.42 0 .58 1',\n }[name];\n}\n\n$.on = (element, event, selector, callback) => {\n if (!callback) {\n callback = selector;\n $.bind(element, event, callback);\n } else {\n $.delegate(element, event, selector, callback);\n }\n};\n\n$.off = (element, event, handler) => {\n element.removeEventListener(event, handler);\n};\n\n$.bind = (element, event, callback) => {\n event.split(/\\s+/).forEach(function (event) {\n element.addEventListener(event, callback);\n });\n};\n\n$.delegate = (element, event, selector, callback) => {\n element.addEventListener(event, function (e) {\n const delegatedTarget = e.target.closest(selector);\n if (delegatedTarget) {\n e.delegatedTarget = delegatedTarget;\n callback.call(this, e, delegatedTarget);\n }\n });\n};\n\n$.closest = (selector, element) => {\n if (!element) return null;\n\n if (element.matches(selector)) {\n return element;\n }\n\n return $.closest(selector, element.parentNode);\n};\n\n$.attr = (element, attr, value) => {\n if (!value && typeof attr === 'string') {\n return element.getAttribute(attr);\n }\n\n if (typeof attr === 'object') {\n for (let key in attr) {\n $.attr(element, key, attr[key]);\n }\n return;\n }\n\n element.setAttribute(attr, value);\n};\n","import date_utils from './date_utils';\nimport { $, createSVG, animateSVG } from './svg_utils';\n\nexport default class Bar {\n constructor(gantt, task) {\n this.set_defaults(gantt, task);\n this.prepare();\n this.draw();\n this.bind();\n }\n\n set_defaults(gantt, task) {\n this.action_completed = false;\n this.gantt = gantt;\n this.task = task;\n }\n\n prepare() {\n this.prepare_values();\n this.prepare_helpers();\n }\n\n prepare_values() {\n this.invalid = this.task.invalid;\n this.height = this.gantt.options.bar_height;\n this.x = this.compute_x();\n this.y = this.compute_y();\n this.corner_radius = this.gantt.options.bar_corner_radius;\n this.duration =\n date_utils.diff(this.task._end, this.task._start, 'hour') /\n this.gantt.options.step;\n this.width = this.gantt.options.column_width * this.duration;\n this.progress_width =\n this.gantt.options.column_width *\n this.duration *\n (this.task.progress / 100) || 0;\n this.group = createSVG('g', {\n class: 'bar-wrapper ' + (this.task.custom_class || ''),\n 'data-id': this.task.id,\n });\n this.bar_group = createSVG('g', {\n class: 'bar-group',\n append_to: this.group,\n });\n this.handle_group = createSVG('g', {\n class: 'handle-group',\n append_to: this.group,\n });\n }\n\n prepare_helpers() {\n SVGElement.prototype.getX = function () {\n return +this.getAttribute('x');\n };\n SVGElement.prototype.getY = function () {\n return +this.getAttribute('y');\n };\n SVGElement.prototype.getWidth = function () {\n return +this.getAttribute('width');\n };\n SVGElement.prototype.getHeight = function () {\n return +this.getAttribute('height');\n };\n SVGElement.prototype.getEndX = function () {\n return this.getX() + this.getWidth();\n };\n }\n\n draw() {\n this.draw_bar();\n this.draw_progress_bar();\n this.draw_label();\n this.draw_resize_handles();\n }\n\n draw_bar() {\n this.$bar = createSVG('rect', {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height,\n rx: this.corner_radius,\n ry: this.corner_radius,\n class: 'bar',\n append_to: this.bar_group,\n });\n\n animateSVG(this.$bar, 'width', 0, this.width);\n\n if (this.invalid) {\n this.$bar.classList.add('bar-invalid');\n }\n }\n\n draw_progress_bar() {\n if (this.invalid) return;\n this.$bar_progress = createSVG('rect', {\n x: this.x,\n y: this.y,\n width: this.progress_width,\n height: this.height,\n rx: this.corner_radius,\n ry: this.corner_radius,\n class: 'bar-progress',\n append_to: this.bar_group,\n });\n\n animateSVG(this.$bar_progress, 'width', 0, this.progress_width);\n }\n\n draw_label() {\n createSVG('text', {\n x: this.x + this.width / 2,\n y: this.y + this.height / 2,\n innerHTML: this.task.name,\n class: 'bar-label',\n append_to: this.bar_group,\n });\n // labels get BBox in the next tick\n requestAnimationFrame(() => this.update_label_position());\n }\n\n draw_resize_handles() {\n if (this.invalid) return;\n\n const bar = this.$bar;\n const handle_width = 8;\n\n createSVG('rect', {\n x: bar.getX() + bar.getWidth() - 9,\n y: bar.getY() + 1,\n width: handle_width,\n height: this.height - 2,\n rx: this.corner_radius,\n ry: this.corner_radius,\n class: 'handle right',\n append_to: this.handle_group,\n });\n\n createSVG('rect', {\n x: bar.getX() + 1,\n y: bar.getY() + 1,\n width: handle_width,\n height: this.height - 2,\n rx: this.corner_radius,\n ry: this.corner_radius,\n class: 'handle left',\n append_to: this.handle_group,\n });\n\n if (this.task.progress && this.task.progress < 100) {\n this.$handle_progress = createSVG('polygon', {\n points: this.get_progress_polygon_points().join(','),\n class: 'handle progress',\n append_to: this.handle_group,\n });\n }\n }\n\n get_progress_polygon_points() {\n const bar_progress = this.$bar_progress;\n return [\n bar_progress.getEndX() - 5,\n bar_progress.getY() + bar_progress.getHeight(),\n bar_progress.getEndX() + 5,\n bar_progress.getY() + bar_progress.getHeight(),\n bar_progress.getEndX(),\n bar_progress.getY() + bar_progress.getHeight() - 8.66,\n ];\n }\n\n bind() {\n if (this.invalid) return;\n this.setup_click_event();\n }\n\n setup_click_event() {\n $.on(this.group, 'focus ' + this.gantt.options.popup_trigger, (e) => {\n if (this.action_completed) {\n // just finished a move action, wait for a few seconds\n return;\n }\n\n this.show_popup();\n this.gantt.unselect_all();\n this.group.classList.add('active');\n });\n\n $.on(this.group, 'dblclick', (e) => {\n if (this.action_completed) {\n // just finished a move action, wait for a few seconds\n return;\n }\n\n this.gantt.trigger_event('click', [this.task]);\n });\n }\n\n show_popup() {\n if (this.gantt.bar_being_dragged) return;\n\n const start_date = date_utils.format(\n this.task._start,\n 'MMM D',\n this.gantt.options.language\n );\n const end_date = date_utils.format(\n date_utils.add(this.task._end, -1, 'second'),\n 'MMM D',\n this.gantt.options.language\n );\n const subtitle = start_date + ' - ' + end_date;\n\n this.gantt.show_popup({\n target_element: this.$bar,\n title: this.task.name,\n subtitle: subtitle,\n task: this.task,\n });\n }\n\n update_bar_position({ x = null, width = null }) {\n const bar = this.$bar;\n if (x) {\n // get all x values of parent task\n const xs = this.task.dependencies.map((dep) => {\n return this.gantt.get_bar(dep).$bar.getX();\n });\n // child task must not go before parent\n const valid_x = xs.reduce((prev, curr) => {\n return x >= curr;\n }, x);\n if (!valid_x) {\n width = null;\n return;\n }\n this.update_attr(bar, 'x', x);\n }\n if (width && width >= this.gantt.options.column_width) {\n this.update_attr(bar, 'width', width);\n }\n this.update_label_position();\n this.update_handle_position();\n this.update_progressbar_position();\n this.update_arrow_position();\n }\n\n date_changed() {\n let changed = false;\n const { new_start_date, new_end_date } = this.compute_start_end_date();\n\n if (Number(this.task._start) !== Number(new_start_date)) {\n changed = true;\n this.task._start = new_start_date;\n }\n\n if (Number(this.task._end) !== Number(new_end_date)) {\n changed = true;\n this.task._end = new_end_date;\n }\n\n if (!changed) return;\n\n this.gantt.trigger_event('date_change', [\n this.task,\n new_start_date,\n date_utils.add(new_end_date, -1, 'second'),\n ]);\n }\n\n progress_changed() {\n const new_progress = this.compute_progress();\n this.task.progress = new_progress;\n this.gantt.trigger_event('progress_change', [this.task, new_progress]);\n }\n\n set_action_completed() {\n this.action_completed = true;\n setTimeout(() => (this.action_completed = false), 1000);\n }\n\n compute_start_end_date() {\n const bar = this.$bar;\n const x_in_units = bar.getX() / this.gantt.options.column_width;\n const new_start_date = date_utils.add(\n this.gantt.gantt_start,\n x_in_units * this.gantt.options.step,\n 'hour'\n );\n const width_in_units = bar.getWidth() / this.gantt.options.column_width;\n const new_end_date = date_utils.add(\n new_start_date,\n width_in_units * this.gantt.options.step,\n 'hour'\n );\n\n return { new_start_date, new_end_date };\n }\n\n compute_progress() {\n const progress =\n (this.$bar_progress.getWidth() / this.$bar.getWidth()) * 100;\n return parseInt(progress, 10);\n }\n\n compute_x() {\n const { step, column_width } = this.gantt.options;\n const task_start = this.task._start;\n const gantt_start = this.gantt.gantt_start;\n\n const diff = date_utils.diff(task_start, gantt_start, 'hour');\n let x = (diff / step) * column_width;\n\n if (this.gantt.view_is('Month')) {\n const diff = date_utils.diff(task_start, gantt_start, 'day');\n x = (diff * column_width) / 30;\n }\n return x;\n }\n\n compute_y() {\n return (\n this.gantt.options.header_height +\n this.gantt.options.padding +\n this.task._index * (this.height + this.gantt.options.padding)\n );\n }\n\n get_snap_position(dx) {\n let odx = dx,\n rem,\n position;\n\n if (this.gantt.view_is('Week')) {\n rem = dx % (this.gantt.options.column_width / 7);\n position =\n odx -\n rem +\n (rem < this.gantt.options.column_width / 14\n ? 0\n : this.gantt.options.column_width / 7);\n } else if (this.gantt.view_is('Month')) {\n rem = dx % (this.gantt.options.column_width / 30);\n position =\n odx -\n rem +\n (rem < this.gantt.options.column_width / 60\n ? 0\n : this.gantt.options.column_width / 30);\n } else {\n rem = dx % this.gantt.options.column_width;\n position =\n odx -\n rem +\n (rem < this.gantt.options.column_width / 2\n ? 0\n : this.gantt.options.column_width);\n }\n return position;\n }\n\n update_attr(element, attr, value) {\n value = +value;\n if (!isNaN(value)) {\n element.setAttribute(attr, value);\n }\n return element;\n }\n\n update_progressbar_position() {\n this.$bar_progress.setAttribute('x', this.$bar.getX());\n this.$bar_progress.setAttribute(\n 'width',\n this.$bar.getWidth() * (this.task.progress / 100)\n );\n }\n\n update_label_position() {\n const bar = this.$bar,\n label = this.group.querySelector('.bar-label');\n\n if (label.getBBox().width > bar.getWidth()) {\n label.classList.add('big');\n label.setAttribute('x', bar.getX() + bar.getWidth() + 5);\n } else {\n label.classList.remove('big');\n label.setAttribute('x', bar.getX() + bar.getWidth() / 2);\n }\n }\n\n update_handle_position() {\n const bar = this.$bar;\n this.handle_group\n .querySelector('.handle.left')\n .setAttribute('x', bar.getX() + 1);\n this.handle_group\n .querySelector('.handle.right')\n .setAttribute('x', bar.getEndX() - 9);\n const handle = this.group.querySelector('.handle.progress');\n handle &&\n handle.setAttribute('points', this.get_progress_polygon_points());\n }\n\n update_arrow_position() {\n this.arrows = this.arrows || [];\n for (let arrow of this.arrows) {\n arrow.update();\n }\n }\n}\n\nfunction isFunction(functionToCheck) {\n var getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","import { createSVG } from './svg_utils';\n\nexport default class Arrow {\n constructor(gantt, from_task, to_task) {\n this.gantt = gantt;\n this.from_task = from_task;\n this.to_task = to_task;\n\n this.calculate_path();\n this.draw();\n }\n\n calculate_path() {\n let start_x =\n this.from_task.$bar.getX() + this.from_task.$bar.getWidth() / 2;\n\n const condition = () =>\n this.to_task.$bar.getX() < start_x + this.gantt.options.padding &&\n start_x > this.from_task.$bar.getX() + this.gantt.options.padding;\n\n while (condition()) {\n start_x -= 10;\n }\n\n const start_y =\n this.gantt.options.header_height +\n this.gantt.options.bar_height +\n (this.gantt.options.padding + this.gantt.options.bar_height) *\n this.from_task.task._index +\n this.gantt.options.padding;\n\n const end_x = this.to_task.$bar.getX() - this.gantt.options.padding / 2;\n const end_y =\n this.gantt.options.header_height +\n this.gantt.options.bar_height / 2 +\n (this.gantt.options.padding + this.gantt.options.bar_height) *\n this.to_task.task._index +\n this.gantt.options.padding;\n\n const from_is_below_to =\n this.from_task.task._index > this.to_task.task._index;\n const curve = this.gantt.options.arrow_curve;\n const clockwise = from_is_below_to ? 1 : 0;\n const curve_y = from_is_below_to ? -curve : curve;\n const offset = from_is_below_to\n ? end_y + this.gantt.options.arrow_curve\n : end_y - this.gantt.options.arrow_curve;\n\n this.path = `\n M ${start_x} ${start_y}\n V ${offset}\n a ${curve} ${curve} 0 0 ${clockwise} ${curve} ${curve_y}\n L ${end_x} ${end_y}\n m -5 -5\n l 5 5\n l -5 5`;\n\n if (\n this.to_task.$bar.getX() <\n this.from_task.$bar.getX() + this.gantt.options.padding\n ) {\n const down_1 = this.gantt.options.padding / 2 - curve;\n const down_2 =\n this.to_task.$bar.getY() +\n this.to_task.$bar.getHeight() / 2 -\n curve_y;\n const left = this.to_task.$bar.getX() - this.gantt.options.padding;\n\n this.path = `\n M ${start_x} ${start_y}\n v ${down_1}\n a ${curve} ${curve} 0 0 1 -${curve} ${curve}\n H ${left}\n a ${curve} ${curve} 0 0 ${clockwise} -${curve} ${curve_y}\n V ${down_2}\n a ${curve} ${curve} 0 0 ${clockwise} ${curve} ${curve_y}\n L ${end_x} ${end_y}\n m -5 -5\n l 5 5\n l -5 5`;\n }\n }\n\n draw() {\n this.element = createSVG('path', {\n d: this.path,\n 'data-from': this.from_task.task.id,\n 'data-to': this.to_task.task.id,\n });\n }\n\n update() {\n this.calculate_path();\n this.element.setAttribute('d', this.path);\n }\n}\n","export default class Popup {\n constructor(parent, custom_html) {\n this.parent = parent;\n this.custom_html = custom_html;\n this.make();\n }\n\n make() {\n this.parent.innerHTML = `\n
\n \n \n `;\n\n this.hide();\n\n this.title = this.parent.querySelector('.title');\n this.subtitle = this.parent.querySelector('.subtitle');\n this.pointer = this.parent.querySelector('.pointer');\n }\n\n show(options) {\n if (!options.target_element) {\n throw new Error('target_element is required to show popup');\n }\n if (!options.position) {\n options.position = 'left';\n }\n const target_element = options.target_element;\n\n if (this.custom_html) {\n let html = this.custom_html(options.task);\n html += '';\n this.parent.innerHTML = html;\n this.pointer = this.parent.querySelector('.pointer');\n } else {\n // set data\n this.title.innerHTML = options.title;\n this.subtitle.innerHTML = options.subtitle;\n this.parent.style.width = this.parent.clientWidth + 'px';\n }\n\n // set position\n let position_meta;\n if (target_element instanceof HTMLElement) {\n position_meta = target_element.getBoundingClientRect();\n } else if (target_element instanceof SVGElement) {\n position_meta = options.target_element.getBBox();\n }\n\n if (options.position === 'left') {\n this.parent.style.left =\n position_meta.x + (position_meta.width + 10) + 'px';\n this.parent.style.top = position_meta.y + 'px';\n\n this.pointer.style.transform = 'rotateZ(90deg)';\n this.pointer.style.left = '-7px';\n this.pointer.style.top = '2px';\n }\n\n // show\n this.parent.style.opacity = 1;\n }\n\n hide() {\n this.parent.style.opacity = 0;\n this.parent.style.left = 0;\n }\n}\n","import date_utils from './date_utils';\nimport { $, createSVG } from './svg_utils';\nimport Bar from './bar';\nimport Arrow from './arrow';\nimport Popup from './popup';\n\nimport './gantt.scss';\n\nconst VIEW_MODE = {\n QUARTER_DAY: 'Quarter Day',\n HALF_DAY: 'Half Day',\n DAY: 'Day',\n WEEK: 'Week',\n MONTH: 'Month',\n YEAR: 'Year',\n};\n\nexport default class Gantt {\n constructor(wrapper, tasks, options) {\n this.setup_wrapper(wrapper);\n this.setup_options(options);\n this.setup_tasks(tasks);\n // initialize with default view mode\n this.change_view_mode();\n this.bind_events();\n }\n\n setup_wrapper(element) {\n let svg_element, wrapper_element;\n\n // CSS Selector is passed\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n // get the SVGElement\n if (element instanceof HTMLElement) {\n wrapper_element = element;\n svg_element = element.querySelector('svg');\n } else if (element instanceof SVGElement) {\n svg_element = element;\n } else {\n throw new TypeError(\n 'Frappé Gantt only supports usage of a string CSS selector,' +\n \" HTML DOM element or SVG DOM element for the 'element' parameter\"\n );\n }\n\n // svg element\n if (!svg_element) {\n // create it\n this.$svg = createSVG('svg', {\n append_to: wrapper_element,\n class: 'gantt',\n });\n } else {\n this.$svg = svg_element;\n this.$svg.classList.add('gantt');\n }\n\n // wrapper element\n this.$container = document.createElement('div');\n this.$container.classList.add('gantt-container');\n\n const parent_element = this.$svg.parentElement;\n parent_element.appendChild(this.$container);\n this.$container.appendChild(this.$svg);\n\n // popup wrapper\n this.popup_wrapper = document.createElement('div');\n this.popup_wrapper.classList.add('popup-wrapper');\n this.$container.appendChild(this.popup_wrapper);\n }\n\n setup_options(options) {\n const default_options = {\n header_height: 50,\n column_width: 30,\n step: 24,\n view_modes: [...Object.values(VIEW_MODE)],\n bar_height: 20,\n bar_corner_radius: 3,\n arrow_curve: 5,\n padding: 18,\n view_mode: 'Day',\n date_format: 'YYYY-MM-DD',\n popup_trigger: 'click',\n custom_popup_html: null,\n language: 'en',\n };\n this.options = Object.assign({}, default_options, options);\n }\n\n setup_tasks(tasks) {\n // prepare tasks\n this.tasks = tasks.map((task, i) => {\n // convert to Date objects\n task._start = date_utils.parse(task.start);\n task._end = date_utils.parse(task.end);\n\n // make task invalid if duration too large\n if (date_utils.diff(task._end, task._start, 'year') > 10) {\n task.end = null;\n }\n\n // cache index\n task._index = i;\n\n // invalid dates\n if (!task.start && !task.end) {\n const today = date_utils.today();\n task._start = today;\n task._end = date_utils.add(today, 2, 'day');\n }\n\n if (!task.start && task.end) {\n task._start = date_utils.add(task._end, -2, 'day');\n }\n\n if (task.start && !task.end) {\n task._end = date_utils.add(task._start, 2, 'day');\n }\n\n // if hours is not set, assume the last day is full day\n // e.g: 2018-09-09 becomes 2018-09-09 23:59:59\n const task_end_values = date_utils.get_date_values(task._end);\n if (task_end_values.slice(3).every((d) => d === 0)) {\n task._end = date_utils.add(task._end, 24, 'hour');\n }\n\n // invalid flag\n if (!task.start || !task.end) {\n task.invalid = true;\n }\n\n // dependencies\n if (typeof task.dependencies === 'string' || !task.dependencies) {\n let deps = [];\n if (task.dependencies) {\n deps = task.dependencies\n .split(',')\n .map((d) => d.trim())\n .filter((d) => d);\n }\n task.dependencies = deps;\n }\n\n // uids\n if (!task.id) {\n task.id = generate_id(task);\n }\n\n return task;\n });\n\n this.setup_dependencies();\n }\n\n setup_dependencies() {\n this.dependency_map = {};\n for (let t of this.tasks) {\n for (let d of t.dependencies) {\n this.dependency_map[d] = this.dependency_map[d] || [];\n this.dependency_map[d].push(t.id);\n }\n }\n }\n\n refresh(tasks) {\n this.setup_tasks(tasks);\n this.change_view_mode();\n }\n\n change_view_mode(mode = this.options.view_mode) {\n this.update_view_scale(mode);\n this.setup_dates();\n this.render();\n // fire viewmode_change event\n this.trigger_event('view_change', [mode]);\n }\n\n update_view_scale(view_mode) {\n this.options.view_mode = view_mode;\n\n if (view_mode === VIEW_MODE.DAY) {\n this.options.step = 24;\n this.options.column_width = 38;\n } else if (view_mode === VIEW_MODE.HALF_DAY) {\n this.options.step = 24 / 2;\n this.options.column_width = 38;\n } else if (view_mode === VIEW_MODE.QUARTER_DAY) {\n this.options.step = 24 / 4;\n this.options.column_width = 38;\n } else if (view_mode === VIEW_MODE.WEEK) {\n this.options.step = 24 * 7;\n this.options.column_width = 140;\n } else if (view_mode === VIEW_MODE.MONTH) {\n this.options.step = 24 * 30;\n this.options.column_width = 120;\n } else if (view_mode === VIEW_MODE.YEAR) {\n this.options.step = 24 * 365;\n this.options.column_width = 120;\n }\n }\n\n setup_dates() {\n this.setup_gantt_dates();\n this.setup_date_values();\n }\n\n setup_gantt_dates() {\n this.gantt_start = this.gantt_end = null;\n\n for (let task of this.tasks) {\n // set global start and end date\n if (!this.gantt_start || task._start < this.gantt_start) {\n this.gantt_start = task._start;\n }\n if (!this.gantt_end || task._end > this.gantt_end) {\n this.gantt_end = task._end;\n }\n }\n\n this.gantt_start = date_utils.start_of(this.gantt_start, 'day');\n this.gantt_end = date_utils.start_of(this.gantt_end, 'day');\n\n // add date padding on both sides\n if (this.view_is([VIEW_MODE.QUARTER_DAY, VIEW_MODE.HALF_DAY])) {\n this.gantt_start = date_utils.add(this.gantt_start, -7, 'day');\n this.gantt_end = date_utils.add(this.gantt_end, 7, 'day');\n } else if (this.view_is(VIEW_MODE.MONTH)) {\n this.gantt_start = date_utils.start_of(this.gantt_start, 'year');\n this.gantt_end = date_utils.add(this.gantt_end, 1, 'year');\n } else if (this.view_is(VIEW_MODE.YEAR)) {\n this.gantt_start = date_utils.add(this.gantt_start, -2, 'year');\n this.gantt_end = date_utils.add(this.gantt_end, 2, 'year');\n } else {\n this.gantt_start = date_utils.add(this.gantt_start, -1, 'month');\n this.gantt_end = date_utils.add(this.gantt_end, 1, 'month');\n }\n }\n\n setup_date_values() {\n this.dates = [];\n let cur_date = null;\n\n while (cur_date === null || cur_date < this.gantt_end) {\n if (!cur_date) {\n cur_date = date_utils.clone(this.gantt_start);\n } else {\n if (this.view_is(VIEW_MODE.YEAR)) {\n cur_date = date_utils.add(cur_date, 1, 'year');\n } else if (this.view_is(VIEW_MODE.MONTH)) {\n cur_date = date_utils.add(cur_date, 1, 'month');\n } else {\n cur_date = date_utils.add(\n cur_date,\n this.options.step,\n 'hour'\n );\n }\n }\n this.dates.push(cur_date);\n }\n }\n\n bind_events() {\n this.bind_grid_click();\n this.bind_bar_events();\n }\n\n render() {\n this.clear();\n this.setup_layers();\n this.make_grid();\n this.make_dates();\n this.make_bars();\n this.make_arrows();\n this.map_arrows_on_bars();\n this.set_width();\n this.set_scroll_position();\n }\n\n setup_layers() {\n this.layers = {};\n const layers = ['grid', 'date', 'arrow', 'progress', 'bar', 'details'];\n // make group layers\n for (let layer of layers) {\n this.layers[layer] = createSVG('g', {\n class: layer,\n append_to: this.$svg,\n });\n }\n }\n\n make_grid() {\n this.make_grid_background();\n this.make_grid_rows();\n this.make_grid_header();\n this.make_grid_ticks();\n this.make_grid_highlights();\n }\n\n make_grid_background() {\n const grid_width = this.dates.length * this.options.column_width;\n const grid_height =\n this.options.header_height +\n this.options.padding +\n (this.options.bar_height + this.options.padding) *\n this.tasks.length;\n\n createSVG('rect', {\n x: 0,\n y: 0,\n width: grid_width,\n height: grid_height,\n class: 'grid-background',\n append_to: this.layers.grid,\n });\n\n $.attr(this.$svg, {\n height: grid_height + this.options.padding + 100,\n width: '100%',\n });\n }\n\n make_grid_rows() {\n const rows_layer = createSVG('g', { append_to: this.layers.grid });\n const lines_layer = createSVG('g', { append_to: this.layers.grid });\n\n const row_width = this.dates.length * this.options.column_width;\n const row_height = this.options.bar_height + this.options.padding;\n\n let row_y = this.options.header_height + this.options.padding / 2;\n\n for (let task of this.tasks) {\n createSVG('rect', {\n x: 0,\n y: row_y,\n width: row_width,\n height: row_height,\n class: 'grid-row',\n append_to: rows_layer,\n });\n\n createSVG('line', {\n x1: 0,\n y1: row_y + row_height,\n x2: row_width,\n y2: row_y + row_height,\n class: 'row-line',\n append_to: lines_layer,\n });\n\n row_y += this.options.bar_height + this.options.padding;\n }\n }\n\n make_grid_header() {\n const header_width = this.dates.length * this.options.column_width;\n const header_height = this.options.header_height + 10;\n createSVG('rect', {\n x: 0,\n y: 0,\n width: header_width,\n height: header_height,\n class: 'grid-header',\n append_to: this.layers.grid,\n });\n }\n\n make_grid_ticks() {\n let tick_x = 0;\n let tick_y = this.options.header_height + this.options.padding / 2;\n let tick_height =\n (this.options.bar_height + this.options.padding) *\n this.tasks.length;\n\n for (let date of this.dates) {\n let tick_class = 'tick';\n // thick tick for monday\n if (this.view_is(VIEW_MODE.DAY) && date.getDate() === 1) {\n tick_class += ' thick';\n }\n // thick tick for first week\n if (\n this.view_is(VIEW_MODE.WEEK) &&\n date.getDate() >= 1 &&\n date.getDate() < 8\n ) {\n tick_class += ' thick';\n }\n // thick ticks for quarters\n if (\n this.view_is(VIEW_MODE.MONTH) &&\n (date.getMonth() + 1) % 3 === 0\n ) {\n tick_class += ' thick';\n }\n\n createSVG('path', {\n d: `M ${tick_x} ${tick_y} v ${tick_height}`,\n class: tick_class,\n append_to: this.layers.grid,\n });\n\n if (this.view_is(VIEW_MODE.MONTH)) {\n tick_x +=\n (date_utils.get_days_in_month(date) *\n this.options.column_width) /\n 30;\n } else {\n tick_x += this.options.column_width;\n }\n }\n }\n\n make_grid_highlights() {\n // highlight today's date\n if (this.view_is(VIEW_MODE.DAY)) {\n const x =\n (date_utils.diff(date_utils.today(), this.gantt_start, 'hour') /\n this.options.step) *\n this.options.column_width;\n const y = 0;\n\n const width = this.options.column_width;\n const height =\n (this.options.bar_height + this.options.padding) *\n this.tasks.length +\n this.options.header_height +\n this.options.padding / 2;\n\n createSVG('rect', {\n x,\n y,\n width,\n height,\n class: 'today-highlight',\n append_to: this.layers.grid,\n });\n }\n }\n\n make_dates() {\n for (let date of this.get_dates_to_draw()) {\n createSVG('text', {\n x: date.lower_x,\n y: date.lower_y,\n innerHTML: date.lower_text,\n class: 'lower-text',\n append_to: this.layers.date,\n });\n\n if (date.upper_text) {\n const $upper_text = createSVG('text', {\n x: date.upper_x,\n y: date.upper_y,\n innerHTML: date.upper_text,\n class: 'upper-text',\n append_to: this.layers.date,\n });\n\n // remove out-of-bound dates\n if (\n $upper_text.getBBox().x2 > this.layers.grid.getBBox().width\n ) {\n $upper_text.remove();\n }\n }\n }\n }\n\n get_dates_to_draw() {\n let last_date = null;\n const dates = this.dates.map((date, i) => {\n const d = this.get_date_info(date, last_date, i);\n last_date = date;\n return d;\n });\n return dates;\n }\n\n get_date_info(date, last_date, i) {\n if (!last_date) {\n last_date = date_utils.add(date, 1, 'year');\n }\n const date_text = {\n 'Quarter Day_lower': date_utils.format(\n date,\n 'HH',\n this.options.language\n ),\n 'Half Day_lower': date_utils.format(\n date,\n 'HH',\n this.options.language\n ),\n Day_lower:\n date.getDate() !== last_date.getDate()\n ? date_utils.format(date, 'D', this.options.language)\n : '',\n Week_lower:\n date.getMonth() !== last_date.getMonth()\n ? date_utils.format(date, 'D MMM', this.options.language)\n : date_utils.format(date, 'D', this.options.language),\n Month_lower: date_utils.format(date, 'MMMM', this.options.language),\n Year_lower: date_utils.format(date, 'YYYY', this.options.language),\n 'Quarter Day_upper':\n date.getDate() !== last_date.getDate()\n ? date_utils.format(date, 'D MMM', this.options.language)\n : '',\n 'Half Day_upper':\n date.getDate() !== last_date.getDate()\n ? date.getMonth() !== last_date.getMonth()\n ? date_utils.format(\n date,\n 'D MMM',\n this.options.language\n )\n : date_utils.format(date, 'D', this.options.language)\n : '',\n Day_upper:\n date.getMonth() !== last_date.getMonth()\n ? date_utils.format(date, 'MMMM', this.options.language)\n : '',\n Week_upper:\n date.getMonth() !== last_date.getMonth()\n ? date_utils.format(date, 'MMMM', this.options.language)\n : '',\n Month_upper:\n date.getFullYear() !== last_date.getFullYear()\n ? date_utils.format(date, 'YYYY', this.options.language)\n : '',\n Year_upper:\n date.getFullYear() !== last_date.getFullYear()\n ? date_utils.format(date, 'YYYY', this.options.language)\n : '',\n };\n\n const base_pos = {\n x: i * this.options.column_width,\n lower_y: this.options.header_height,\n upper_y: this.options.header_height - 25,\n };\n\n const x_pos = {\n 'Quarter Day_lower': (this.options.column_width * 4) / 2,\n 'Quarter Day_upper': 0,\n 'Half Day_lower': (this.options.column_width * 2) / 2,\n 'Half Day_upper': 0,\n Day_lower: this.options.column_width / 2,\n Day_upper: (this.options.column_width * 30) / 2,\n Week_lower: 0,\n Week_upper: (this.options.column_width * 4) / 2,\n Month_lower: this.options.column_width / 2,\n Month_upper: (this.options.column_width * 12) / 2,\n Year_lower: this.options.column_width / 2,\n Year_upper: (this.options.column_width * 30) / 2,\n };\n\n return {\n upper_text: date_text[`${this.options.view_mode}_upper`],\n lower_text: date_text[`${this.options.view_mode}_lower`],\n upper_x: base_pos.x + x_pos[`${this.options.view_mode}_upper`],\n upper_y: base_pos.upper_y,\n lower_x: base_pos.x + x_pos[`${this.options.view_mode}_lower`],\n lower_y: base_pos.lower_y,\n };\n }\n\n make_bars() {\n this.bars = this.tasks.map((task) => {\n const bar = new Bar(this, task);\n this.layers.bar.appendChild(bar.group);\n return bar;\n });\n }\n\n make_arrows() {\n this.arrows = [];\n for (let task of this.tasks) {\n let arrows = [];\n arrows = task.dependencies\n .map((task_id) => {\n const dependency = this.get_task(task_id);\n if (!dependency) return;\n const arrow = new Arrow(\n this,\n this.bars[dependency._index], // from_task\n this.bars[task._index] // to_task\n );\n this.layers.arrow.appendChild(arrow.element);\n return arrow;\n })\n .filter(Boolean); // filter falsy values\n this.arrows = this.arrows.concat(arrows);\n }\n }\n\n map_arrows_on_bars() {\n for (let bar of this.bars) {\n bar.arrows = this.arrows.filter((arrow) => {\n return (\n arrow.from_task.task.id === bar.task.id ||\n arrow.to_task.task.id === bar.task.id\n );\n });\n }\n }\n\n set_width() {\n const cur_width = this.$svg.getBoundingClientRect().width;\n const actual_width = this.$svg\n .querySelector('.grid .grid-row')\n .getAttribute('width');\n if (cur_width < actual_width) {\n this.$svg.setAttribute('width', actual_width);\n }\n }\n\n set_scroll_position() {\n const parent_element = this.$svg.parentElement;\n if (!parent_element) return;\n\n const hours_before_first_task = date_utils.diff(\n this.get_oldest_starting_date(),\n this.gantt_start,\n 'hour'\n );\n\n const scroll_pos =\n (hours_before_first_task / this.options.step) *\n this.options.column_width -\n this.options.column_width;\n\n parent_element.scrollLeft = scroll_pos;\n }\n\n bind_grid_click() {\n $.on(\n this.$svg,\n this.options.popup_trigger,\n '.grid-row, .grid-header',\n () => {\n this.unselect_all();\n this.hide_popup();\n }\n );\n }\n\n bind_bar_events() {\n let is_dragging = false;\n let x_on_start = 0;\n let y_on_start = 0;\n let is_resizing_left = false;\n let is_resizing_right = false;\n let parent_bar_id = null;\n let bars = []; // instanceof Bar\n this.bar_being_dragged = null;\n\n function action_in_progress() {\n return is_dragging || is_resizing_left || is_resizing_right;\n }\n\n $.on(this.$svg, 'mousedown', '.bar-wrapper, .handle', (e, element) => {\n const bar_wrapper = $.closest('.bar-wrapper', element);\n\n if (element.classList.contains('left')) {\n is_resizing_left = true;\n } else if (element.classList.contains('right')) {\n is_resizing_right = true;\n } else if (element.classList.contains('bar-wrapper')) {\n is_dragging = true;\n }\n\n bar_wrapper.classList.add('active');\n\n x_on_start = e.offsetX;\n y_on_start = e.offsetY;\n\n parent_bar_id = bar_wrapper.getAttribute('data-id');\n const ids = [\n parent_bar_id,\n ...this.get_all_dependent_tasks(parent_bar_id),\n ];\n bars = ids.map((id) => this.get_bar(id));\n\n this.bar_being_dragged = parent_bar_id;\n\n bars.forEach((bar) => {\n const $bar = bar.$bar;\n $bar.ox = $bar.getX();\n $bar.oy = $bar.getY();\n $bar.owidth = $bar.getWidth();\n $bar.finaldx = 0;\n });\n });\n\n $.on(this.$svg, 'mousemove', (e) => {\n if (!action_in_progress()) return;\n const dx = e.offsetX - x_on_start;\n const dy = e.offsetY - y_on_start;\n\n bars.forEach((bar) => {\n const $bar = bar.$bar;\n $bar.finaldx = this.get_snap_position(dx);\n this.hide_popup();\n if (is_resizing_left) {\n if (parent_bar_id === bar.task.id) {\n bar.update_bar_position({\n x: $bar.ox + $bar.finaldx,\n width: $bar.owidth - $bar.finaldx,\n });\n } else {\n bar.update_bar_position({\n x: $bar.ox + $bar.finaldx,\n });\n }\n } else if (is_resizing_right) {\n if (parent_bar_id === bar.task.id) {\n bar.update_bar_position({\n width: $bar.owidth + $bar.finaldx,\n });\n }\n } else if (is_dragging) {\n bar.update_bar_position({ x: $bar.ox + $bar.finaldx });\n }\n });\n });\n\n document.addEventListener('mouseup', (e) => {\n if (is_dragging || is_resizing_left || is_resizing_right) {\n bars.forEach((bar) => bar.group.classList.remove('active'));\n }\n\n is_dragging = false;\n is_resizing_left = false;\n is_resizing_right = false;\n });\n\n $.on(this.$svg, 'mouseup', (e) => {\n this.bar_being_dragged = null;\n bars.forEach((bar) => {\n const $bar = bar.$bar;\n if (!$bar.finaldx) return;\n bar.date_changed();\n bar.set_action_completed();\n });\n });\n\n this.bind_bar_progress();\n }\n\n bind_bar_progress() {\n let x_on_start = 0;\n let y_on_start = 0;\n let is_resizing = null;\n let bar = null;\n let $bar_progress = null;\n let $bar = null;\n\n $.on(this.$svg, 'mousedown', '.handle.progress', (e, handle) => {\n is_resizing = true;\n x_on_start = e.offsetX;\n y_on_start = e.offsetY;\n\n const $bar_wrapper = $.closest('.bar-wrapper', handle);\n const id = $bar_wrapper.getAttribute('data-id');\n bar = this.get_bar(id);\n\n $bar_progress = bar.$bar_progress;\n $bar = bar.$bar;\n\n $bar_progress.finaldx = 0;\n $bar_progress.owidth = $bar_progress.getWidth();\n $bar_progress.min_dx = -$bar_progress.getWidth();\n $bar_progress.max_dx = $bar.getWidth() - $bar_progress.getWidth();\n });\n\n $.on(this.$svg, 'mousemove', (e) => {\n if (!is_resizing) return;\n let dx = e.offsetX - x_on_start;\n let dy = e.offsetY - y_on_start;\n\n if (dx > $bar_progress.max_dx) {\n dx = $bar_progress.max_dx;\n }\n if (dx < $bar_progress.min_dx) {\n dx = $bar_progress.min_dx;\n }\n\n const $handle = bar.$handle_progress;\n $.attr($bar_progress, 'width', $bar_progress.owidth + dx);\n $.attr($handle, 'points', bar.get_progress_polygon_points());\n $bar_progress.finaldx = dx;\n });\n\n $.on(this.$svg, 'mouseup', () => {\n is_resizing = false;\n if (!($bar_progress && $bar_progress.finaldx)) return;\n bar.progress_changed();\n bar.set_action_completed();\n });\n }\n\n get_all_dependent_tasks(task_id) {\n let out = [];\n let to_process = [task_id];\n while (to_process.length) {\n const deps = to_process.reduce((acc, curr) => {\n acc = acc.concat(this.dependency_map[curr]);\n return acc;\n }, []);\n\n out = out.concat(deps);\n to_process = deps.filter((d) => !to_process.includes(d));\n }\n\n return out.filter(Boolean);\n }\n\n get_snap_position(dx) {\n let odx = dx,\n rem,\n position;\n\n if (this.view_is(VIEW_MODE.WEEK)) {\n rem = dx % (this.options.column_width / 7);\n position =\n odx -\n rem +\n (rem < this.options.column_width / 14\n ? 0\n : this.options.column_width / 7);\n } else if (this.view_is(VIEW_MODE.MONTH)) {\n rem = dx % (this.options.column_width / 30);\n position =\n odx -\n rem +\n (rem < this.options.column_width / 60\n ? 0\n : this.options.column_width / 30);\n } else {\n rem = dx % this.options.column_width;\n position =\n odx -\n rem +\n (rem < this.options.column_width / 2\n ? 0\n : this.options.column_width);\n }\n return position;\n }\n\n unselect_all() {\n [...this.$svg.querySelectorAll('.bar-wrapper')].forEach((el) => {\n el.classList.remove('active');\n });\n }\n\n view_is(modes) {\n if (typeof modes === 'string') {\n return this.options.view_mode === modes;\n }\n\n if (Array.isArray(modes)) {\n return modes.some((mode) => this.options.view_mode === mode);\n }\n\n return false;\n }\n\n get_task(id) {\n return this.tasks.find((task) => {\n return task.id === id;\n });\n }\n\n get_bar(id) {\n return this.bars.find((bar) => {\n return bar.task.id === id;\n });\n }\n\n show_popup(options) {\n if (!this.popup) {\n this.popup = new Popup(\n this.popup_wrapper,\n this.options.custom_popup_html\n );\n }\n this.popup.show(options);\n }\n\n hide_popup() {\n this.popup && this.popup.hide();\n }\n\n trigger_event(event, args) {\n if (this.options['on_' + event]) {\n this.options['on_' + event].apply(null, args);\n }\n }\n\n /**\n * Gets the oldest starting date from the list of tasks\n *\n * @returns Date\n * @memberof Gantt\n */\n get_oldest_starting_date() {\n return this.tasks\n .map((task) => task._start)\n .reduce((prev_date, cur_date) =>\n cur_date <= prev_date ? cur_date : prev_date\n );\n }\n\n /**\n * Clear all elements from the parent svg element\n *\n * @memberof Gantt\n */\n clear() {\n this.$svg.innerHTML = '';\n }\n}\n\nGantt.VIEW_MODE = VIEW_MODE;\n\nfunction generate_id(task) {\n return task.name + '_' + Math.random().toString(36).slice(2, 12);\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"history-log-backdrop\"},[_c('div',{staticClass:\"history-log-wrapper\"},[_c('div',{staticClass:\"header-title\"},[_c('a-icon',{attrs:{\"type\":\"sync\"}}),_c('span',[_vm._v(_vm._s(_vm.lbl['history_log_text']))])],1),_c('div',{staticClass:\"history\"},[(_vm.historyLog.length)?_c('div',_vm._l((_vm.historyLog),function(log){return _c('div',{key:log.EntityKey,staticClass:\"log\"},[_c('div',{staticClass:\"timestamp\"},[_c('span',[_vm._v(_vm._s(_vm.dateFormat(log.CreatedDate)))])]),_c('div',{staticClass:\"detail\"},[_c('div',{staticClass:\"title\"},[(log.EarnType)?_c('div',{staticClass:\"badge\"},[_vm._v(\" \"+_vm._s(_vm.mapType(log.EarnType))+\" \")]):_vm._e(),_c('strong',[_vm._v(_vm._s((\"[\" + (log.Action) + \"] \" + (_vm.mapName(log.EntityKey)))))])]),(log.Changes.length)?_c('div',{staticClass:\"action-wrapper\"},_vm._l((log.Changes),function(action,i){return _c('div',{key:i,staticClass:\"log-action\"},[_c('div',{staticClass:\"field-change-name\"},[_vm._v(_vm._s(action.Field))]),_c('div',{staticClass:\"field-change-value\"},[_c('span',{staticClass:\"before\"},[_vm._v(_vm._s(action.OldValue))]),_c('a-icon',{staticClass:\"action-symbol\",attrs:{\"type\":\"arrow-right\"}}),_c('span',{staticClass:\"after\"},[_vm._v(_vm._s(action.NewValue))])],1)])}),0):_vm._e(),_c('div',{staticClass:\"action-by\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.lbl['by_text'] + ' ')+\" \"+_vm._s(((log.Name ? log.Name : '') + \" \" + (log.Email ? (\"- \" + (log.Email)) : '')))+\" \")])])])])}),0):_c('div',[_c('a-empty',{staticClass:\"py-5\"})],1)]),_c('div',{staticClass:\"action\"},[_c('a-button',{staticClass:\"close-history-log-btn\",attrs:{\"size\":\"large\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.lbl['alert-box-success-close-button'])+\" \")])],1)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n