{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./src/components/Dropdown/Dropdown.vue?544e","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/components/DataGrid/DataGrid.vue?467e","webpack:///./src/components/ProjectStatistics/ProjectStatistics.vue?f89d","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./src/utils/shipTypes.ts","webpack:///./src/components/Dropdown/Dropdown.vue?ecb9","webpack:///./src/components/Dropdown/Dropdown.vue","webpack:///./src/components/Dropdown/Dropdown.vue?c292","webpack:///./src/components/Dropdown/Dropdown.vue?8006","webpack:///./node_modules/debounce/index.js","webpack:///./src/views/ProjectPage/ProjectPage.vue?4b8f","webpack:///./src/typing/enums/dataGridErrorType.enum.ts","webpack:///./src/components/DataGrid/DataGrid.vue?75d2","webpack:///./src/components/DataGrid/DataGridColumnType.class.ts","webpack:///./src/components/DataGrid/DataGridColumn.class.ts","webpack:///./src/utils/filters/arrayFilterDistinct.ts","webpack:///./src/components/Checkbox.vue?1d9c","webpack:///./src/components/Checkbox.vue","webpack:///./src/components/Checkbox.vue?391f","webpack:///./src/components/Checkbox.vue?d472","webpack:///./src/components/DataGrid/DataGrid.vue","webpack:///./src/components/DataGrid/DataGrid.vue?9d83","webpack:///./src/components/DataGrid/DataGrid.vue?8114","webpack:///./src/components/DataGrid/DataGridOptions.class.ts","webpack:///./src/components/ProjectStatistics/ProjectStatistics.vue?cda0","webpack:///./src/components/ProjectStatistics/ProjectStatistics.vue","webpack:///./src/components/ProjectStatistics/ProjectStatistics.vue?f4aa","webpack:///./src/components/ProjectStatistics/ProjectStatistics.vue?9642","webpack:///./src/utils/validators/isSameDateAsPreviousTimeValidator.ts","webpack:///./src/utils/validators/timeFormatValidator.ts","webpack:///./src/utils/validators/dateValidator.ts","webpack:///./src/utils/validators/miscTripValidators.ts","webpack:///./src/utils/validators/numberValidator.ts","webpack:///./src/views/ProjectPage/gridOptions/gridFilters.ts","webpack:///./src/views/ProjectPage/gridOptions/statusses.ts","webpack:///./src/utils/validators/isSelectionOptionValidator.ts","webpack:///./src/views/ProjectPage/gridOptions/gridOptions.ts","webpack:///./src/views/ProjectPage/statusFilterOptions.ts","webpack:///./src/views/ProjectPage/isTripEditable.ts","webpack:///./src/typing/projectInformationModalEntries.class.ts","webpack:///./src/components/ProjectStatistics/projectStatistics.class.ts","webpack:///./src/views/ProjectPage/ProjectPage.vue","webpack:///./src/views/ProjectPage/ProjectPage.vue?8f61","webpack:///./src/views/ProjectPage/ProjectPage.vue?c4bb","webpack:///./src/views/ProjectPage/ProjectPage.vue?7f54","webpack:///./src/typing/enums/materialIcon.enum.ts","webpack:///./src/components/Checkbox.vue?4ade"],"names":["fixRegExpWellKnownSymbolLogic","isRegExp","anObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","callRegExpExec","regexpExec","stickyHelpers","UNSUPPORTED_Y","arrayPush","push","min","Math","MAX_UINT32","SPLIT","nativeSplit","maybeCallNative","internalSplit","split","length","separator","limit","string","String","this","lim","undefined","call","match","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","RegExp","source","slice","index","apply","test","O","splitter","regexp","res","done","value","rx","S","C","unicodeMatching","p","q","A","e","z","i","DESCRIPTORS","global","isForced","inheritIfRequired","defineProperty","f","getOwnPropertyNames","getFlags","redefine","fails","enforceInternalState","enforce","setSpecies","wellKnownSymbol","MATCH","NativeRegExp","RegExpPrototype","prototype","re1","re2","CORRECT_NEW","FORCED","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","constructor","indexOf","replace","result","state","proxy","key","configurable","get","set","it","keys","_typeof","obj","Symbol","iterator","charAt","module","exports","shipTypesDropdownValues","label","shipTypeEnumToReadableString","s","find","x","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","selectOptions","labelKey","valueKey","returnFullSelectObject","item","placeholder","options","disabled","on","emitChange","scopedSlots","_u","fn","ref","attributes","_b","_v","option","style","color","iconColor","_s","icon","_e","model","callback","$$v","expression","staticRenderFns","$props","valueIsDefaultAndFalsey","defaultOption","splice","isInitialValue","JSON","stringify","initialValue","isMinusOne","$emit","BaseComponent","props","type","Array","default","Boolean","Number","Object","Function","component","debounce","func","wait","immediate","timeout","args","context","timestamp","later","last","Date","now","setTimeout","debounced","arguments","callNow","clear","clearTimeout","flush","DataGridErrorType","vaknummers","statistics","$event","selectedVakNummer","showProjectInfoModal","isClient","isContractor","changeStatusForTripSelection","TripStatus","OpenClient","ApprovedClient","showDeclineTripModal","isOnline","isSkipper","saveReport","tripSelection","OpenContractor","navigateToReportOverview","selectedStatusFilter","statusFilterOptions","addTrip","gridOptions","dColumns","trips","onDateSelectionChange","onDataGridOptionSelection","updateTrip","onDataGridItemSelection","gridValidationErrors","concat","projectInfoValues","slotData","domProps","projectName","contractorName","projectNumber","projectDescription","shipName","shipVolume","shipType","$refs","projectDetailsModal","closeModal","directives","name","rawName","target","composing","declineTripsReason","closeRejectModal","RejectedContractor","RejectedClient","columns","minWidth","tableMinWidthCSS","generalSelectionValue","toggleSelection","_l","col","maxWidth","maxWidthCSS","minWidthCSS","header","itemIndex","getItemIndexFromShownItem","staticStyle","renderedIndexes","includes","isItemSelectable","items","isItemSelected","colIndex","isIconColumn","iconColorHexFn","iconTitleFn","iconNameFn","isEditable","isRowEditableFunc","allItems","additionalInputType","columnTypes","TimeDate","class","error","columnHasError","focus","isCurrentlyEditingCell","onInputFocus","preventDefault","onInputKeyUp","_k","keyCode","onTabOrEnterEventInput","ctrlKey","shiftKey","altKey","metaKey","stopPropagation","$set","dateValueKey","onDatePickerInput","isUndefined","getUndefinedValue","selectPossibilities","Select","pIndex","onClickSelectionItem","selectOptionValueFn","selectOptionLabelFn","getErrorsByItemIndex","errorIndex","errorType","errorTypes","Error","RequiredError","columnIndex","shownColumns","message","DataGridColumnType","m","validatorFunc","valueWhenBlurOnEmptyFunc","toString","showPlaceholderValue","showAllSelectOptions","group","required","useSelectPossibilitiesWhenUndefined","autoComplete","dateUndefined","selectValue","usedSelectionOption","defaultResult","hasError","dataGridValidationResultIsError","dataGridValidationResultIsRequired","distinct","self","isArray","localValue","_i","$$a","$$el","$$c","checked","$$i","variant","$watch","newValue","currentlyEditingCell","errors","selectedItems","showSelectionBoxes","dayjs","filter","shownItemsFilterFunc","reverse","gridContainer","document","querySelector","offsetTopGrid","offsetTop","scrollPosition","scrollTop","visible","start","end","offsetHeight","toRenderItems","rows","from","querySelectorAll","some","el","id","startPosition","endPosition","debounceDetermineRenderedIndexes","determineRenderedIndexes","validateItemsDebounced","validateEditableItems","addEventListener","forEach","blur","onInputBlur","_emitChangesDebounced","_emitChanges","setSelectDebounced","setSelectPossiblities","_checkIfSelectionBoxesShouldBeVisible","left","scrollLeft","shownItems","n","o","$nextTick","column","val","validationResult","validate","additionalItemValidators","validatorFn","shownItemIndex","tabPressed","_getValueFromCell","trim","fillerValue","itemRef","moveCell","char","toLowerCase","dateValueKeys","event","isProgrammaticBlur","explicitOriginalTarget","parentElement","className","hasErrorIndex","findIndex","validator","previousColumnErrorIndex","itemErrors","sort","a","b","validationErrors","warnings","toFocusColumn","retryNextRow","nextInputName","currentInputName","nextInput","getElementById","currentInput","nextIndex","_getIndexOfFirstEditableColumnForItem","columnRef","groupedColumns","getColumnGroup","valueKeys","flatMap","c","firstItemWithValues","hasValues","firstItemHasErrors","_getSelectPossiblities","cell","itemValue","getValues","values","itemsWithValue","map","getOptionValue","isRowSelectableFunc","forcedValue","handleGeneralSelection","uniqueValueKey","uniqueValue","selectionIndex","_getItemID","_getItemIndexByID","desiredItem","columnGroupName","components","Checkbox","rowValidator","filterValues","emitFilterValue","filterValue","statValues","amountOfTrips","daym3","totalDay","totalProject","emitShowProject","Dropdown","dateColumns","currentColumnIndex","prevColumnKey","currentColumnKey","isSameDate","Warning","stringVal","regex","regexExec","exec","isValid","getTripTimes","trip","addDelayTimes","format","temp","startTime","startTimeDate","startTimeDredging","startTimeDredgingDate","endTimeDredging","endTimeDredgingDate","startTimeDumping","startTimeDumpingDate","endTimeDumping","endTimeDumpingDate","startTimeDelayDate","startTimeDelay","endTimeDelayDate","endTimeDelay","newObj","checkTripTimes","dumpingIsRequired","erroredDates","first","dates","tripDate","date","isSame","currentDate","previousDate","isBefore","checkDelayTimes","boxValidator","hasValue","boxName","boxNumber","startDelay","endOfTripProperty","numberFiller","t","prevColumn","dateKey","prevDate","prevTime","prevValue","currentDateString","currentTime","add","status","OpenSkipper","Close","Send","Done","isSelectionOptionValidator","returnValue","getTripIndex","number","getPreviousTrip","tripIndex","getBoxList","project","boxList","boxType","getGridColumns","shipMaxVolume","smallMaxSize","timeDateSize","mediumMaxSize","columnArr","numberValidatorResult","previousTrip","timeValidatorResult","previousTripTimes","toCheckTime","parsedNumber","parsedTDS","volume","parsedVolume","dumpBoxName","delayType","determineFilterItems","userRole","Skipper","Contractor","Client","Filter","maxShownDate","subtract","startOf","valueOf","isTripEditable","projectData","projectId","shipId","getProjectById","ship","getShipById","maximumVolume","getContractorById","contractorId","description","dateStringFormat","dayFilter","report","getReport","tripsForBoxNumber","reports","r","dayTripsForBoxNumber","dayTrips","_getVolumeFromTrips","reduce","previousValue","currentValue","currentProject","fillModel","$state","distinctBoxNumbers","data","fillValues","tripArrayRef","currentReport","$store","commit","projectTypes","mutations","SET_LAST_VISITED_PROJECT","_setupGrid","_genericInit","_determinePageName","tripNoWithErrors","tripNumber","dataGrid","_dataGridValidate","$forceUpdate","declineTripsModal","correctDate","dispatch","actions","CHECK_TO_UPDATE_REPORTS","SAVE_REPORT","reportRelation","submittingTrips","miscTypes","SET_SHOW_LOADER","Promise","resolve","showLoader","boxListRef","accordingValueIndex","newTripStatus","currentReportId","declineReason","toSubmitTrips","doneMessage","apiCallArgs","toSubmit","neededApiCall","hasErrors","resetSelection","FETCH_PROJECT_DATA","currentlySavedTrips","currentlyKnownTrip","tripDateChanged","UPDATE_TRIP","$router","changedDateKey","console","log","fromKeyIndex","runDateUndefinedForItem","getRole","preselectedStatusFilterIndex","iteratedTrip","tripItems","tripErrors","_setPageName","DataGrid","ProjectStatistics","Modal","Button","MaterialIcon"],"mappings":"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","file":"js/chunk-6b0879cd.de98e591.js","sourcesContent":["'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, UNSUPPORTED_Y);\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=style&index=0&id=4b9123c2&lang=scss&scoped=true&\"","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) {\n var state = enforceInternalState(result);\n state.sticky = true;\n }\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataGrid.vue?vue&type=style&index=0&id=8187184e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectStatistics.vue?vue&type=style&index=0&id=b1ff4d90&lang=scss&scoped=true&\"","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","export const shipTypesDropdownValues = [\r\n { label: 'Sleephopperzuiger', value: 'HopperDredger' },\r\n { label: 'Kraanschip', value: 'GrabDredger' },\r\n { label: 'Ploegboot', value: 'BedLeveller' },\r\n { label: 'Waterinjectievaartuig', value: 'WaterInjection' },\r\n { label: 'Splijtbak', value: 'Barge' },\r\n { label: 'Peilboot', value: 'MultibeamSurvey' },\r\n { label: 'Inspectievaartuig', value: 'SurveyVessel' },\r\n];\r\n\r\nexport function shipTypeEnumToReadableString(s: string) {\r\n return shipTypesDropdownValues.find(x => x.value === s)?.label;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dropdown-wrapper\"},[_c('v-select',{attrs:{\"options\":_vm.selectOptions,\"label\":_vm.labelKey,\"valueKey\":_vm.valueKey,\"reduce\":_vm.returnFullSelectObject ? function (item) { return item; } : function (item) { return item[_vm.valueKey]; },\"placeholder\":_vm.placeholder ? _vm.placeholder : null,\"clearable\":false,\"noDrop\":_vm.options.length < 0,\"disabled\":_vm.disabled},on:{\"input\":_vm.emitChange},scopedSlots:_vm._u([{key:\"open-indicator\",fn:function(ref){\nvar attributes = ref.attributes;\nreturn [_c('span',_vm._b({staticClass:\"material-icons\"},'span',attributes,false),[_vm._v(\"expand_more\")])]}},{key:\"selected-option\",fn:function(option){return [_c('div',{staticClass:\"option-container option-container--selected\"},[(option.icon)?_c('span',{staticClass:\"material-icons\",style:({ color: option.iconColor ? option.iconColor : 'inherit' })},[_vm._v(\" \"+_vm._s(option.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(option[_vm.labelKey])+\" \")])]}},{key:\"option\",fn:function(option){return [_c('div',{staticClass:\"option-container\"},[(option.icon)?_c('span',{staticClass:\"material-icons\",style:({ color: option.iconColor ? option.iconColor : 'inherit' })},[_vm._v(\" \"+_vm._s(option.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(option[_vm.labelKey])+\" \")])]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport BaseComponent from '../BaseComponent';\r\n\r\n@Component({\r\n props: {\r\n labelKey: String,\r\n valueKey: String,\r\n options: {\r\n type: Array,\r\n default: Array,\r\n },\r\n returnFullSelectObject: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n initialValue: [String, Number, Object, Function],\r\n placeholder: String,\r\n disabled: Boolean,\r\n },\r\n})\r\nexport default class Dropdown extends BaseComponent {\r\n value: any | null = null;\r\n\r\n get selectOptions(): any {\r\n const options = [...this.$props.options];\r\n const valueKey = this.$props.valueKey;\r\n const labelKey = this.$props.labelKey;\r\n\r\n if (this.valueIsDefaultAndFalsey) {\r\n const defaultOption = {} as any;\r\n defaultOption[valueKey] = this.value;\r\n defaultOption[labelKey] = 'Selecteer een waarde';\r\n options.splice(0, 0, defaultOption);\r\n }\r\n\r\n return options;\r\n }\r\n\r\n get valueIsDefaultAndFalsey(): boolean {\r\n const isInitialValue =\r\n JSON.stringify(this.$props.initialValue) === JSON.stringify(this.value);\r\n const isMinusOne = JSON.stringify(this.value) === JSON.stringify(-1);\r\n\r\n return isInitialValue && (!this.value || isMinusOne);\r\n }\r\n\r\n mounted(): void {\r\n this.value = this.$props.initialValue ?? null;\r\n }\r\n\r\n emitChange(): void {\r\n this.$emit('input', this.value);\r\n this.$emit('change', this.value);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dropdown.vue?vue&type=template&id=4b9123c2&scoped=true&\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dropdown.vue?vue&type=style&index=0&id=4b9123c2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b9123c2\",\n null\n \n)\n\nexport default component.exports","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.currentProject)?_c('div',{staticClass:\"report-wrapper\"},[_c('div',{staticClass:\"stats-container\"},[_c('ProjectStatistics',{attrs:{\"filterValues\":_vm.vaknummers,\"statValues\":_vm.statistics},on:{\"filterChanged\":function($event){_vm.selectedVakNummer = $event},\"showProject\":function($event){_vm.showProjectInfoModal = true}}})],1),_c('div',{staticClass:\"grid-actions-container\"},[_c('div',{staticClass:\"actions-col\"},[(_vm.isClient() || _vm.isContractor())?[_c('div',{staticClass:\"action\"},[_c('Button',{attrs:{\"variant\":'nsp-primary'},on:{\"click\":function($event){_vm.changeStatusForTripSelection(\n _vm.isContractor()\n ? _vm.TripStatus.OpenClient\n : _vm.TripStatus.ApprovedClient\n )}}},[_vm._v(\" Goedkeuren \")])],1),_c('div',{staticClass:\"action\"},[_c('Button',{attrs:{\"variant\":'nsp-outline-gray'},on:{\"click\":function($event){_vm.showDeclineTripModal = true}}},[_vm._v(\"Afkeuren\")])],1)]:_vm._e(),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.isOnline && (_vm.isSkipper() || _vm.isContractor()))?_c('div',{staticClass:\"action\"},[_c('Button',{attrs:{\"variant\":'nsp-primary'},on:{\"click\":_vm.saveReport}},[_vm._v(\"Opslaan\")])],1):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.isOnline && _vm.isSkipper())?_c('div',{staticClass:\"action\"},[_c('Button',{attrs:{\"disabled\":_vm.tripSelection.length === 0,\"variant\":'nsp-primary'},on:{\"click\":function($event){return _vm.changeStatusForTripSelection(_vm.TripStatus.OpenContractor)}}},[_vm._v(\" Selectie inleveren \")])],1):_vm._e()]),_c('div',{staticClass:\"action hover-right d-inline-block ml-2\"},[_c('span',{staticClass:\"link\",on:{\"click\":function($event){return _vm.navigateToReportOverview()}}},[_vm._v(\" < Terug naar rapport overzicht \")])])],2),_c('div',{staticClass:\"actions-col\"},[_c('div',{staticClass:\"dropdown action\"},[_c('Dropdown',{attrs:{\"initialValue\":_vm.selectedStatusFilter,\"options\":_vm.statusFilterOptions,\"returnFullSelectObject\":true,\"labelKey\":\"label\",\"valueKey\":\"value\"},model:{value:(_vm.selectedStatusFilter),callback:function ($$v) {_vm.selectedStatusFilter=$$v},expression:\"selectedStatusFilter\"}})],1),(_vm.isSkipper())?_c('div',{staticClass:\"action\"},[_c('Button',{attrs:{\"variant\":'nsp-primary'},on:{\"click\":_vm.addTrip}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"add\")]),_vm._v(\" Reis toevoegen \")])],1):_vm._e()])]),_c('DataGrid',{ref:\"dataGrid\",attrs:{\"options\":_vm.gridOptions,\"columns\":_vm.dColumns,\"items\":_vm.trips},on:{\"dateUpdated\":_vm.onDateSelectionChange,\"selectedOption\":_vm.onDataGridOptionSelection,\"updatedItem\":_vm.updateTrip,\"itemSelection\":_vm.onDataGridItemSelection,\"validationErrors\":function($event){_vm.gridValidationErrors = [].concat( $event )}}}),(_vm.showProjectInfoModal)?_c('Modal',{ref:\"projectDetailsModal\",attrs:{\"headerTitle\":\"Project details\",\"size\":\"lg\",\"slotData\":_vm.projectInfoValues,\"closeOnBackdropClick\":true,\"showCloseButton\":true},on:{\"close\":function($event){_vm.showProjectInfoModal = false}},scopedSlots:_vm._u([{key:\"body\",fn:function(slotData){return [_c('div',{staticClass:\"modal-form modal-form--col\"},[_c('div',{staticClass:\"modal-row\"},[_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Project\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.projectName}})]),_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Aannemer\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.contractorName}})])]),_c('div',{staticClass:\"modal-row\"},[_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Projectnummer\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.projectNumber}})]),_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Omschrijving / werkzaamheden\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.projectDescription}})])]),_c('div',{staticClass:\"modal-row\"},[_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Scheepsnaam\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.shipName}})]),_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Beuninhoud\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":slotData.slotData.shipVolume}})]),_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Scheepstype\")]),_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":_vm.shipTypeEnumToReadableString(slotData.slotData.shipType)}})])])])]}},{key:\"footer\",fn:function(){return [_c('Button',{attrs:{\"variant\":'nsp-primary'},on:{\"click\":function($event){return _vm.$refs.projectDetailsModal.closeModal()}}},[_vm._v(\" Sluiten \")])]},proxy:true}],null,false,2902380637)}):_vm._e(),(_vm.showDeclineTripModal && (_vm.isClient() || _vm.isContractor()))?_c('Modal',{ref:\"declineTripsModal\",attrs:{\"headerTitle\":\"Reizen afkeuren\",\"closeOnBackdropClick\":true},on:{\"close\":function($event){_vm.showDeclineTripModal = false}},scopedSlots:_vm._u([{key:\"body\",fn:function(){return [_c('p',[_vm._v(\"Vul hieronder de reden in voor het afkeuren.\")]),_c('label',{staticClass:\"nsp-label\"},[_c('span',{staticClass:\"nsp-label-title\"},[_vm._v(\"Reden\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.declineTripsReason),expression:\"declineTripsReason\"}],attrs:{\"rows\":\"5\",\"cols\":\"40\"},domProps:{\"value\":(_vm.declineTripsReason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.declineTripsReason=$event.target.value}}})])]},proxy:true},{key:\"footer\",fn:function(){return [_c('Button',{attrs:{\"variant\":\"nsp-outline-gray\"},on:{\"click\":_vm.closeRejectModal}},[_vm._v(\" Annuleren \")]),_c('Button',{staticClass:\"ml-1\",attrs:{\"variant\":\"nsp-primary\"},on:{\"click\":function($event){_vm.changeStatusForTripSelection(\n _vm.isContractor()\n ? _vm.TripStatus.RejectedContractor\n : _vm.TripStatus.RejectedClient\n );\n _vm.closeRejectModal();}}},[_vm._v(\" Afkeuren \")])]},proxy:true}],null,false,1501461406)}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export enum DataGridErrorType {\r\n Error = 'error',\r\n RequiredError = 'requiredError',\r\n Warning = 'warning',\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"data-grid-wrapper\"},[_c('div',{ref:\"scroll-container\",staticClass:\"scrollable-container\"},[(_vm.columns.length > 0)?_c('div',{staticClass:\"f-table data-grid-table\",style:({ minWidth: _vm.gridOptions.tableMinWidthCSS })},[_c('div',{ref:\"header-container\",staticClass:\"f-tr f-table-header-container\",style:({ minWidth: _vm.gridOptions.tableMinWidthCSS })},[(_vm.showSelectionBoxes)?_c('div',{staticClass:\"f-th f-td selection-col\"},[_c('Checkbox',{attrs:{\"variant\":'secondary',\"value\":_vm.generalSelectionValue},on:{\"change\":function($event){_vm.generalSelectionValue = $event;\n _vm.toggleSelection();}}})],1):_vm._e(),_vm._l((_vm.shownColumns),function(col,index){return _c('div',{key:index,staticClass:\"f-th f-td\",style:({ maxWidth: col.maxWidthCSS, minWidth: col.minWidthCSS })},[_c('span',[_vm._v(_vm._s(col.header))])])})],2),_c('div',{staticClass:\"table-body\"},[_vm._l((_vm.shownItems),function(item,itemIndex){return [_c('div',{key:(\"row-\" + (_vm.getItemIndexFromShownItem(itemIndex))),staticClass:\"f-tr-container\",staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\"},attrs:{\"id\":(\"tr-\" + itemIndex)}},[(_vm.renderedIndexes.includes(itemIndex))?_c('div',{staticClass:\"f-tr\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showSelectionBoxes)?_c('div',{staticClass:\"f-td selection-col\"},[(\n _vm.isItemSelectable(\n _vm.items[_vm.getItemIndexFromShownItem(itemIndex)]\n )\n )?[_c('Checkbox',{attrs:{\"value\":_vm.isItemSelected(item)},on:{\"change\":function($event){return _vm.toggleSelection(item)}}})]:_vm._e()],2):_vm._e()]),_vm._l((_vm.shownColumns),function(col,colIndex){return _c('div',{key:(\"row-\" + colIndex + \"-\" + itemIndex),staticClass:\"f-td\",staticStyle:{\"position\":\"relative\"},style:({\n maxWidth: col.maxWidthCSS,\n minWidth: col.minWidthCSS,\n })},[(!col.isIconColumn)?[(\n col.isEditable && _vm.gridOptions.isRowEditableFunc(item)\n )?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(\n _vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)][\n col.valueKey\n ]\n ),expression:\"\\n allItems[getItemIndexFromShownItem(itemIndex)][\\n col.valueKey\\n ]\\n \"},{name:\"timeinput\",rawName:\"v-timeinput\",value:(\n col.additionalInputType &&\n col.additionalInputType === _vm.columnTypes.TimeDate\n ? true\n : false\n ),expression:\"\\n col.additionalInputType &&\\n col.additionalInputType === columnTypes.TimeDate\\n ? true\\n : false\\n \"}],staticClass:\"input no-style\",class:{\n error: _vm.columnHasError(item, colIndex),\n focus: _vm.isCurrentlyEditingCell(\n _vm.getItemIndexFromShownItem(itemIndex),\n colIndex\n ),\n },attrs:{\"autocomplete\":\"off\",\"id\":(\"input-\" + (_vm.getItemIndexFromShownItem(\n itemIndex\n )) + \"-\" + colIndex),\"type\":\"text\"},domProps:{\"value\":(\n _vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)][\n col.valueKey\n ]\n )},on:{\"focus\":function($event){_vm.onInputFocus(\n _vm.getItemIndexFromShownItem(itemIndex),\n colIndex\n )},\"blur\":function($event){return $event.preventDefault()},\"keyup\":[function($event){_vm.onInputKeyUp(\n $event,\n _vm.getItemIndexFromShownItem(itemIndex)\n )},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }_vm.onTabOrEnterEventInput(\n _vm.getItemIndexFromShownItem(itemIndex),\n itemIndex,\n colIndex\n )}],\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();$event.stopPropagation();_vm.onTabOrEnterEventInput(\n _vm.getItemIndexFromShownItem(itemIndex),\n itemIndex,\n colIndex\n )},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\")){ return null; }if(!$event.shiftKey){ return null; }if($event.ctrlKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();$event.stopPropagation();_vm.onTabOrEnterEventInput(\n _vm.getItemIndexFromShownItem(itemIndex),\n itemIndex,\n colIndex,\n true\n )}],\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)], \n col.valueKey\n , $event.target.value)}}}),(\n _vm.isCurrentlyEditingCell(\n _vm.getItemIndexFromShownItem(itemIndex),\n colIndex\n )\n )?[(\n col.additionalInputType &&\n col.additionalInputType === _vm.columnTypes.TimeDate\n )?[_c('div',{staticClass:\"td-datepicker\"},[_c('b-form-datepicker',{staticClass:\"td-datepicker\",attrs:{\"size\":\"sm\",\"value\":_vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)][\n col.dateValueKey\n ],\"hide-header\":true,\"button-only\":\"\",\"right\":\"\",\"locale\":\"nl\",\"aria-controls\":\"example-input\"},on:{\"input\":function($event){_vm.onDatePickerInput(\n $event,\n _vm.getItemIndexFromShownItem(itemIndex),\n col\n )}}})],1)]:_vm._e(),(\n _vm.isUndefined(\n _vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)][\n col.valueKey\n ]\n )\n )?_c('div',{staticClass:\"input-placeholder\"},[_vm._v(\" \"+_vm._s(col.getUndefinedValue( _vm.allItems[_vm.getItemIndexFromShownItem(itemIndex)], _vm.selectPossibilities ).value)+\" \")]):_vm._e()]:_vm._e()]:[_c('input',{staticClass:\"no-style\",attrs:{\"type\":\"text\",\"disabled\":\"\"},domProps:{\"value\":_vm.items[_vm.getItemIndexFromShownItem(itemIndex)][\n col.valueKey\n ]}})]]:_c('div',{staticClass:\"icon-col\"},[_c('div',{staticClass:\"material-icons\",style:({\n color: col.iconColorHexFn(item),\n }),attrs:{\"title\":col.iconTitleFn ? col.iconTitleFn(item) : null}},[_vm._v(\" \"+_vm._s(col.iconNameFn(item))+\" \")])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(\n col.additionalInputType &&\n _vm.isCurrentlyEditingCell(\n _vm.getItemIndexFromShownItem(itemIndex),\n colIndex\n ) &&\n _vm.selectPossibilities.length > 0 &&\n col.additionalInputType === _vm.columnTypes.Select\n )?_c('div',{staticClass:\"additional-input\"},[(col.additionalInputType === _vm.columnTypes.Select)?_c('div',[_c('ul',{staticClass:\"select\"},[(false)?_c('span'):_vm._e(),_vm._l((_vm.selectPossibilities),function(p,pIndex){return _c('li',{key:(\"select-item-\" + pIndex),staticClass:\"select-list\",on:{\"!click\":function($event){_vm.onClickSelectionItem(\n _vm.items[_vm.getItemIndexFromShownItem(itemIndex)],\n colIndex,\n itemIndex,\n col.selectOptionValueFn(p)\n )}}},[(false)?_c('span'):_vm._e(),_c('span',{staticClass:\"select-item\"},[_vm._v(\" \"+_vm._s(col.selectOptionLabelFn(p))+\" \")])])})],2)]):_vm._e()]):_vm._e()])],2)})],2):_vm._e(),(\n _vm.getErrorsByItemIndex(_vm.getItemIndexFromShownItem(itemIndex))\n )?_c('div',{staticClass:\"error-row-container\"},_vm._l((_vm.getErrorsByItemIndex(\n _vm.getItemIndexFromShownItem(itemIndex)\n )),function(error,errorIndex){return _c('div',{key:(\"item-\" + (_vm.getItemIndexFromShownItem(\n itemIndex\n )) + \"-error-\" + errorIndex),staticClass:\"error error-container\"},[(_vm.renderedIndexes.includes(itemIndex))?[_c('span',{staticClass:\"material-icons\",class:[error.errorType]},[_vm._v(\" \"+_vm._s(!error.errorType || error.errorType === _vm.errorTypes.Error || error.errorType === _vm.errorTypes.RequiredError ? 'error' : 'warning')+\" \")]),(error.columnIndex >= 0)?_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.shownColumns[error.columnIndex].header)+\" \")]):_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\" Reis \")]),_c('span',[_vm._v(\", \"+_vm._s(error.message))])]:_vm._e()],2)}),0):_vm._e()])]})],2)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export enum DataGridColumnType {\r\n Select = 'select',\r\n TimeDate = 'timeDate',\r\n}\r\n","import { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\nimport { isUndefined } from '@/utils/isUndefined';\r\nimport { DataGridColumnType } from './DataGridColumnType.class';\r\n\r\nexport class DataGridColumn implements IDataGridColumn {\r\n header: string;\r\n valueKey: string;\r\n validatorFunc?: (\r\n value: any,\r\n item?: any,\r\n items?: any[],\r\n column?: DataGridColumn,\r\n columns?: DataGridColumn[]\r\n ) => IDataGridColumnValidatorResult;\r\n valueWhenBlurOnEmptyFunc?: (item: any) => any;\r\n maxWidthCSS?: string;\r\n minWidthCSS?: string;\r\n additionalInputType?: DataGridColumnType;\r\n selectOptions?: any[];\r\n selectOptionLabelFn: (obj: any) => string;\r\n selectOptionValueFn: (obj: any) => any;\r\n isIconColumn?: boolean;\r\n iconNameFn?: (item?: any) => string;\r\n iconColorHexFn?: (item?: any) => string;\r\n iconTitleFn?: (item?: any) => string | null;\r\n showPlaceholderValue?: boolean;\r\n showAllSelectOptions?: boolean;\r\n isEditable?: boolean;\r\n group?: string;\r\n required?: boolean;\r\n useSelectPossibilitiesWhenUndefined?: boolean;\r\n autoComplete!: boolean;\r\n dateValueKey?: string;\r\n dateUndefined?: (item: any, column: DataGridColumn, columns: DataGridColumn[]) => any;\r\n\r\n constructor(m: IDataGridColumn) {\r\n this.header = m.header ?? '';\r\n this.valueKey = m.valueKey ?? '';\r\n this.validatorFunc = (m.validatorFunc as any) ?? undefined;\r\n this.valueWhenBlurOnEmptyFunc = m.valueWhenBlurOnEmptyFunc ?? undefined;\r\n this.maxWidthCSS = m.maxWidthCSS ?? 'unset';\r\n this.minWidthCSS = m.minWidthCSS ?? 'unset';\r\n this.additionalInputType = m.additionalInputType ?? undefined;\r\n this.selectOptions = m.selectOptions ?? undefined;\r\n this.selectOptionLabelFn =\r\n m.selectOptionLabelFn ?? ((obj: any) => obj.toString());\r\n this.selectOptionValueFn = m.selectOptionValueFn ?? ((obj: any) => obj);\r\n this.isIconColumn = m.isIconColumn ?? false;\r\n this.iconNameFn = m.iconNameFn ?? undefined;\r\n this.iconTitleFn = m.iconTitleFn ?? undefined;\r\n this.iconColorHexFn = m.iconColorHexFn ?? undefined;\r\n this.showPlaceholderValue = m.showPlaceholderValue ?? true;\r\n this.showAllSelectOptions = m.showAllSelectOptions ?? false;\r\n this.isEditable = m.isEditable ?? true;\r\n this.group = m.group ?? undefined;\r\n this.required = m.required ?? false;\r\n this.useSelectPossibilitiesWhenUndefined =\r\n m.useSelectPossibilitiesWhenUndefined ?? false;\r\n this.autoComplete = m.autoComplete ?? false;\r\n this.dateValueKey = m.dateValueKey ?? undefined;\r\n this.dateUndefined = m.dateUndefined ?? undefined;\r\n }\r\n\r\n public getUndefinedValue(\r\n item: any,\r\n selectOptions: any\r\n ): { value: any; usedSelectionOption: any } {\r\n if (\r\n selectOptions &&\r\n selectOptions.length > 0 &&\r\n this.useSelectPossibilitiesWhenUndefined\r\n ) {\r\n const selectValue = selectOptions[0];\r\n\r\n if (typeof selectValue === 'object') {\r\n return {\r\n value: this.selectOptionValueFn(selectValue),\r\n usedSelectionOption: selectValue,\r\n };\r\n }\r\n\r\n return { value: selectValue, usedSelectionOption: null };\r\n }\r\n\r\n if (this.valueWhenBlurOnEmptyFunc) {\r\n return {\r\n value: this.valueWhenBlurOnEmptyFunc(item),\r\n usedSelectionOption: null,\r\n };\r\n }\r\n\r\n return { value: null, usedSelectionOption: null };\r\n }\r\n\r\n public validate(item: any, items: any[], columns: DataGridColumn[]): IDataGridColumnValidatorResult {\r\n const defaultResult = { hasError: false, message: undefined };\r\n\r\n if (!this.validatorFunc && !this.required) return defaultResult;\r\n\r\n const value = item[this.valueKey];\r\n\r\n if (isUndefined(value) && this.required) {\r\n return {\r\n hasError: true,\r\n message: 'is een verplicht veld',\r\n errorType: DataGridErrorType.RequiredError,\r\n };\r\n }\r\n\r\n if (!this.validatorFunc) return defaultResult;\r\n\r\n const result = this.validatorFunc(value, item, items, this, columns);\r\n\r\n if (result && result.hasError) {\r\n return {\r\n hasError: result.hasError,\r\n message: result.message,\r\n errorType: result.errorType,\r\n };\r\n }\r\n\r\n return defaultResult;\r\n }\r\n}\r\n\r\ninterface IDataGridColumn {\r\n header: string;\r\n valueKey: string;\r\n validatorFunc?: (\r\n val: any,\r\n item: any,\r\n items: any[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => IDataGridColumnValidatorResult;\r\n valueWhenBlurOnEmptyFunc?: (item: any) => any;\r\n maxWidthCSS?: string;\r\n minWidthCSS?: string;\r\n additionalInputType?: DataGridColumnType;\r\n selectOptions?: any[];\r\n selectOptionLabelFn?: (obj: any) => string;\r\n selectOptionValueFn?: (obj: any) => any;\r\n isIconColumn?: boolean;\r\n iconNameFn?: (item?: any) => string;\r\n iconTitleFn?: (item?: any) => string | null;\r\n iconColorHexFn?: (item?: any) => string;\r\n showPlaceholderValue?: boolean;\r\n showAllSelectOptions?: boolean;\r\n isEditable?: boolean;\r\n group?: string;\r\n required?: boolean;\r\n useSelectPossibilitiesWhenUndefined?: boolean;\r\n autoComplete?: boolean;\r\n dateValueKey?: string;\r\n dateUndefined?: (item: any, column: DataGridColumn, columns: DataGridColumn[]) => any;\r\n}\r\n\r\nexport interface IDataGridColumnValidatorResult {\r\n hasError: boolean;\r\n message?: string;\r\n errorType?:\r\n | DataGridErrorType.Error\r\n | DataGridErrorType.Warning\r\n | DataGridErrorType.RequiredError;\r\n columnIndex?: number;\r\n itemIndex?: number;\r\n}\r\n\r\nexport function dataGridValidationResultIsError(\r\n e: IDataGridColumnValidatorResult\r\n) {\r\n return (\r\n !e.errorType || (e.errorType && e.errorType === DataGridErrorType.Error)\r\n );\r\n}\r\n\r\nexport function dataGridValidationResultIsRequired(\r\n e: IDataGridColumnValidatorResult\r\n) {\r\n return (\r\n !e.errorType ||\r\n (e.errorType && e.errorType === DataGridErrorType.RequiredError)\r\n );\r\n}\r\n","const distinct = (value: any, index: number, self: any) => {\r\n return self.indexOf(value) === index;\r\n};\r\n\r\nexport default distinct;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"checkbox-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.localValue)?_vm._i(_vm.localValue,null)>-1:(_vm.localValue)},on:{\"change\":[function($event){var $$a=_vm.localValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.localValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.localValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.localValue=$$c}},_vm.emitChange]}}),_c('span',{staticClass:\"checkbox-custom\",class:_vm.variant})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport BaseComponent from './BaseComponent';\r\n\r\n@Component({\r\n props: {\r\n value: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n variant: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n },\r\n})\r\nexport default class Checkbox extends BaseComponent {\r\n localValue = false;\r\n\r\n mounted(): void {\r\n this.localValue = this.$props.value;\r\n\r\n this.$watch(\r\n () => this.$props.value,\r\n (newValue: boolean) => {\r\n this.localValue = newValue;\r\n }\r\n );\r\n }\r\n\r\n emitChange(): void {\r\n this.$emit('input', this.localValue);\r\n this.$emit('change', this.localValue);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Checkbox.vue?vue&type=template&id=1ff245af&scoped=true&\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Checkbox.vue?vue&type=style&index=0&id=1ff245af&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ff245af\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport {\r\n DataGridColumn,\r\n dataGridValidationResultIsError,\r\n dataGridValidationResultIsRequired,\r\n IDataGridColumnValidatorResult,\r\n} from './DataGridColumn.class';\r\nimport { DataGridColumnType } from './DataGridColumnType.class';\r\nimport { debounce } from 'debounce';\r\nimport { DataGridOptions } from './DataGridOptions.class';\r\nimport distinct from '@/utils/filters/arrayFilterDistinct';\r\nimport Checkbox from '@/components/Checkbox.vue';\r\nimport { isUndefined } from '@/utils/isUndefined';\r\nimport BaseComponent from '../BaseComponent';\r\nimport { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\nimport $dayjs from '@/utils/dayjs';\r\n\r\n@Component({\r\n props: {\r\n items: {\r\n default: Array,\r\n type: Array,\r\n },\r\n columns: {\r\n default: Array,\r\n type: Array,\r\n },\r\n options: {\r\n type: Object,\r\n required: false,\r\n },\r\n },\r\n components: {\r\n Checkbox,\r\n },\r\n})\r\nexport default class DataGrid extends BaseComponent {\r\n currentlyEditingCell: {\r\n itemIndex: number;\r\n columnIndex: number;\r\n } | null = null;\r\n columnTypes = DataGridColumnType;\r\n errors: IDataGridColumnValidatorResult[] = [];\r\n selectedItems: any[] = [];\r\n generalSelectionValue = false;\r\n isUndefined = isUndefined;\r\n showSelectionBoxes = false;\r\n allItems: any[] = [];\r\n selectPossibilities: string[] = [];\r\n errorTypes = DataGridErrorType;\r\n setSelectDebounced: any;\r\n validateItemsDebounced: any;\r\n dayjs = $dayjs;\r\n renderedIndexes: number[] = [];\r\n debounceDetermineRenderedIndexes: any;\r\n\r\n private _emitChangesDebounced: any;\r\n\r\n get gridOptions(): DataGridOptions {\r\n return this.$props.options;\r\n }\r\n\r\n get shownColumns(): DataGridColumn[] {\r\n return this.$props.columns;\r\n }\r\n\r\n get shownItems(): unknown[] {\r\n return [\r\n ...this.allItems.filter(this.gridOptions.shownItemsFilterFunc),\r\n ].reverse();\r\n }\r\n\r\n determineRenderedIndexes(): void {\r\n const gridContainer = document.querySelector('.data-grid-wrapper') as any;\r\n const offsetTopGrid = gridContainer?.offsetTop ?? 0;\r\n const scrollPosition = gridContainer?.scrollTop ?? 0;\r\n const visible = {\r\n start: scrollPosition - 100,\r\n end: scrollPosition + gridContainer.offsetHeight + 100,\r\n };\r\n\r\n const toRenderItems: any[] = [];\r\n const rows: any[] = Array.from(\r\n document.querySelectorAll('.f-tr-container')\r\n );\r\n\r\n rows.some((el: HTMLDivElement) => {\r\n const itemIndex = el.id.split('-')[1];\r\n const startPosition = el.offsetTop - offsetTopGrid;\r\n const endPosition = startPosition + el.offsetHeight;\r\n\r\n if (startPosition >= visible.start) {\r\n if (endPosition <= visible.end) {\r\n toRenderItems.push(Number(itemIndex));\r\n } else {\r\n toRenderItems.push(Number(itemIndex));\r\n return true;\r\n }\r\n }\r\n });\r\n\r\n this.renderedIndexes = [...toRenderItems];\r\n }\r\n\r\n mounted(): void {\r\n this.debounceDetermineRenderedIndexes = debounce(\r\n this.determineRenderedIndexes,\r\n 200\r\n );\r\n this.validateItemsDebounced = debounce(this.validateEditableItems, 200);\r\n document.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key == 'Escape') {\r\n if (this.currentlyEditingCell) {\r\n Array.from(document.querySelectorAll('input')).forEach((el) =>\r\n el.blur()\r\n );\r\n this.onInputBlur(\r\n null,\r\n this.currentlyEditingCell.itemIndex,\r\n this.currentlyEditingCell.columnIndex\r\n );\r\n this.currentlyEditingCell = null;\r\n }\r\n }\r\n });\r\n\r\n this._emitChangesDebounced = debounce(this._emitChanges, 200);\r\n this.setSelectDebounced = debounce(this.setSelectPossiblities, 200);\r\n this.allItems = [...this.$props.items];\r\n this.showSelectionBoxes = this._checkIfSelectionBoxesShouldBeVisible();\r\n\r\n // Horizontal scroll\r\n (this.$refs['scroll-container'] as any).addEventListener('scroll', () => {\r\n (this.$refs['header-container'] as any).style.left = `-${\r\n (this.$refs['scroll-container'] as any).scrollLeft\r\n }px`;\r\n this.debounceDetermineRenderedIndexes();\r\n });\r\n\r\n // Vertical scroll\r\n document\r\n .querySelector('.data-grid-wrapper')\r\n ?.addEventListener('scroll', () => {\r\n this.debounceDetermineRenderedIndexes();\r\n });\r\n\r\n this.$watch(\r\n () => this.shownItems.length,\r\n (n: number, o: number) => {\r\n if (n > o) {\r\n this.$nextTick(this.debounceDetermineRenderedIndexes);\r\n }\r\n }\r\n );\r\n\r\n this.$watch(\r\n () => this.$props.items,\r\n () => {\r\n this.allItems = [...this.$props.items];\r\n }\r\n );\r\n\r\n this.$watch(\r\n () => this.shownItems,\r\n () =>\r\n (this.showSelectionBoxes = this._checkIfSelectionBoxesShouldBeVisible())\r\n );\r\n\r\n this.$watch(\r\n () => this.currentlyEditingCell?.columnIndex ?? -1,\r\n (n: number) => {\r\n if (n === -1) return;\r\n const column = this.shownColumns[n];\r\n if (\r\n column.selectOptions ||\r\n column.additionalInputType === this.columnTypes.Select\r\n ) {\r\n this.setSelectDebounced();\r\n }\r\n }\r\n );\r\n\r\n this.$watch(\r\n () => this.errors.length,\r\n () => {\r\n this.$emit('validationErrors', [...this.errors]);\r\n }\r\n );\r\n\r\n this.$nextTick(this.debounceDetermineRenderedIndexes);\r\n }\r\n\r\n onDatePickerInput(\r\n val: string,\r\n itemIndex: number,\r\n column: DataGridColumn\r\n ): void {\r\n if (!column.dateValueKey) return;\r\n this.allItems[itemIndex][column.dateValueKey] = val;\r\n this._emitChangesDebounced(itemIndex, this.allItems[itemIndex]);\r\n this.$emit('dateUpdated', {\r\n newValue: val,\r\n item: this.allItems[itemIndex],\r\n itemIndex,\r\n columns: this.shownColumns,\r\n column,\r\n });\r\n }\r\n\r\n isCurrentlyEditingCell(itemIndex: number, columnIndex: number): boolean {\r\n if (!this.currentlyEditingCell) return false;\r\n\r\n return (\r\n this.currentlyEditingCell.itemIndex === itemIndex &&\r\n this.currentlyEditingCell.columnIndex === columnIndex\r\n );\r\n }\r\n\r\n validateEditableItems(): void {\r\n this.errors = [];\r\n this.allItems.forEach((item: any, itemIndex: number) => {\r\n if (\r\n this.gridOptions.shownItemsFilterFunc(item) &&\r\n this.gridOptions.isRowEditableFunc(item)\r\n ) {\r\n this.shownColumns.forEach((col: DataGridColumn, colIndex: number) => {\r\n const validationResult = col.validate(\r\n item,\r\n this.allItems,\r\n this.shownColumns\r\n );\r\n\r\n if (validationResult.hasError) {\r\n validationResult.columnIndex = colIndex;\r\n validationResult.itemIndex = itemIndex;\r\n this.errors.push(validationResult);\r\n }\r\n });\r\n\r\n this.gridOptions.additionalItemValidators.forEach(\r\n (validatorFn: any) => {\r\n const result = validatorFn(item);\r\n\r\n if (result.hasError) {\r\n result.itemIndex = itemIndex;\r\n result.columnIndex = -1;\r\n this.errors.push(result);\r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n this.showSelectionBoxes = this._checkIfSelectionBoxesShouldBeVisible();\r\n }\r\n\r\n onTabOrEnterEventInput(\r\n itemIndex: number,\r\n shownItemIndex: number,\r\n columnIndex: number,\r\n tabPressed: boolean\r\n ): void {\r\n const value = this._getValueFromCell(itemIndex, columnIndex);\r\n const column = this.shownColumns[columnIndex];\r\n\r\n if (\r\n value === null ||\r\n value === undefined ||\r\n value.toString().trim() === '' ||\r\n column.autoComplete\r\n ) {\r\n const column = this.shownColumns[columnIndex];\r\n const item: any = this.allItems[itemIndex];\r\n const fillerValue = column.getUndefinedValue(\r\n item,\r\n this.selectPossibilities\r\n );\r\n\r\n if (fillerValue.usedSelectionOption) {\r\n this.$emit('selectedOption', {\r\n value: fillerValue.value,\r\n itemRef: item,\r\n });\r\n }\r\n\r\n if (fillerValue.value != null) {\r\n item[column.valueKey] = fillerValue.value;\r\n }\r\n }\r\n\r\n if (tabPressed) {\r\n this.moveCell(itemIndex, columnIndex - 1);\r\n } else {\r\n this.moveCell(itemIndex, columnIndex + 1, true);\r\n }\r\n }\r\n\r\n onInputFocus(itemIndex: any, columnIndex: number): void {\r\n if (this.currentlyEditingCell) {\r\n this.onInputBlur(\r\n null,\r\n this.currentlyEditingCell.itemIndex,\r\n this.currentlyEditingCell.columnIndex\r\n );\r\n }\r\n this.currentlyEditingCell = {\r\n itemIndex,\r\n columnIndex,\r\n };\r\n }\r\n\r\n onInputKeyUp(e: KeyboardEvent, itemIndex: number): void {\r\n const char = e.key.toLowerCase();\r\n\r\n if (char === 'tab') {\r\n this._emitChangesDebounced(itemIndex, this.allItems[itemIndex]);\r\n }\r\n\r\n this.setSelectDebounced();\r\n }\r\n\r\n runDateUndefinedForItem(itemIndex: number, dateValueKeys: string[]): void {\r\n const item = this.allItems[itemIndex];\r\n this.shownColumns\r\n .filter((x) => x.dateValueKey && dateValueKeys.includes(x.dateValueKey))\r\n .forEach((column) => {\r\n if (\r\n column.dateValueKey &&\r\n column.dateUndefined &&\r\n item[column.dateValueKey]\r\n ) {\r\n const val = column.dateUndefined(item, column, this.shownColumns);\r\n this.allItems[itemIndex][column.dateValueKey] = val;\r\n }\r\n });\r\n this._emitChanges(itemIndex, this.allItems[itemIndex]);\r\n }\r\n\r\n onInputBlur(event: any | null, itemIndex: number, columnIndex: number): void {\r\n let isProgrammaticBlur = !event;\r\n\r\n if (!isProgrammaticBlur) {\r\n if (\r\n event.explicitOriginalTarget &&\r\n event.explicitOriginalTarget.parentElement\r\n ) {\r\n if (\r\n event.explicitOriginalTarget.parentElement.className ===\r\n 'select-item' ||\r\n event.explicitOriginalTarget.className === 'select-item' ||\r\n event.explicitOriginalTarget.className === 'select-list'\r\n ) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const column: DataGridColumn = this.shownColumns[columnIndex];\r\n const item = this.allItems[itemIndex];\r\n if (\r\n !!item[column.valueKey] &&\r\n column.dateValueKey &&\r\n !item[column.dateValueKey] &&\r\n column.dateUndefined\r\n ) {\r\n this.allItems[itemIndex][column.dateValueKey] = column.dateUndefined(\r\n item,\r\n column,\r\n this.shownColumns\r\n );\r\n }\r\n\r\n this.selectPossibilities = [];\r\n\r\n const hasErrorIndex = this.errors.findIndex(\r\n (error: any) =>\r\n error.itemIndex === itemIndex && error.columnIndex === columnIndex\r\n );\r\n\r\n if (hasErrorIndex > -1) {\r\n this.errors.splice(hasErrorIndex, 1);\r\n }\r\n\r\n const validationResult = column.validate(\r\n this.allItems[itemIndex],\r\n this.allItems,\r\n this.shownColumns\r\n );\r\n\r\n this.gridOptions.additionalItemValidators.forEach(\r\n (validator: (item: any) => IDataGridColumnValidatorResult) => {\r\n const result = validator(this.allItems[itemIndex]);\r\n result.columnIndex = -1;\r\n result.itemIndex = itemIndex;\r\n this.errors.push(result);\r\n }\r\n );\r\n\r\n this.errors = this.errors.filter(\r\n (error: any) => error.columnIndex !== -1 && error.itemIndex === itemIndex\r\n );\r\n\r\n if (validationResult.hasError) {\r\n validationResult.itemIndex = itemIndex;\r\n validationResult.columnIndex = columnIndex;\r\n const previousColumnErrorIndex = this.errors.findIndex(\r\n (error: any) =>\r\n error.itemIndex === itemIndex && error.columnIndex === columnIndex\r\n );\r\n\r\n if (previousColumnErrorIndex > -1) {\r\n this.errors.splice(previousColumnErrorIndex, 1, validationResult);\r\n } else {\r\n this.errors.push(validationResult);\r\n }\r\n }\r\n\r\n if (!isProgrammaticBlur) {\r\n this.currentlyEditingCell = null;\r\n }\r\n\r\n if (this._emitChangesDebounced) {\r\n this._emitChangesDebounced(itemIndex, this.allItems[itemIndex]);\r\n }\r\n }\r\n\r\n getErrorsByItemIndex(itemIndex: number): any {\r\n const errors = this.errors.filter((error) => error.itemIndex === itemIndex);\r\n\r\n if (errors.length > 0) {\r\n const itemErrors = errors.sort(\r\n (a, b) => (a.columnIndex as number) - (b.columnIndex as number)\r\n );\r\n\r\n const validationErrors: IDataGridColumnValidatorResult[] =\r\n itemErrors.filter(\r\n (e: IDataGridColumnValidatorResult) =>\r\n dataGridValidationResultIsError(e) ||\r\n dataGridValidationResultIsRequired(e)\r\n );\r\n const warnings: IDataGridColumnValidatorResult[] = itemErrors.filter(\r\n (e: IDataGridColumnValidatorResult) =>\r\n !dataGridValidationResultIsRequired(e) &&\r\n !dataGridValidationResultIsError(e)\r\n );\r\n\r\n return validationErrors.concat(warnings);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n columnHasError(itemIndex: number, columnIndex: number): boolean {\r\n const itemErrors = this.getErrorsByItemIndex(itemIndex);\r\n\r\n if (!itemErrors) {\r\n return false;\r\n }\r\n\r\n return (\r\n itemErrors.findIndex((error: any) => error.columnIndex === columnIndex) >\r\n -1\r\n );\r\n }\r\n\r\n resetSelection(): void {\r\n this.generalSelectionValue = false;\r\n this.selectedItems = [];\r\n }\r\n\r\n moveCell(\r\n itemIndex: number,\r\n toFocusColumn: number,\r\n retryNextRow = false\r\n ): void {\r\n // Returns boolean saying if item exists and is focussed\r\n const nextInputName = `input-${itemIndex}-${toFocusColumn}`;\r\n const currentInputName = `input-${itemIndex}-${this.currentlyEditingCell?.columnIndex}`;\r\n const nextInput = document.getElementById(nextInputName);\r\n const currentInput = document.getElementById(currentInputName);\r\n if (this.currentlyEditingCell) {\r\n this.onInputBlur(\r\n null,\r\n this.currentlyEditingCell.itemIndex,\r\n this.currentlyEditingCell.columnIndex\r\n );\r\n }\r\n if (nextInput) {\r\n nextInput.focus();\r\n } else {\r\n if (retryNextRow) {\r\n try {\r\n const nextIndex = itemIndex - 1;\r\n this.moveCell(\r\n nextIndex,\r\n this._getIndexOfFirstEditableColumnForItem(\r\n this.shownItems[nextIndex]\r\n )\r\n );\r\n } catch {\r\n currentInput?.blur();\r\n return;\r\n }\r\n } else {\r\n this.$emit('endReached');\r\n }\r\n }\r\n }\r\n\r\n onClickSelectionItem(\r\n itemRef: any,\r\n colIndex: number,\r\n itemIndex: number,\r\n value: any\r\n ): void {\r\n const columnRef = this.shownColumns[colIndex];\r\n const groupedColumns = columnRef.group\r\n ? this.getColumnGroup(columnRef.group)\r\n : null;\r\n itemRef[this.shownColumns[colIndex].valueKey] = value;\r\n\r\n this.$emit('selectedOption', { value, itemRef });\r\n\r\n if (groupedColumns) {\r\n const valueKeys = groupedColumns\r\n .flatMap((c: DataGridColumn) => c.valueKey)\r\n .filter((key: string) => key !== columnRef.valueKey);\r\n\r\n const firstItemWithValues = this.allItems.find((item: any) => {\r\n let hasValues = false;\r\n valueKeys.forEach((key: string, index: number) => {\r\n if ((hasValues && index > 0) || (!hasValues && index === 0)) {\r\n hasValues = !isUndefined(item[key]);\r\n }\r\n });\r\n return hasValues;\r\n });\r\n const firstItemHasErrors = this.getErrorsByItemIndex(itemIndex) !== null;\r\n\r\n if (firstItemWithValues && !firstItemHasErrors) {\r\n valueKeys.forEach((key: string) => {\r\n itemRef[key] = firstItemWithValues[key];\r\n });\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.moveCell(this.getItemIndexFromShownItem(itemIndex), colIndex + 1);\r\n }, 300);\r\n }\r\n\r\n setSelectPossiblities(): void {\r\n this.selectPossibilities = this._getSelectPossiblities();\r\n }\r\n\r\n private _getSelectPossiblities(): string[] {\r\n const cell = this.currentlyEditingCell;\r\n\r\n if (!cell) {\r\n return [];\r\n }\r\n\r\n const column = this.shownColumns[cell.columnIndex];\r\n const itemValue = this._getValueFromCell(cell.itemIndex, cell.columnIndex);\r\n const valueKey = column.valueKey;\r\n\r\n const getValues = () => {\r\n let values = [];\r\n\r\n if (column.selectOptions && column.selectOptions.length > 0) {\r\n values = column.selectOptions;\r\n } else {\r\n const itemsWithValue = this.allItems.filter(\r\n (item: any) => item[valueKey]\r\n ) as string[];\r\n values = itemsWithValue.map((item: any) => item[valueKey]);\r\n }\r\n\r\n if (!itemValue || itemValue.length === 1) {\r\n return values;\r\n }\r\n\r\n const getOptionValue = (val: string) => {\r\n return (\r\n column.selectOptionValueFn ? column.selectOptionValueFn(val) : val\r\n ).toLowerCase();\r\n };\r\n\r\n return values.filter((val: string) =>\r\n getOptionValue(val).includes(itemValue.toLowerCase())\r\n );\r\n };\r\n\r\n if (column.showAllSelectOptions) {\r\n return getValues().filter(distinct);\r\n }\r\n\r\n return getValues().filter(distinct).slice(0, 4);\r\n }\r\n\r\n public handleGeneralSelection(): void {\r\n const items = this.shownItems.filter((item: unknown) =>\r\n this.gridOptions.isRowSelectableFunc(item)\r\n );\r\n\r\n items.forEach((item: any) => {\r\n if (this.isItemSelectable(item)) {\r\n this.toggleSelection(item, !this.generalSelectionValue);\r\n }\r\n });\r\n }\r\n\r\n isItemSelectable(item: any): boolean {\r\n return (\r\n this.gridOptions.isRowEditableFunc(item) &&\r\n this.gridOptions.isRowSelectableFunc(item)\r\n );\r\n }\r\n\r\n toggleSelection(item?: any, forcedValue?: boolean): void {\r\n if (!item) {\r\n this.handleGeneralSelection();\r\n this.$emit('itemSelection', [...this.selectedItems]);\r\n return;\r\n }\r\n\r\n if (!this.gridOptions.uniqueValueKey) {\r\n return;\r\n }\r\n\r\n const uniqueValue = item[this.gridOptions.uniqueValueKey];\r\n const selectionIndex = this.selectedItems.indexOf(uniqueValue);\r\n\r\n if (selectionIndex >= 0 || forcedValue === true) {\r\n this.selectedItems.splice(selectionIndex, 1);\r\n } else {\r\n this.selectedItems.push(uniqueValue);\r\n }\r\n\r\n this.$emit('itemSelection', [...this.selectedItems]);\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems.includes(this._getItemID(item));\r\n }\r\n\r\n getItemIndexFromShownItem(itemIndex: number) {\r\n return this._getItemIndexByID(this.shownItems[itemIndex]);\r\n }\r\n\r\n private _getIndexOfFirstEditableColumnForItem(item: unknown): number {\r\n return this.shownColumns.findIndex((col: DataGridColumn) => {\r\n return (\r\n col.isEditable &&\r\n !col.isIconColumn &&\r\n this.gridOptions.isRowEditableFunc(item)\r\n );\r\n });\r\n }\r\n\r\n private _checkIfSelectionBoxesShouldBeVisible(): boolean {\r\n if (this.shownItems.length === 0) return false;\r\n return this.shownItems.some((item: unknown) => this.isItemSelectable(item));\r\n }\r\n\r\n private _getItemID(desiredItem: any): any {\r\n if (!this.gridOptions.uniqueValueKey) return null;\r\n return desiredItem[this.gridOptions.uniqueValueKey];\r\n }\r\n\r\n private _getItemIndexByID(desiredItem: any): any {\r\n if (!this.gridOptions.uniqueValueKey) return;\r\n\r\n return this.allItems.findIndex(\r\n (item: any) =>\r\n item[this.gridOptions.uniqueValueKey as string] ===\r\n desiredItem[this.gridOptions.uniqueValueKey as string]\r\n );\r\n }\r\n\r\n private _getValueFromCell(itemIndex: number, columnIndex: number): any {\r\n const column = this.shownColumns[columnIndex];\r\n const item: any = this.allItems[itemIndex];\r\n\r\n return item[column.valueKey];\r\n }\r\n\r\n private _emitChanges(itemIndex: number, item: any): void {\r\n this.$emit('updatedItem', {\r\n itemIndex,\r\n item,\r\n });\r\n }\r\n\r\n private getColumnGroup(columnGroupName: string): DataGridColumn[] | null {\r\n if (!columnGroupName) return null;\r\n return this.shownColumns.filter(\r\n (c: DataGridColumn) => (c.group ?? undefined) === columnGroupName\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataGrid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataGrid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DataGrid.vue?vue&type=template&id=8187184e&scoped=true&\"\nimport script from \"./DataGrid.vue?vue&type=script&lang=ts&\"\nexport * from \"./DataGrid.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DataGrid.vue?vue&type=style&index=0&id=8187184e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8187184e\",\n null\n \n)\n\nexport default component.exports","import { IDataGridColumnValidatorResult } from './DataGridColumn.class';\r\n\r\nexport class DataGridOptions {\r\n isRowEditableFunc: (item: any) => boolean;\r\n isRowSelectableFunc: (item: any) => boolean;\r\n shownItemsFilterFunc: (item: any) => boolean;\r\n rowValidator?: (\r\n itemIndex: any,\r\n items: any[]\r\n ) => IDataGridColumnValidatorResult[];\r\n tableMinWidthCSS?: string;\r\n uniqueValueKey?: string;\r\n additionalItemValidators: ((item: any) => any)[];\r\n\r\n constructor() {\r\n this.isRowEditableFunc = () => true;\r\n this.isRowSelectableFunc = () => true;\r\n this.shownItemsFilterFunc = () => true;\r\n this.tableMinWidthCSS = 'unset';\r\n this.rowValidator = undefined;\r\n this.uniqueValueKey = undefined;\r\n this.additionalItemValidators = [];\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"stats-wrapper\"},[_c('div',{staticClass:\"stats-col dropdown-col\"},[_c('Dropdown',{attrs:{\"options\":_vm.filterValues,\"labelKey\":'label',\"valueKey\":'value',\"placeholder\":'Vaknummer'},on:{\"change\":_vm.emitFilterValue},model:{value:(_vm.filterValue),callback:function ($$v) {_vm.filterValue=$$v},expression:\"filterValue\"}})],1),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.filterValue)?_c('div',{staticClass:\"stats-container\"},[_c('div',{staticClass:\"statistic stats-col\"},[_c('span',{staticClass:\"header\"},[_vm._v(\"Reizen\")]),_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm.statValues.amountOfTrips))])]),_c('div',{staticClass:\"statistic stats-col\"},[_c('span',{staticClass:\"header\"},[_vm._v(\"Dag m³ \"),_c('br'),_vm._v(\" voor \"+_vm._s(_vm.filterValue ? _vm.filterValue : '300'))]),_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm.statValues.daym3))])]),_c('div',{staticClass:\"statistic stats-col\"},[_c('span',{staticClass:\"header\"},[_vm._v(\"Totaal vandaag\")]),_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm.statValues.totalDay))])]),_c('div',{staticClass:\"statistic stats-col\"},[_c('span',{staticClass:\"header\"},[_vm._v(\"Totaal project\")]),_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm.statValues.totalProject))])])]):_vm._e()]),(!_vm.filterValue)?_c('div',[_vm._v(\"Selecteer een vaknummer om statistieken te bekijken\")]):_vm._e(),_c('div',{staticClass:\"link-col\"},[_c('div',{staticClass:\"link-wrapper hover-right\"},[_c('span',{staticClass:\"link\",on:{\"click\":_vm.emitShowProject}},[_vm._v(\"Toon project details\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport BaseComponent from '../BaseComponent';\r\nimport Dropdown from '@/components/Dropdown/Dropdown.vue';\r\n\r\n@Component({\r\n components: {\r\n Dropdown\r\n },\r\n props: {\r\n statValues: Object,\r\n filterValues: Array\r\n },\r\n})\r\nexport default class ProjectStatistics extends BaseComponent {\r\n filterValue = null;\r\n\r\n emitShowProject(): void {\r\n this.$emit('showProject');\r\n }\r\n\r\n emitFilterValue(): void {\r\n this.$emit('filterChanged', this.filterValue);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectStatistics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectStatistics.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectStatistics.vue?vue&type=template&id=b1ff4d90&scoped=true&\"\nimport script from \"./ProjectStatistics.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectStatistics.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProjectStatistics.vue?vue&type=style&index=0&id=b1ff4d90&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b1ff4d90\",\n null\n \n)\n\nexport default component.exports","import { DataGridColumn } from '@/components/DataGrid/DataGridColumn.class';\r\nimport { DataGridColumnType } from '@/components/DataGrid/DataGridColumnType.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\nimport { isUndefined } from '../isUndefined';\r\n\r\nconst isSameDateAsPreviousTimeValidator = (\r\n val: string,\r\n item: Trip,\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n) => {\r\n if (isUndefined(val)) {\r\n return { hasError: false };\r\n }\r\n\r\n const dateColumns = columns.filter(\r\n x => x.additionalInputType === DataGridColumnType.TimeDate\r\n );\r\n const currentColumnIndex = dateColumns.findIndex(\r\n x => x.valueKey === column.valueKey\r\n );\r\n\r\n if (currentColumnIndex === 0) {\r\n return { hasError: false };\r\n } else {\r\n const prevColumnKey: any =\r\n dateColumns[currentColumnIndex - 1].dateValueKey;\r\n const currentColumnKey: any =\r\n dateColumns[currentColumnIndex].dateValueKey;\r\n const obj: any = item;\r\n const isSameDate = obj[prevColumnKey] === obj[currentColumnKey];\r\n\r\n return {\r\n hasError: !isSameDate,\r\n errorType: DataGridErrorType.Warning,\r\n message: `Dit veld bevat een nieuwe datum (${obj[currentColumnKey]})`,\r\n };\r\n }\r\n};\r\n\r\nexport default isSameDateAsPreviousTimeValidator;\r\n","import { DataGridColumn } from '@/components/DataGrid/DataGridColumn.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { isUndefined } from '../isUndefined';\r\nimport isSameDateAsPreviousTimeValidator from './isSameDateAsPreviousTimeValidator';\r\n\r\nconst timeValidator = (val: string, item: Trip, column: DataGridColumn, columns: DataGridColumn[]) => {\r\n if (isUndefined(val)) {\r\n return { hasError: false };\r\n }\r\n\r\n const stringVal = val.toString();\r\n\r\n const regex = new RegExp(`(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]`);\r\n const regexExec = regex.exec(stringVal);\r\n\r\n const result = {\r\n hasError:\r\n regexExec === null ||\r\n !(regexExec.length > 0 && regexExec[0] === stringVal),\r\n message: 'Gegeven tijd is niet in het juiste formaat. (uu:mm)',\r\n };\r\n\r\n if (!result.hasError) {\r\n return isSameDateAsPreviousTimeValidator(val, item, column, columns);\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport default timeValidator;\r\n","import $dayjs from '@/utils/dayjs';\r\nimport { isUndefined } from '../isUndefined';\r\n\r\nconst dateValidator = (val: string) => {\r\n if (isUndefined(val)) {\r\n return { hasError: false };\r\n }\r\n\r\n return {\r\n hasError: !$dayjs(val, 'DD/MM/YYYY', true).isValid(),\r\n message:\r\n 'Gegeven is niet een valide datum, gewenste notatie: dd/mm/jjjj',\r\n };\r\n};\r\n\r\nexport default dateValidator;\r\n","import { IBox } from '@/typing/api/box.interface';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport dayjs from 'dayjs';\r\nimport $dayjs from '../dayjs';\r\n\r\nexport function getTripTimes(trip: Trip, addDelayTimes = false): any {\r\n const format = 'YYYY-MM-DD HH:mm';\r\n const temp: any = {\r\n startTime: $dayjs(\r\n `${trip.startTimeDate} ${trip.startTime}`,\r\n format,\r\n true\r\n ),\r\n startTimeDredging: $dayjs(\r\n `${trip.startTimeDredgingDate} ${trip.startTimeDredging}`,\r\n format,\r\n true\r\n ),\r\n endTimeDredging: $dayjs(\r\n `${trip.endTimeDredgingDate} ${trip.endTimeDredging}`,\r\n format,\r\n true\r\n ),\r\n startTimeDumping: $dayjs(\r\n `${trip.startTimeDumpingDate} ${trip.startTimeDumping}`,\r\n format,\r\n true\r\n ),\r\n endTimeDumping: $dayjs(\r\n `${trip.endTimeDumpingDate} ${trip.endTimeDumping}`,\r\n format,\r\n true\r\n ),\r\n };\r\n\r\n if (addDelayTimes) {\r\n temp['startTimeDelay'] = $dayjs(\r\n `${trip.startTimeDelayDate} ${trip.startTimeDelay}`,\r\n format,\r\n true\r\n );\r\n temp['endTimeDelay'] = $dayjs(\r\n `${trip.endTimeDelayDate} ${trip.endTimeDelay}`,\r\n format,\r\n true\r\n );\r\n }\r\n\r\n const newObj: any = {};\r\n\r\n Object.keys(temp).forEach((key: string) => {\r\n if (temp[key] && temp[key].isValid()) {\r\n newObj[key] = temp[key];\r\n }\r\n });\r\n\r\n return newObj;\r\n}\r\n\r\nexport function checkTripTimes(trip: Trip, dumpingIsRequired: boolean): any {\r\n let hasError = false;\r\n const erroredDates: any = { first: null, last: null };\r\n const dates = getTripTimes(trip);\r\n const keys = Object.keys(dates);\r\n\r\n if (dates.startTime) {\r\n const tripDate = $dayjs(trip.date, 'DD/MM/YYYY', true);\r\n if (tripDate.isValid()) {\r\n if (!(dates.startTime as dayjs.Dayjs).isSame(tripDate, 'day')) {\r\n return {\r\n hasError: true,\r\n message: 'Datum komt niet overeen met datum (Start Cyclus)',\r\n };\r\n }\r\n }\r\n }\r\n\r\n hasError = keys.some((key: string, i: number) => {\r\n if (i === 0) return false;\r\n const currentDate: dayjs.Dayjs = dates[key];\r\n const previousDate: dayjs.Dayjs = dates[keys[i - 1]];\r\n\r\n if (\r\n currentDate.isBefore(previousDate, 'minute') ||\r\n currentDate.isBefore(previousDate, 'day')\r\n ) {\r\n erroredDates.first = previousDate;\r\n erroredDates.last = currentDate;\r\n return true;\r\n }\r\n });\r\n\r\n if (hasError) {\r\n const format = 'DD/MM/YYYY HH:mm';\r\n return {\r\n hasError: true,\r\n message: `Deze reis is niet in chronologische volgorde ingevuld. (${erroredDates.first.format(\r\n format\r\n )} & ${erroredDates.last.format(format)})`,\r\n };\r\n } else {\r\n return checkDelayTimes(trip, dates, dumpingIsRequired);\r\n }\r\n}\r\n\r\nexport const boxValidator: any = (\r\n itemValue: any,\r\n selectOptions: IBox[],\r\n trip: Trip\r\n): any => {\r\n const hasValue = selectOptions.some(\r\n (val: IBox) =>\r\n val.boxName.toLowerCase() === (trip?.boxName ?? '').toLowerCase() &&\r\n val.boxNumber.toLowerCase() === (trip.boxNumber ?? '').toLowerCase()\r\n );\r\n\r\n return {\r\n hasError: hasValue === false,\r\n message: 'Is niet bekend.',\r\n };\r\n};\r\n\r\nexport function checkDelayTimes(\r\n trip: Trip,\r\n dates: any,\r\n dumpingIsRequired: boolean\r\n): any {\r\n if (!trip.startTimeDelay || !trip.endTimeDelay) return { hasError: false };\r\n const startDelay = $dayjs(\r\n `${trip.startTimeDelayDate} ${trip.startTimeDelay}`,\r\n 'YYYY-MM-DD HH:mm'\r\n );\r\n\r\n const endOfTripProperty =\r\n dumpingIsRequired || trip.endTimeDumping\r\n ? 'endTimeDumping'\r\n : 'endTimeDredging';\r\n\r\n if (!dates.startTime || !dates[endOfTripProperty]) {\r\n return { hasError: false };\r\n }\r\n\r\n const startTime = dates.startTime;\r\n\r\n if (startDelay < startTime) {\r\n return {\r\n hasError: true,\r\n message: 'Verlet starttijd is vroeger dan de start van de reis',\r\n };\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n}\r\n","import { isUndefined } from '../isUndefined';\r\n\r\nconst numberValidator = (val: string) => {\r\n if (isUndefined(val)) {\r\n return { hasError: false };\r\n }\r\n\r\n const stringVal = val.toString();\r\n\r\n const regex = new RegExp(\r\n `^-?(?:\\\\d+|\\\\d{1,3}(?:,\\\\d{3})+)(?:(\\\\.|,)\\\\d+)?$`\r\n );\r\n const regexExec = regex.exec(stringVal);\r\n\r\n return {\r\n hasError:\r\n regexExec === null ||\r\n !(regexExec && regexExec.length > 0 && regexExec[0] === stringVal),\r\n message: 'Gegeven is geen nummer of bevat andere tekens',\r\n };\r\n};\r\n\r\nexport default numberValidator;\r\n","import { DataGridColumn } from '@/components/DataGrid/DataGridColumn.class';\r\nimport { DataGridColumnType } from '@/components/DataGrid/DataGridColumnType.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport $dayjs from '@/utils/dayjs';\r\n\r\nexport const numberFiller = (): any => '0';\r\nexport const timeFiller = (): any => $dayjs().format('HH:mm');\r\nexport const dateFiller = (): any => $dayjs().format('DD/MM/YYYY');\r\nexport const datePickerFiller = (\r\n t: Trip,\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n): any => {\r\n const dateColumns = columns.filter(\r\n x => x.additionalInputType === DataGridColumnType.TimeDate\r\n );\r\n const currentColumnIndex = dateColumns.findIndex(\r\n x => x.valueKey === column.valueKey\r\n );\r\n\r\n if (currentColumnIndex === 0) {\r\n return $dayjs(t.date, 'DD/MM/YYYY').format('YYYY-MM-DD');\r\n } else {\r\n const prevColumn = dateColumns[currentColumnIndex - 1];\r\n const dateKey = prevColumn.dateValueKey ?? '';\r\n const valueKey = prevColumn.valueKey ?? '';\r\n const prevDate = (t as any)[dateKey];\r\n const prevTime = (t as any)[valueKey];\r\n const prevValue = $dayjs(`${prevDate} ${prevTime}`);\r\n\r\n const currentDateString = prevDate;\r\n const currentTime = (t as any)[column.valueKey];\r\n\r\n let currentDate = $dayjs(`${currentDateString} ${currentTime}`);\r\n\r\n if (currentDate < prevValue) {\r\n currentDate = currentDate.add(1, 'day');\r\n }\r\n\r\n return currentDate.format('YYYY-MM-DD');\r\n }\r\n};\r\n","import { Trip } from '@/typing/api/tripNew.class';\r\nimport MaterialIcon from '@/typing/enums/materialIcon.enum';\r\nimport { TripStatus } from '@/typing/enums/tripStatus.enum';\r\n\r\nexport const statusIconColorFn = (item: Trip) => {\r\n if (\r\n item.status === TripStatus.RejectedClient ||\r\n item.status === TripStatus.RejectedContractor\r\n ) {\r\n return '#ff0000';\r\n } else if (item.status === TripStatus.OpenClient) {\r\n return '#1e466f';\r\n } else if (item.status === TripStatus.ApprovedClient) {\r\n return '#78ff00';\r\n }\r\n\r\n return 'transparent';\r\n};\r\n\r\nexport const statusIconNameFn = (item: Trip) => {\r\n if (\r\n item.status === TripStatus.OpenContractor ||\r\n item.status === TripStatus.OpenSkipper\r\n ) {\r\n return '';\r\n } else if (\r\n item.status === TripStatus.RejectedClient ||\r\n item.status === TripStatus.RejectedContractor\r\n ) {\r\n return MaterialIcon.Close;\r\n } else if (item.status === TripStatus.OpenClient) {\r\n return MaterialIcon.Send;\r\n } else if (item.status === TripStatus.ApprovedClient) {\r\n return MaterialIcon.Done;\r\n }\r\n\r\n return '';\r\n};\r\n\r\nexport const iconTitleFn = (item: Trip) => {\r\n if (item.status === TripStatus.RejectedClient) {\r\n return 'Afgekeurd door opdrachtgever';\r\n } else if (item.status === TripStatus.RejectedContractor) {\r\n return 'Afgekeurd door aannemer';\r\n } else if (item.status === TripStatus.ApprovedClient) {\r\n return 'Goedgekeurd door opdrachtgever';\r\n } else if (item.status === TripStatus.OpenClient) {\r\n return 'Te controleren door opdrachtgever';\r\n }\r\n\r\n return null;\r\n};\r\n","import {\r\n DataGridColumn,\r\n IDataGridColumnValidatorResult,\r\n} from '@/components/DataGrid/DataGridColumn.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\n\r\nexport default function isSelectionOptionValidator(\r\n val?: any,\r\n item?: Trip,\r\n items?: Trip[],\r\n column?: DataGridColumn,\r\n): IDataGridColumnValidatorResult {\r\n const returnValue: IDataGridColumnValidatorResult = {\r\n hasError: false,\r\n message: '',\r\n };\r\n\r\n if (!val || !column) {\r\n return returnValue;\r\n }\r\n\r\n if (\r\n (column.selectOptions && column.selectOptions.length === 0) ||\r\n !column.selectOptions\r\n ) {\r\n return returnValue;\r\n }\r\n\r\n const values = column.selectOptions.map((o: any) =>\r\n column.selectOptionValueFn(o)\r\n );\r\n\r\n returnValue.hasError = !values.includes(val);\r\n\r\n if (returnValue.hasError) {\r\n returnValue.message = 'is niet bekend, kies een ander';\r\n returnValue.errorType = DataGridErrorType.Error;\r\n }\r\n\r\n return returnValue as IDataGridColumnValidatorResult;\r\n}\r\n","import { DataGridColumn } from '@/components/DataGrid/DataGridColumn.class';\r\nimport { DataGridColumnType } from '@/components/DataGrid/DataGridColumnType.class';\r\nimport { IBox } from '@/typing/api/box.interface';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { getState } from '@/utils/vueInstance';\r\nimport $dayjs from '@/utils/dayjs';\r\nimport timeValidator from '@/utils/validators/timeFormatValidator';\r\nimport dateValidator from '@/utils/validators/dateValidator';\r\nimport {\r\n boxValidator,\r\n getTripTimes,\r\n} from '@/utils/validators/miscTripValidators';\r\nimport numberValidator from '@/utils/validators/numberValidator';\r\nimport {\r\n dateFiller,\r\n timeFiller,\r\n numberFiller,\r\n datePickerFiller,\r\n} from './gridFilters';\r\nimport { statusIconNameFn, statusIconColorFn, iconTitleFn } from './statusses';\r\nimport isSelectionOptionValidator from '@/utils/validators/isSelectionOptionValidator';\r\nimport { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\n\r\nfunction getTripIndex(trips: Trip[], t: Trip): number {\r\n return trips.findIndex((trip: Trip) => t.number === trip.number);\r\n}\r\n\r\nfunction getPreviousTrip(trips: Trip[], t: Trip): Trip | null {\r\n const tripIndex = getTripIndex(trips, t);\r\n return tripIndex > 0 ? trips[tripIndex - 1] : null;\r\n}\r\n\r\nexport function getBoxList(type: 'Box' | 'DumpingBox'): IBox[] {\r\n return (\r\n getState().project.boxList?.filter((b: IBox) => b.boxType === type) ??\r\n []\r\n );\r\n}\r\n\r\nexport function getGridColumns(shipMaxVolume: number): DataGridColumn[] {\r\n const dumpingIsRequired = shipMaxVolume > 0;\r\n\r\n const smallMaxSize = dumpingIsRequired ? '80px' : '120px';\r\n const timeDateSize = dumpingIsRequired ? '90px' : '130px';\r\n const mediumMaxSize = dumpingIsRequired ? '130px' : '170px';\r\n\r\n const columnArr: DataGridColumn[] = [];\r\n\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Reisnr',\r\n valueKey: 'number',\r\n maxWidthCSS: smallMaxSize,\r\n isEditable: false,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: '',\r\n valueKey: '',\r\n isIconColumn: true,\r\n iconNameFn: statusIconNameFn,\r\n iconColorHexFn: statusIconColorFn,\r\n iconTitleFn,\r\n maxWidthCSS: '75px',\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Datum',\r\n valueKey: 'date',\r\n maxWidthCSS: '85px',\r\n minWidthCSS: '85px',\r\n isEditable: true,\r\n validatorFunc: (val: any, item: Trip, trips: Trip[]) => {\r\n const numberValidatorResult = dateValidator(val);\r\n if (numberValidatorResult.hasError) {\r\n return numberValidatorResult as any;\r\n }\r\n\r\n const previousTrip = getPreviousTrip(trips, item);\r\n if (!previousTrip) {\r\n return {\r\n hasError: false,\r\n };\r\n }\r\n\r\n const previousDate = $dayjs(previousTrip.date, 'DD/MM/YYYY');\r\n const tripDate = $dayjs(item.date, 'DD/MM/YYYY');\r\n\r\n if (tripDate < previousDate) {\r\n return {\r\n hasError: true,\r\n message: 'Datum kan niet voor de vorige reis liggen.',\r\n };\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: dateFiller,\r\n required: true,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Start Cyclus',\r\n valueKey: 'startTime',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'startTimeDate',\r\n validatorFunc: (\r\n val: any,\r\n item: Trip,\r\n trips: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n const previousTrip: any = getPreviousTrip(trips, item);\r\n if (!previousTrip) {\r\n return {\r\n hasError: false,\r\n };\r\n }\r\n\r\n const previousTripTimes = getTripTimes(previousTrip, true);\r\n let toCheckTime = null;\r\n\r\n const endOfTripProperty =\r\n dumpingIsRequired || previousTrip.endTimeDumping\r\n ? 'endTimeDumping'\r\n : 'endTimeDredging';\r\n\r\n if (\r\n previousTripTimes.endTimeDelay &&\r\n previousTripTimes.endTimeDelay >\r\n previousTripTimes[endOfTripProperty]\r\n ) {\r\n toCheckTime = previousTripTimes.endTimeDelay;\r\n } else {\r\n toCheckTime = previousTripTimes[endOfTripProperty];\r\n }\r\n\r\n const start = $dayjs(\r\n `${item.startTimeDate} ${item.startTime}`,\r\n 'YYYY-MM-DD HH:mm'\r\n );\r\n\r\n if (start < toCheckTime) {\r\n return {\r\n hasError: true,\r\n message:\r\n 'kan niet voor het einde van de vorige reis liggen.',\r\n };\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n required: true,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Vaknr',\r\n valueKey: 'boxNumber',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: getBoxList('Box'),\r\n maxWidthCSS: smallMaxSize,\r\n required: true,\r\n validatorFunc: (val: any, item: Trip) =>\r\n boxValidator(val, getBoxList('Box'), item),\r\n selectOptionLabelFn: (item: IBox) =>\r\n `${item.boxNumber} - ${item.boxName}`,\r\n selectOptionValueFn: (item: IBox) => item.boxNumber,\r\n useSelectPossibilitiesWhenUndefined: true,\r\n autoComplete: true,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Vak naam',\r\n valueKey: 'boxName',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: getBoxList('Box'),\r\n required: true,\r\n validatorFunc: (val: any, item: Trip) =>\r\n boxValidator(val, getBoxList('Box'), item),\r\n selectOptionLabelFn: (item: IBox) =>\r\n `${item.boxNumber} - ${item.boxName}`,\r\n selectOptionValueFn: (item: IBox) => item.boxName,\r\n useSelectPossibilitiesWhenUndefined: true,\r\n autoComplete: true,\r\n maxWidthCSS: mediumMaxSize,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Start baggeren',\r\n valueKey: 'startTimeDredging',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'startTimeDredgingDate',\r\n validatorFunc: (\r\n val: string,\r\n item: Trip,\r\n items: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n required: true,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Eind baggeren',\r\n valueKey: 'endTimeDredging',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'endTimeDredgingDate',\r\n validatorFunc: (\r\n val: string,\r\n item: Trip,\r\n items: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n required: true,\r\n })\r\n );\r\n\r\n if (dumpingIsRequired) {\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'm³',\r\n valueKey: 'volume',\r\n maxWidthCSS: smallMaxSize,\r\n validatorFunc: (val: any) => {\r\n const numberValidatorResult = numberValidator(val);\r\n if (numberValidatorResult.hasError) {\r\n return numberValidatorResult as any;\r\n }\r\n const parsedNumber = Number(val);\r\n\r\n if (parsedNumber > shipMaxVolume) {\r\n return {\r\n hasError: true,\r\n message: `is meer dan de maximale inhoud van het schip (${shipMaxVolume} m³)`,\r\n };\r\n }\r\n\r\n if (\r\n shipMaxVolume > 0 &&\r\n parsedNumber < shipMaxVolume * 0.5\r\n ) {\r\n return {\r\n hasError: true,\r\n message: `er is minder dan 50% van de maximale inhoud van het schip (${shipMaxVolume} m³) benut. Controleer of dit juist is`,\r\n errorType: DataGridErrorType.Warning,\r\n };\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: numberFiller,\r\n required: true,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'TDS',\r\n valueKey: 'tds',\r\n maxWidthCSS: smallMaxSize,\r\n valueWhenBlurOnEmptyFunc: numberFiller,\r\n validatorFunc: (val: any, trip: Trip) => {\r\n const numberValidatorResult = numberValidator(val);\r\n if (numberValidatorResult.hasError) {\r\n return numberValidatorResult as any;\r\n }\r\n\r\n const parsedTDS = Number(val);\r\n\r\n if (parsedTDS > shipMaxVolume) {\r\n return {\r\n hasError: true,\r\n message: `is meer dan de maximale inhoud van het schip (${shipMaxVolume} m³)`,\r\n };\r\n }\r\n\r\n if (\r\n trip.volume &&\r\n !numberValidator(trip.volume as any).hasError\r\n ) {\r\n const parsedVolume = Number(trip.volume);\r\n if (parsedTDS > parsedVolume) {\r\n return {\r\n hasError: true,\r\n message: `TDS (${parsedTDS}) kan niet meer zijn dan de ingevulde m³ (${parsedVolume})`,\r\n };\r\n }\r\n }\r\n\r\n return { hasError: false };\r\n },\r\n required: true,\r\n })\r\n );\r\n }\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Grondsoort',\r\n valueKey: 'soilType',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: ['Slib', 'Zand'],\r\n required: true,\r\n maxWidthCSS: smallMaxSize,\r\n })\r\n );\r\n if (dumpingIsRequired) {\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Stortvak naam',\r\n valueKey: 'dumpBoxName',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: getBoxList('DumpingBox'),\r\n required: dumpingIsRequired,\r\n selectOptionLabelFn: (item: IBox) =>\r\n `${item.boxNumber} - ${item.boxName}`,\r\n selectOptionValueFn: (item: IBox) =>\r\n `${item.boxNumber} - ${item.boxName}`,\r\n useSelectPossibilitiesWhenUndefined: true,\r\n maxWidthCSS: mediumMaxSize,\r\n validatorFunc: (val: any, t: Trip) => {\r\n if (\r\n !val &&\r\n !dumpingIsRequired &&\r\n !t.startTimeDumping &&\r\n !t.endTimeDumping\r\n ) {\r\n return {\r\n hasError: false,\r\n };\r\n }\r\n\r\n if (\r\n !dumpingIsRequired &&\r\n !val &&\r\n (t.startTimeDumping || t.endTimeDumping)\r\n ) {\r\n return {\r\n hasError: true,\r\n message:\r\n 'is een verplicht veld als andere stort velden ingevuld zijn',\r\n };\r\n }\r\n\r\n return { hasError: false };\r\n },\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Start storten',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'startTimeDumpingDate',\r\n valueKey: 'startTimeDumping',\r\n validatorFunc: (\r\n val: any,\r\n item: Trip,\r\n trips: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n if (\r\n !val &&\r\n !dumpingIsRequired &&\r\n !item.endTimeDumping &&\r\n !item.dumpBoxName\r\n ) {\r\n return {\r\n hasError: false,\r\n };\r\n }\r\n\r\n if (\r\n !dumpingIsRequired &&\r\n !val &&\r\n (item.endTimeDumping || item.dumpBoxName)\r\n ) {\r\n return {\r\n hasError: true,\r\n message:\r\n 'is een verplicht veld als andere stort velden ingevuld zijn',\r\n };\r\n }\r\n\r\n if (!val && dumpingIsRequired) {\r\n return { hasError: false };\r\n }\r\n\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n required: dumpingIsRequired,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Eind storten',\r\n valueKey: 'endTimeDumping',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'endTimeDumpingDate',\r\n validatorFunc: (\r\n val: any,\r\n item: Trip,\r\n trips: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n if (\r\n !val &&\r\n !dumpingIsRequired &&\r\n !item.startTimeDumping &&\r\n !item.dumpBoxName\r\n ) {\r\n return {\r\n hasError: false,\r\n };\r\n }\r\n\r\n if (\r\n !dumpingIsRequired &&\r\n !val &&\r\n (item.startTimeDumping || item.dumpBoxName)\r\n ) {\r\n return {\r\n hasError: true,\r\n message:\r\n 'is een verplicht veld als andere stort velden ingevuld zijn',\r\n };\r\n }\r\n\r\n if (!val && !item.startTimeDumping) {\r\n return { hasError: false };\r\n }\r\n\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n required: dumpingIsRequired,\r\n })\r\n );\r\n }\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Brandstof type',\r\n valueKey: 'fuel',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: ['MDO', 'B30', 'B50', 'B70', 'B100', 'LNG', 'GTL'],\r\n showAllSelectOptions: true,\r\n required: true,\r\n maxWidthCSS: smallMaxSize,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Verlet type',\r\n valueKey: 'delayType',\r\n additionalInputType: DataGridColumnType.Select,\r\n selectOptions: [\r\n 'Bunkeren',\r\n 'Verkeer',\r\n 'Weer',\r\n 'Technisch',\r\n 'Rust',\r\n 'Overig',\r\n ],\r\n showAllSelectOptions: true,\r\n maxWidthCSS: smallMaxSize,\r\n validatorFunc: isSelectionOptionValidator,\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Verlet start',\r\n valueKey: 'startTimeDelay',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'startTimeDelayDate',\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n validatorFunc: (\r\n val: string,\r\n item: Trip,\r\n items: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n if (!val && !item.delayType) {\r\n return { hasError: false };\r\n }\r\n\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Verlet eind',\r\n valueKey: 'endTimeDelay',\r\n additionalInputType: DataGridColumnType.TimeDate,\r\n dateValueKey: 'endTimeDelayDate',\r\n valueWhenBlurOnEmptyFunc: timeFiller,\r\n dateUndefined: datePickerFiller,\r\n maxWidthCSS: smallMaxSize,\r\n minWidthCSS: timeDateSize,\r\n validatorFunc: (\r\n val: string,\r\n item: Trip,\r\n items: Trip[],\r\n column: DataGridColumn,\r\n columns: DataGridColumn[]\r\n ) => {\r\n if (!val && !item.delayType) {\r\n return { hasError: false };\r\n }\r\n\r\n const timeValidatorResult = timeValidator(\r\n val,\r\n item,\r\n column,\r\n columns\r\n );\r\n if (timeValidatorResult.hasError) {\r\n return timeValidatorResult as any;\r\n }\r\n\r\n return {\r\n hasError: false,\r\n };\r\n },\r\n })\r\n );\r\n columnArr.push(\r\n new DataGridColumn({\r\n header: 'Opmerkingen',\r\n valueKey: 'remarks',\r\n valueWhenBlurOnEmptyFunc: () => '-',\r\n })\r\n );\r\n\r\n return columnArr;\r\n}\r\n","import { Trip } from '@/typing/api/tripNew.class';\r\nimport MaterialIcon from '@/typing/enums/materialIcon.enum';\r\nimport Role from '@/typing/enums/role.enum';\r\nimport { TripStatus } from '@/typing/enums/tripStatus.enum';\r\nimport $dayjs from '@/utils/dayjs';\r\n\r\nexport function determineFilterItems(userRole: Role): any[] {\r\n const items = [];\r\n\r\n items.push({\r\n label: 'Geen status filter (actie vereist)',\r\n value: (item: Trip) => {\r\n if (userRole === Role.Skipper) {\r\n return (\r\n item.status === TripStatus.OpenSkipper ||\r\n item.status === TripStatus.RejectedContractor\r\n );\r\n }\r\n\r\n if (userRole === Role.Contractor) {\r\n return (\r\n item.status === TripStatus.OpenContractor ||\r\n item.status === TripStatus.RejectedClient ||\r\n item.status === TripStatus.RejectedContractor\r\n );\r\n }\r\n\r\n if (userRole === Role.Client) {\r\n return item.status === TripStatus.OpenClient;\r\n }\r\n },\r\n icon: MaterialIcon.Filter,\r\n });\r\n\r\n if (userRole === Role.Client) {\r\n items.push({\r\n label: 'Ingediend',\r\n value: (item: Trip) => item.status === TripStatus.OpenClient,\r\n icon: MaterialIcon.Send,\r\n });\r\n items.push({\r\n label: 'Afgekeurd',\r\n value: (item: Trip) => item.status === TripStatus.RejectedClient,\r\n icon: MaterialIcon.Close,\r\n });\r\n items.push({\r\n label: 'Goedgekeurd',\r\n value: (item: Trip) => item.status === TripStatus.ApprovedClient,\r\n icon: MaterialIcon.Done,\r\n });\r\n } else if (userRole === Role.Contractor) {\r\n items.push({\r\n label: 'Open',\r\n value: (item: Trip) => item.status === TripStatus.OpenContractor,\r\n });\r\n items.push({\r\n label: 'Afgekeurd door opdrachtgever',\r\n value: (item: Trip) => item.status === TripStatus.RejectedClient,\r\n icon: MaterialIcon.Close,\r\n });\r\n items.push({\r\n label: 'Afgekeurd door aannemer',\r\n value: (item: Trip) =>\r\n item.status === TripStatus.RejectedContractor,\r\n icon: MaterialIcon.Close,\r\n });\r\n } else if (userRole === Role.Skipper) {\r\n items.push({\r\n label: 'Open',\r\n value: (item: Trip) => item.status === TripStatus.OpenSkipper,\r\n });\r\n items.push({\r\n label: 'Afgekeurd',\r\n value: (item: Trip) =>\r\n item.status === TripStatus.RejectedContractor,\r\n icon: MaterialIcon.Close,\r\n });\r\n }\r\n\r\n items.push({\r\n label: 'Afgelopen 7 dagen',\r\n value: (item: Trip) => {\r\n const maxShownDate = $dayjs().subtract(7, 'days').startOf('day');\r\n const date = $dayjs(item.startTimeDate);\r\n\r\n return !date.isValid() || date.valueOf() > maxShownDate.valueOf();\r\n },\r\n });\r\n\r\n return items;\r\n}\r\n","import { Trip } from '@/typing/api/tripNew.class';\r\nimport Role from '@/typing/enums/role.enum';\r\nimport { TripStatus } from '@/typing/enums/tripStatus.enum';\r\n\r\nexport function isTripEditable(trip: Trip, userRole: Role): boolean {\r\n if (\r\n (userRole === Role.Client && trip.status === TripStatus.OpenClient) ||\r\n (userRole === Role.Client && trip.status === TripStatus.ApprovedClient)\r\n ) {\r\n return true;\r\n } else if (\r\n userRole === Role.Contractor &&\r\n (trip.status === TripStatus.OpenContractor ||\r\n trip.status === TripStatus.RejectedClient)\r\n ) {\r\n return true;\r\n } else if (\r\n userRole === Role.Skipper &&\r\n (trip.status === TripStatus.OpenSkipper ||\r\n trip.status === TripStatus.RejectedContractor)\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n","import { ProjectResponse } from \"./api/projectsResponse.class\";\r\n\r\nexport class ProjectInformationModalEntries {\r\n contractorName: string;\r\n projectName: string;\r\n projectNumber: string;\r\n projectDescription: string;\r\n shipVolume: string;\r\n shipType: string;\r\n shipName: string;\r\n\r\n constructor(p?: ProjectInformationModalEntries) {\r\n this.contractorName = p?.contractorName ?? '';\r\n this.projectName = p?.projectName ?? '';\r\n this.projectNumber = p?.projectNumber ?? '';\r\n this.projectDescription = p?.projectDescription ?? '';\r\n this.shipVolume = p?.shipVolume ?? '';\r\n this.shipType = p?.shipType ?? '';\r\n this.shipName = p?.shipName ?? '';\r\n }\r\n\r\n fillValues(projectData: ProjectResponse, projectId: number, shipId: number): ProjectInformationModalEntries {\r\n const project = projectData.getProjectById(projectId);\r\n \r\n if (!project) return this;\r\n \r\n const ship = projectData?.getShipById(shipId ?? -1);\r\n \r\n if (ship) {\r\n this.shipVolume = `${ship.maximumVolume} m³`;\r\n this.shipType = ship.type;\r\n this.shipName = ship.name;\r\n }\r\n \r\n this.contractorName = projectData.getContractorById(project.contractorId ?? -1)?.name ?? '';\r\n this.projectNumber = project.number ?? '';\r\n this.projectDescription = project.description ?? '';\r\n this.projectName = project.name ?? ''; \r\n return this;\r\n }\r\n}","import { ProjectResponse } from '@/typing/api/projectsResponse.class';\r\nimport { Report } from '@/typing/api/report.class';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { isUndefined } from '@/utils/isUndefined';\r\nimport dayjs from 'dayjs';\r\n\r\nexport class ProjectStatisticsModel {\r\n amountOfTrips: number;\r\n daym3: number;\r\n totalDay: number;\r\n totalProject: number;\r\n\r\n constructor(p?: ProjectStatisticsModel) {\r\n this.amountOfTrips = p?.amountOfTrips ?? 0;\r\n this.daym3 = p?.daym3 ?? 0;\r\n this.totalDay = p?.totalDay ?? 0;\r\n this.totalProject = p?.totalProject ?? 0;\r\n }\r\n\r\n fillModel(\r\n projectId: number,\r\n shipId: number,\r\n projectData?: ProjectResponse,\r\n boxNumber?: number\r\n ): ProjectStatisticsModel {\r\n if (!projectData || isUndefined(projectId) || isUndefined(shipId))\r\n return this;\r\n\r\n const dateStringFormat = 'YYYY-MM-DD';\r\n const dayFilter = (t: Trip) =>\r\n t.date === dayjs().format(dateStringFormat);\r\n const report = projectData.getReport(projectId, shipId);\r\n const tripsForBoxNumber: Trip[] = [];\r\n\r\n projectData.reports.forEach((r: Report) => {\r\n r.trips.forEach((t: Trip) => {\r\n if (!boxNumber) {\r\n tripsForBoxNumber.push(t);\r\n } else if (t.boxNumber?.toString() === boxNumber.toString()) {\r\n tripsForBoxNumber.push(t);\r\n }\r\n });\r\n });\r\n\r\n const dayTripsForBoxNumber = tripsForBoxNumber.filter(dayFilter);\r\n const dayTrips = report?.trips.filter(dayFilter) ?? [];\r\n\r\n this.amountOfTrips = tripsForBoxNumber.length ?? 0;\r\n this.daym3 = this._getVolumeFromTrips(dayTripsForBoxNumber);\r\n this.totalDay = this._getVolumeFromTrips(dayTrips);\r\n this.totalProject = this._getVolumeFromTrips(report?.trips ?? []);\r\n\r\n return this;\r\n }\r\n\r\n private _getVolumeFromTrips(trips: Trip[]): number {\r\n return trips\r\n .flatMap((t: Trip) => t?.volume ?? 0)\r\n .reduce(\r\n (previousValue: number, currentValue: number) =>\r\n Number(currentValue) + Number(previousValue),\r\n 0\r\n );\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Component from 'vue-class-component';\r\nimport DataGrid from '@/components/DataGrid/DataGrid.vue';\r\nimport {\r\n DataGridColumn,\r\n dataGridValidationResultIsError,\r\n dataGridValidationResultIsRequired,\r\n IDataGridColumnValidatorResult,\r\n} from '@/components/DataGrid/DataGridColumn.class';\r\nimport { DataGridOptions } from '@/components/DataGrid/DataGridOptions.class';\r\nimport BaseComponent from '@/components/BaseComponent';\r\nimport ProjectStatistics from '@/components/ProjectStatistics/ProjectStatistics.vue';\r\nimport Modal from '@/components/Modal/Modal.vue';\r\nimport Button from '@/components/Button/Button.vue';\r\nimport Dropdown from '@/components/Dropdown/Dropdown.vue';\r\nimport { getBoxList, getGridColumns } from './gridOptions/gridOptions';\r\nimport { determineFilterItems } from './statusFilterOptions';\r\nimport { isTripEditable } from './isTripEditable';\r\nimport { Trip } from '@/typing/api/tripNew.class';\r\nimport { projectTypes } from '@/store/modules/project/projectTypes';\r\nimport { ProjectInformationModalEntries } from '@/typing/projectInformationModalEntries.class';\r\nimport { ProjectStatisticsModel } from '@/components/ProjectStatistics/projectStatistics.class';\r\nimport { IReportRelationship } from '@/typing/reportRelationship.interface';\r\nimport { Report } from '@/typing/api/report.class';\r\nimport { saveStoreBackup } from '@/utils/dexieDB';\r\nimport { TripStatus } from '@/typing/enums/tripStatus.enum';\r\nimport showNotification from '@/utils/notification';\r\nimport { approveTrips, rejectTrips, submitTrips } from '@/api/data';\r\nimport { miscTypes } from '@/store/modules/misc/miscTypes';\r\nimport { IBox } from '@/typing/api/box.interface';\r\nimport { checkTripTimes } from '@/utils/validators/miscTripValidators';\r\nimport { DataGridErrorType } from '@/typing/enums/dataGridErrorType.enum';\r\nimport { EventBus } from '@/utils/eventBus/eventBus';\r\nimport { EventBusEvent } from '@/utils/eventBus/eventBusEvent.enum';\r\nimport { getState } from '@/utils/vueInstance';\r\nimport { shipTypeEnumToReadableString } from '@/utils/shipTypes';\r\n\r\n@Component({\r\n components: {\r\n DataGrid,\r\n ProjectStatistics,\r\n Modal,\r\n Button,\r\n Dropdown,\r\n },\r\n props: {\r\n projectId: {\r\n type: String,\r\n required: false,\r\n },\r\n shipId: {\r\n type: String,\r\n required: false,\r\n },\r\n },\r\n})\r\nexport default class ProjectPage extends BaseComponent {\r\n dColumns: DataGridColumn[] = [];\r\n items: Trip[] = [];\r\n selectedVakNummer = -1;\r\n gridOptions = new DataGridOptions();\r\n selectedStatusFilter: any = '';\r\n showProjectInfoModal = false;\r\n statusFilterOptions: any[] = [];\r\n tripSelection: any[] = [];\r\n TripStatus = TripStatus;\r\n showDeclineTripModal = false;\r\n declineTripsReason = '';\r\n currentProject: IReportRelationship | null = null;\r\n gridValidationErrors: any[] = [];\r\n shipTypeEnumToReadableString = shipTypeEnumToReadableString;\r\n\r\n get statistics(): ProjectStatisticsModel {\r\n if (!this.currentProject) return new ProjectStatisticsModel();\r\n\r\n return new ProjectStatisticsModel().fillModel(\r\n this.currentProject.projectId,\r\n this.currentProject.shipId,\r\n this.$state.project.projectData,\r\n this.selectedVakNummer\r\n );\r\n }\r\n\r\n get vaknummers(): any[] {\r\n const distinctBoxNumbers: any[] = [];\r\n this.trips.forEach((t: Trip) => {\r\n if (!distinctBoxNumbers.includes(t.boxNumber)) {\r\n distinctBoxNumbers.push(t.boxNumber);\r\n }\r\n });\r\n\r\n return distinctBoxNumbers\r\n .map((val: any) => {\r\n return {\r\n label: val,\r\n value: val,\r\n };\r\n })\r\n .filter((item: any) => !!item && item.label);\r\n }\r\n\r\n get projectInfoValues(): ProjectInformationModalEntries {\r\n if (!this.currentProject) return new ProjectInformationModalEntries();\r\n\r\n const data = this.$state.project.projectData;\r\n\r\n if (!data) {\r\n return new ProjectInformationModalEntries();\r\n }\r\n\r\n return new ProjectInformationModalEntries().fillValues(\r\n data,\r\n this.currentProject.projectId,\r\n this.currentProject.shipId\r\n );\r\n }\r\n\r\n get trips(): Trip[] {\r\n if (!this.currentProject) return [];\r\n\r\n const tripArrayRef = this.currentReport?.trips ?? [];\r\n return tripArrayRef.map((t: Trip) => new Trip(t));\r\n }\r\n\r\n get tripsRef(): Trip[] {\r\n if (!this.currentProject) return [];\r\n return this.currentReport?.trips ?? [];\r\n }\r\n\r\n get currentReport(): Report | null {\r\n if (!this.currentProject) return null;\r\n return (\r\n this.$state.project.projectData?.getReport(\r\n this.currentProject.projectId,\r\n this.currentProject.shipId\r\n ) ?? null\r\n );\r\n }\r\n\r\n mounted(): void {\r\n this.currentProject = {\r\n projectId: Number(this.$props.projectId),\r\n shipId: Number(this.$props.shipId),\r\n };\r\n\r\n this.$store.commit(\r\n projectTypes.mutations.SET_LAST_VISITED_PROJECT,\r\n this.currentProject\r\n );\r\n\r\n this.$watch(\r\n () => this.$state.project.boxList,\r\n () => this._setupGrid()\r\n );\r\n\r\n this._genericInit(true);\r\n this._determinePageName();\r\n this._setupGrid();\r\n\r\n this.$watch(\r\n () => this.currentReport,\r\n () => {\r\n this._determinePageName();\r\n }\r\n );\r\n\r\n this.$watch(\r\n () => this.gridValidationErrors,\r\n () => {\r\n if (this.tripSelection.length === 0) {\r\n return;\r\n }\r\n\r\n if (this.gridValidationErrors.length === 0) return;\r\n\r\n const tripNoWithErrors = this.gridValidationErrors.map(\r\n (e: IDataGridColumnValidatorResult) => {\r\n if (!e.itemIndex) return;\r\n if (\r\n e.errorType &&\r\n (e.errorType === DataGridErrorType.Warning ||\r\n e.errorType === DataGridErrorType.RequiredError)\r\n ) {\r\n return;\r\n }\r\n\r\n return this.trips[e.itemIndex].number;\r\n }\r\n );\r\n\r\n if (tripNoWithErrors.length === 0) return;\r\n\r\n this.tripSelection.forEach((tripNumber: number) => {\r\n if (!tripNoWithErrors.includes(tripNumber)) return;\r\n const selectionIndex = this.tripSelection.findIndex(\r\n (n: number) => n === tripNumber\r\n );\r\n\r\n if (selectionIndex === -1) return;\r\n\r\n this.tripSelection.splice(selectionIndex, 1);\r\n });\r\n\r\n (this.$refs.dataGrid as DataGrid).selectedItems = [\r\n ...this.tripSelection,\r\n ];\r\n }\r\n );\r\n\r\n setTimeout(() => {\r\n if (this.trips.length === 0 && this.isSkipper()) {\r\n this.addTrip();\r\n }\r\n\r\n this._dataGridValidate();\r\n this.$forceUpdate();\r\n }, 500);\r\n }\r\n\r\n closeRejectModal(): void {\r\n (this.$refs.declineTripsModal as Modal).closeModal();\r\n this.declineTripsReason = '';\r\n }\r\n\r\n onDateSelectionChange(e: any): void {\r\n this.correctDate(e.itemIndex, e.column.dateValueKey);\r\n }\r\n\r\n addTrip(): void {\r\n if (\r\n this.gridValidationErrors.filter(\r\n (e: IDataGridColumnValidatorResult) =>\r\n dataGridValidationResultIsRequired(e) ||\r\n dataGridValidationResultIsError(e)\r\n ).length === 0\r\n ) {\r\n this.currentReport?.addTrip();\r\n this._dataGridValidate();\r\n this.$store.dispatch(projectTypes.actions.CHECK_TO_UPDATE_REPORTS);\r\n if (this.isOnline && this.trips.length > 1) {\r\n this.$store.dispatch(projectTypes.actions.SAVE_REPORT, {\r\n reportRelation: this.currentProject,\r\n });\r\n this.$store.dispatch(projectTypes.actions.CHECK_TO_UPDATE_REPORTS);\r\n }\r\n saveStoreBackup();\r\n } else {\r\n showNotification(\r\n 'Er kan geen nieuwe reis aangemaakt worden, de huidige laatste reis is incompleet of foutief ingevuld.'\r\n );\r\n }\r\n }\r\n\r\n async saveReport(submittingTrips = false): Promise {\r\n if (!this.currentProject) return;\r\n\r\n this.$store.commit(miscTypes.mutations.SET_SHOW_LOADER, true);\r\n\r\n await new Promise((resolve: any) => setTimeout(resolve, 1500));\r\n\r\n this._dataGridValidate();\r\n\r\n const validationErrors = this.gridValidationErrors.filter(\r\n (e: IDataGridColumnValidatorResult) => {\r\n return dataGridValidationResultIsError(e);\r\n }\r\n );\r\n\r\n if (validationErrors.length > 0) {\r\n if (!submittingTrips) {\r\n showNotification(\r\n 'Er zijn fouten in de invoer, de fouten moeten worden opgelost voordat de wijzigingen kunnen worden opgeslagen.'\r\n );\r\n this.$store.commit(miscTypes.mutations.SET_SHOW_LOADER, false);\r\n }\r\n }\r\n\r\n const result = await this.$store.dispatch(\r\n projectTypes.actions.SAVE_REPORT,\r\n { reportRelation: this.currentProject, showLoader: true }\r\n );\r\n\r\n this.$store.commit(miscTypes.mutations.SET_SHOW_LOADER, false);\r\n\r\n return result;\r\n }\r\n\r\n onDataGridOptionSelection(e: { value: any; itemRef: Trip }): void {\r\n const val = e.value;\r\n const boxListRef = getBoxList('Box') ?? [];\r\n if (boxListRef.length === 0) return;\r\n const accordingValueIndex = boxListRef.findIndex(\r\n (b: IBox) => b.boxNumber === val || b.boxName === val\r\n );\r\n\r\n if (accordingValueIndex === -1) return;\r\n\r\n e.itemRef.boxName = boxListRef[accordingValueIndex].boxName;\r\n e.itemRef.boxNumber = boxListRef[accordingValueIndex].boxNumber;\r\n }\r\n\r\n async changeStatusForTripSelection(newTripStatus: TripStatus): Promise {\r\n if (this.tripSelection.length === 0) {\r\n showNotification('Er zijn geen reizen geselecteerd.');\r\n return;\r\n }\r\n\r\n const currentReportId: number = this.currentReport?.id as number;\r\n const declineReason = this.declineTripsReason;\r\n\r\n await this.saveReport(true);\r\n\r\n const toSubmitTrips: { trip: Trip; tripIndex: number }[] = [];\r\n this.trips.some((t: Trip, i: number) => {\r\n if (!this.tripSelection.includes(t.number ?? -1))\r\n return toSubmitTrips.length === this.tripSelection.length;\r\n\r\n toSubmitTrips.push({\r\n trip: t,\r\n tripIndex: i,\r\n });\r\n\r\n return toSubmitTrips.length === this.tripSelection.length;\r\n });\r\n\r\n if (toSubmitTrips.length === 0) return;\r\n\r\n let neededApiCall;\r\n let doneMessage = '';\r\n const apiCallArgs: any[] = [\r\n currentReportId,\r\n toSubmitTrips.flatMap((toSubmit: any) => toSubmit.trip.id),\r\n ];\r\n\r\n if (\r\n newTripStatus === TripStatus.OpenContractor ||\r\n newTripStatus === TripStatus.OpenClient\r\n ) {\r\n neededApiCall = submitTrips as any;\r\n doneMessage = 'Reizen ingediend';\r\n } else if (\r\n newTripStatus === TripStatus.RejectedContractor ||\r\n newTripStatus === TripStatus.RejectedClient\r\n ) {\r\n neededApiCall = rejectTrips as any;\r\n doneMessage = 'Reizen afgekeurd';\r\n apiCallArgs.push(declineReason);\r\n } else if (newTripStatus === TripStatus.ApprovedClient) {\r\n neededApiCall = approveTrips as any;\r\n doneMessage = 'Reizen goedgekeurd';\r\n }\r\n\r\n if (!neededApiCall) return;\r\n\r\n try {\r\n this.$store.commit(miscTypes.mutations.SET_SHOW_LOADER, true);\r\n const result = await neededApiCall(...apiCallArgs);\r\n if (!result.hasErrors) {\r\n (this.$refs.dataGrid as DataGrid).resetSelection();\r\n this.tripSelection = [];\r\n await this.$store.dispatch(projectTypes.actions.FETCH_PROJECT_DATA);\r\n showNotification(doneMessage);\r\n }\r\n } catch (error) {\r\n showNotification(\r\n 'Er is een probleem opgetreden tijdens het verzenden, probeer het later opnieuw.'\r\n );\r\n } finally {\r\n this.$store.commit(miscTypes.mutations.SET_SHOW_LOADER, false);\r\n }\r\n }\r\n\r\n updateTrip(e: { itemIndex: number; item: Trip }): void {\r\n const currentlySavedTrips =\r\n getState().project.projectData?.getReport(\r\n this.currentProject?.projectId ?? 0,\r\n this.currentProject?.shipId ?? 0\r\n )?.trips ?? [];\r\n const currentlyKnownTrip = currentlySavedTrips[e.itemIndex];\r\n\r\n const tripDateChanged =\r\n currentlyKnownTrip && currentlyKnownTrip.date !== e.item.date;\r\n\r\n this.$store.dispatch(projectTypes.actions.UPDATE_TRIP, {\r\n projectId: this.currentProject?.projectId,\r\n shipId: this.currentProject?.shipId,\r\n itemIndex: e.itemIndex,\r\n trip: e.item,\r\n });\r\n\r\n if (tripDateChanged) {\r\n this.correctDate(e.itemIndex, 'date');\r\n }\r\n\r\n this._dataGridValidate();\r\n }\r\n\r\n onDataGridItemSelection(e: any) {\r\n this.tripSelection = [...e];\r\n }\r\n\r\n navigateToReportOverview(): void {\r\n this.$store.commit(\r\n projectTypes.mutations.SET_LAST_VISITED_PROJECT,\r\n undefined\r\n );\r\n this.$router.push({ name: 'Reports' });\r\n }\r\n\r\n correctDate(index = -1, changedDateKey: string): void {\r\n console.log(changedDateKey);\r\n\r\n let itemIndex = index;\r\n\r\n const keys = [\r\n 'date',\r\n 'startTimeDate',\r\n 'startTimeDredgingDate',\r\n 'endTimeDredgingDate',\r\n 'startTimeDumpingDate',\r\n 'endTimeDumpingDate',\r\n ];\r\n\r\n const fromKeyIndex = keys.findIndex((x) => x === changedDateKey);\r\n\r\n if (fromKeyIndex === -1 || fromKeyIndex === keys.length - 1) return;\r\n\r\n setTimeout(() => {\r\n (this.$refs.dataGrid as DataGrid).runDateUndefinedForItem(\r\n itemIndex,\r\n keys.filter((x, i) => i > fromKeyIndex)\r\n );\r\n }, 500);\r\n\r\n this.$forceUpdate();\r\n }\r\n\r\n private _dataGridValidate(): void {\r\n (this.$refs.dataGrid as DataGrid).validateItemsDebounced();\r\n }\r\n\r\n private _setupGrid(): void {\r\n this.dColumns = getGridColumns(\r\n this.$state.project.projectData?.getShipById(\r\n this.currentProject?.shipId ?? 0\r\n )?.maximumVolume ?? 0\r\n );\r\n this.statusFilterOptions = [...determineFilterItems(this.getRole())];\r\n let preselectedStatusFilterIndex = 0;\r\n this.selectedStatusFilter =\r\n this.statusFilterOptions[preselectedStatusFilterIndex];\r\n this.gridOptions.shownItemsFilterFunc =\r\n this.statusFilterOptions[preselectedStatusFilterIndex].value;\r\n this.gridOptions.uniqueValueKey = 'number';\r\n this.gridOptions.tableMinWidthCSS = '1580px';\r\n this.gridOptions.additionalItemValidators = [\r\n (t: Trip) =>\r\n checkTripTimes(t, Number(this.projectInfoValues.shipVolume) > 0),\r\n ];\r\n\r\n this.gridOptions.isRowSelectableFunc = (t: Trip) => {\r\n const tripIndex = this.trips.findIndex(\r\n (iteratedTrip: Trip) => iteratedTrip.number === t.number\r\n );\r\n if (tripIndex === -1) return false;\r\n\r\n const tripItems = this.gridValidationErrors.filter(\r\n (e: IDataGridColumnValidatorResult) => e.itemIndex === tripIndex\r\n );\r\n\r\n const tripErrors = tripItems.filter(\r\n (e: IDataGridColumnValidatorResult) =>\r\n dataGridValidationResultIsError(e) ||\r\n dataGridValidationResultIsRequired(e)\r\n );\r\n\r\n return tripErrors.length === 0;\r\n };\r\n\r\n this.gridOptions.isRowEditableFunc = (t: Trip) =>\r\n isTripEditable(t, this.getRole());\r\n\r\n this.$watch(\r\n () => this.selectedStatusFilter,\r\n (newValue: any) => {\r\n if (typeof newValue.value === 'function') {\r\n this.gridOptions.shownItemsFilterFunc = newValue.value;\r\n }\r\n }\r\n );\r\n }\r\n\r\n private _determinePageName(): void {\r\n if (this.currentProject) {\r\n this._setPageName(\r\n `${\r\n this.$state.project.projectData?.getProjectById(\r\n this.currentProject.projectId\r\n )?.name\r\n }, ${\r\n this.$state.project.projectData?.getShipById(\r\n this.currentProject.shipId\r\n )?.name\r\n }`\r\n );\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectPage.vue?vue&type=template&id=018e41ef&scoped=true&\"\nimport script from \"./ProjectPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProjectPage.vue?vue&type=style&index=0&id=018e41ef&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"018e41ef\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPage.vue?vue&type=style&index=0&id=018e41ef&lang=scss&scoped=true&\"","// https://fonts.google.com/icons?selected=Material+Icons\r\n\r\nenum MaterialIcon {\r\n Search = 'search',\r\n Edit = 'edit',\r\n Visibility = 'visibility',\r\n Delete = 'delete',\r\n Close = 'close',\r\n Error = 'error',\r\n ExpandMore = 'expand_more',\r\n Boat = 'directions_boat',\r\n Account = 'account_circle',\r\n Add = 'add',\r\n Send = 'send',\r\n Done = 'done',\r\n Filter = 'filter_alt'\r\n}\r\n\r\nexport default MaterialIcon;","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=style&index=0&id=1ff245af&lang=scss&scoped=true&\""],"sourceRoot":""}