{"version":3,"sources":["webpack:///src/components/Table copy.vue","webpack:///./src/components/Table copy.vue?730e","webpack:///./src/components/Table copy.vue?3362","webpack:///./src/components/Table copy.vue?14c4","webpack:///./src/components/Table copy.vue"],"names":["name","props","data_object","Object","vModel","Array","editable","type","default","table_title","String","tableName","addButtonCaption","addButtonKey","newItemTitle","new_data","rowClick","Function","linkClick","selectSwitch","Boolean","editData","getTotal","rowIcons","parentKey","allParentKeys","toolBarControls","editControls","toolBarExpandedControls","itemsPerPage","Number","itemSelected","toolbarRight","hasSearch","remoteSearch","remoteSearchFields","numericFields","searchLen","beforeSubmit","afterSubmit","beforeSave","afterSave","onValueChange","doSubmit","dList","dListData","dExcel","fixedHeader","hideTitle","tableHeight","hideFooter","hideHeader","allExpanded","disablePagination","noServerPagination","mobileBreakpoint","alwaysUpdate","allEditable","directEdit","getTable","ajustTableSchema","editedItem","onRowUpdate","beforeAddData","onLoad","onMount","onDataChange","getFreshData","excelColumnWidth","formModel","parentModel","fields_excluded","fields_included","expandedIndexes","editRow","editRecord","initialData","tblKey","groupName","expandable","additionalData","k","expansionColumns","insertable","noDelete","noSave","disabledProperty","disabledValue","parObject","parTable","parentObject","defaultModel","isDraggable","disableSort","singleSelect","noToolBar","skipRecalculation","saveButtonCaption","noAdditionalMenu","assistant_instructions","link","noInitEdit","isGoToButton","goToButtonText","goToButtonAction","onDataReceived","getRowClass","coloredFields","dialogFields","getItemColor","colorProperty","filterTabs","filterTabsFn","noTabs","noExcel","filterCondition","searchableColumns","focusOnInsert","showGroupBy","filterTable","filter","cssClass","selectedId","mData","serverPagination","sortBy","customSort","customSortItems","sortDesc","onRowDragDrop","dropItem","noAlert","customFilter","refreshAfterSubmit","noCache","showFilterCombo","filterComboLabel","hideAllTabFilter","updateNestedArray","hasAdvancedSearch","noRefreshAfterUpload","noRefreshButton","noRefreshButtonTitle","limitTabsToData","limitObject","actionCommand","editedItemTitle","idField","columnTool","refreshParent","hideTopBar","draggedIndex","dropItemHandling","droppedObjectsSortProperty","defaultTabCaption","defaultTabColor","mobileItemTemplate","hideEditedTabs","hideFilterTabs","copyRecords","disableChildEdit","defaultDataFn","groupByItems","noGroups","vBind","readonly","NoFirstRowEditable","minSearchLength","totalFields","validate","noHorizontalScroll","hideScroll","noAddOnAllTab","autoSave","hideAllInCombo","refreshHeadersOnFormChange","parentProperty","noTabSort","defaultDataObject","mobileViewTemplate","addMenuButton","noFullScreen","formMainTab","deleteId","toolBarItemsExcluded","hasParent","getItems","scrollOnNew","searchAfterCompleted","helpText","helpTitle","useTabs","maxRecords","droppedObjects","droppedObjectTemplate","droppedObjectFilterProperty","expandedItemsTitle","dropName","addRecordWithLink","qry","columns","hasAssistant","components","VLoading","VCombo","VFormComponent","DList","DForm","VAccordion","VDateRangePicker","VUpload","USMap","SelectTable","VRadioList","VAddLabor","VCustomButton","VDateTime","VFormCard","VUnitCharge","VAddToTableButton","VTreeInput","VEditor","SendLetter","VTableEditedItem","DataTableRowHandler","VMenuButton","ChangeRates","VLabelButton","VFormToolBar","VDialogTable","VCrew","VTextDialog","VTableSearch","VTakePhoto","VArray","VAiChat","VMobileViewTableTemplate","VPager","draggable","data","lastSavedCustomQry","assistantVBind","hideAssistantsList","hideNewChat","noStreaming","defaultMessage","defaultToolTip","listHeight","assistantModel","myLinkClick","testItems","initialQry","assistantQry","tabQry","searchLabel","tableReady","activeTab","breakpoint","tabFilter","selectDelete","mapDialog","mapDialogWidth","mapDialogHeight","curTable","dialog","successMessage","errorMessage","headers","computedHeaders","selected","table","pagerKey","tableKey","originalRecords","schema","sending","showSelect","search","snack","snackColor","snackText","groupBy","totalKey","formKey","expandedKey","formObject","model","init","isNew","isEditedNew","listKey","excelKey","loading","tooltip","defaultItem","dObject","options","debug","disableAll","autoFoldObjects","editedItemPlaceholder","totals","capitalizable","expanded","expand","transitioned","closeTimeouts","editedClass","newRow","insertedRow","insertNewRow","newRowInserted","observer","rowAdded","expandedObjects","compKey","page","pageCount","currentPage","itemsLength","pageStart","pageStop","editDialog","qryExplanation","newRowId","sortDisabled","allTableExpanded","comboFilterItems","currentFilter","pagination","blankRowModel","filterItems","filterCond","propertyList","addTableKey","dModel","select","editedId","additionalModel","hideControls","customBtnLoading","form","update","add","delete","comboCurrentFilter","showAdvancedSearch","searchModel","xllink","editedTabs","edited","currentForm","childEdited","editedTabsKey","columnId","editTitle","mobileHeaders","copyMenu","duplicateValues","hasUpload","upload","uploadFields","uploadFieldsInitialTitle","itemsPerPageEdited","pager","serverItemsLength","itemsPerPageChanged","editDisablePagination","delBtnKey","toolMenu","filterChanged","toolbarKey","groupByItemsReady","searchDone","toolBarKey","footerKey","serverPaginationDone","doServerPagination","filterComboKey","rowClassFn","specialFields","disableSave","searchTabQuery","tabSearchDialog","tabKey","dialogModel","tableInsertable","keepHeaders","initialHideHeaders","mobileList","menuModel","helpModel","searchMenuModel","searchModelKey","additionalTabs","additionalTab","editMode","insertMode","menuOpen","hasDefaultTab","dropKey","filteredTabModel","searchBarKey","filterModel","isFullScreen","closeMenuOnClick","menuItems","menuButtonKey","sortCriteria","currentSortBy","currentSortDesc","wrapHeight","methods","toggleFullScreen","this","buildSearchQuery","myQry","push","$or","searchConditions","mergeProps","itemTemplate","item","rows","forEach","h","value","customAction","$root","$emit","actionName","obj","console","log","resetColumns","object_name","ids","saveCustomQry","metadata","caption","q","description","table_name","user_id","saveColumns","_id","getColumns","length","c","show","tableMount","that","tableEditRow","window","innerWidth","innerHeight","getFilterParams","$on","d","json","query","itemsCount","loadFromDb","tableTitle","refresh","m","dataChange","func","r","sort","sortTable","response","uploaded","getData","getEditedItem","setTotals","resetForm","doSearch","initEdit","objectName","getModel","edit","refreshTable","doExpand","isExpanded","onInsertControlCreated","toggleFilter","e","preventDefault","validateEntry","setTimeout","validationRules","valid","messages","find","t","id","eval","rule","invalidMessage","v","join","remove","fn","applyRow","fromMenu","validateAndSave","tbl","hideToolBar","hide","onDragOver","event","onDragStart","dataTransfer","setData","JSON","stringify","index","effectAllowed","getDropTargetIndex","targetElement","findIndex","onDropItem","stopPropagation","cont","droppedItem","onDrop","draggableItems","draggableRecordsId","curId","itemIndex","i","splice","draggedItem","customFiltering","restoreSchema","objName","localStorage","getItem","keys","properties","origSchema","addNew","$refs","formReady","save","keepOpen","removeTab","editCurrentRecord","dontUpdateParent","updateParentArray","isArray","disableParentEdit","getPos","invertColor","reset","groupByValue","loadOnDemand","schema_name","qryFn","par","customSorting","items","defaultSort","templatedItems","desc","isDesc","origItem","sortedOriginalItems","includes","getColor","colorCls","cls","field","indexOf","getInvertColor","itemClass","addDynamicClass","color","document","getElementById","className","style","innerHTML","head","appendChild","changeSort","column","descending","onPagination","paginationProperties","perPage","saveOrder","newIndex","movedItem","getParentVBind","getParentSchema","getSchema","prepareEditedField","clearable","getCurrentEditedItem","getDialogType","openDialog","currentItem","getVBind","getReadOnly","readOnlyFormula","inEditedItems","included","selectMe","clearSearch","capitalize","formatDate","resetModel","getGroupName","p","group","defaultName","grName","addModel","template","getAddButton","fromItem","getEditableFields","editableFields","fld","f","prop","cancelEdit","getChipValue","slot","itemText","capitalizeText","getTemplate","ind","isEdtited","isEditedItem","modelFn","exist","n","getCalculatedFields","saveRecord","parent_object","submit","editedIndex","icon","resetValidation","saveFilter","filterName","replaceAll","customFilterData","user_email","$set","custom_filter","cancel","customBtnClick","btn","applyGroupBy","captializedGroupByItems","text","g","duplicate","dValues","split","trim","collection_name","field_name","duplicate_values","original_value","getNumber","sum","getSum","key","calculate","open","ref","$nextTick","firstElement","querySelector","classList","parentTable","left","getBoundingClientRect","documentElement","setProperty","close","editRec","rec","path","tot","defaultValue","doNotSubmit","deleted","d_excel","opt","formOptions","defaultFilteredItem","returnObject","addRowFromButton","specialFunction","addProp","val","updateItem","addRow","checkCustomFunction","scrollToEdited","el","elem","scrollIntoView","behavior","block","removeGroup","$el","click","getDefaults","filteredTabItems","curFilter","navigate","unshift","row","blankRow","defaultFn","rowChanged","resetFocus","currentInput","activeElement","td","closest","tr","tdArray","from","querySelectorAll","indexCol","indexRow","input","focus","error","blankItem","edit_combo","dir","changeFilterTab","ev","onScroll","timeout","clearTimeout","target","scrollTop","toggleGroup","startsWith","openGroup","moveFocus","MutationObserver","rowCount","countVisibleRows","nextCtl","disconnect","clearBtn","getElementsByTagName","observe","body","characterDataOldValue","subtree","childList","characterData","newModel","undefined","childrenPath","children_path","path_ids","add_record_to_table","convertArray","convertedArray","$and","and","totalRecords","per_page","default_model","max_records","sort_desc","Date","additional_data","obj_name","toLowerCase","getObjects","assignId","deleteCustomFilter","$confirm","getGroupBy","buildSortCriteria","map","sortField","getSortBy","newSortBy","getSortDesc","newSortDesc","closeDialog","getField","title","getFieldDisplay","sortedDraggedObjects","sortedObjects","getDefaultDataObject","beforeGetData","getTableProperties","doTabs","getUploadFields","groupExist","hideCtl","hideIf","resetNewRow","selectCtl","a","b","autoAssign","wasAssigned","prefix","isNewGroup","displayGroup","prevGroup","uploadFieldsTitle","initTable","initEdited","total_records","Math","ceil","selRec","getAllEditable","filterHeaders","getDefaultColor","convertAssistantQry","resetAssistantQry","buildCustomQueryPrompt","customInstructions","prompt","$route","params","toString","doTabFilter","sortObjects","filterTabVBind","all_records","permittedQry","store","permittedActions","parse","limitTabs","getFilterCombo","toggleBreakpoint","showComponent","comp","displayIf","getSaveTitle","save_title","getSaveFunction","save_function","incl","updateHeight","getTextDialogIcon","iconFn","default_value","function","ed","outlined","class","deleteCustomQry","ctl","getEditedSchema","get_table","header","hidden","splitTitle","getCurrentDateTime","getCurrentDate","getCurrentUser","userData","email","updateModel","itemExpanded","handleClick","total","object_id","htmlDecode","doc","DOMParser","parseFromString","textContent","curRec","convertDateFormat","portal","portal_id","retValue","sortable","groupable","splitHeader","splitedHeader","splitIndex","noCustomer","originalHeaders","checkHiddenHeaders","dTable","cnt","deleteSelected","replace","delete_object_name","db_name","id_name","additional_delete_objects","highlightClickedRow","expandDataObject","parModel","isExpandRow","getDataObjectFromParent","expandAll","getObject","expandRows","uploadExcel","downloadExcel","record_id","filename","host","excel","getForm","itemName","emitDialogSave","saveFunction","editor","parent","disable","editExist","bodySlots","toggleAllGroups","filterData","getFilterValue","filterProperty","filterValue","active","hideHeaders","renameHeaders","checkTabOptions","dragstart","draggedHeader","drop","fromIndex","toIndex","saveColumnOrder","toggleColumn","updateFilter","valueFn","applyCustomQry","customQry","custom_qry","applyFilter","filterIndex","applyFilterOnEnter","o","updateDisablePagination","updateAdditionalTabs","updateItemsPerPage","updateOriginalRecords","tableIds","remainingRecords","concat","virtualScroll","addDefaultFilter","defaultFilter","addDefaultTab","handleGroupDescChange","getTableTop","top","directives","bind","animation","onUpdate","vnode","child","handle","context","mounted","addEventListener","searchFields","$vuetify","smAndDown","arrive","activated","watch","handler","newValue","inArray","range","dayRangeFilter","minDate","maxDate","dates","dMin","dMax","isString","include","deep","oldValue","tab","searchInput","computed","safeToolBarControls","tableTotal","tblStyle","width","screen","filteredHeaders","filteredItems","searchTrigger","render","_vm","_h","$createElement","_c","_self","attrs","_e","_v","_s","tableHeader","rawName","expression","staticClass","callback","$$v","_l","hideTotal","tag","mdAndUp","scopedSlots","_u","on","_g","$event","_k","keyCode","staticStyle","refInFor","saveFilterMenu","isMobile","_b","customerId","isTablet","onMenu","assign","height","proxy","some","span","noSpan","s","j","isOpen","toggle","domProps","theme","dark","nonUpdatable","noEditDialogButtons","badge","action","commandText","parseFloat","toFixed","staticRenderFns","component","VAlert","VAppBar","VAutocomplete","VBadge","VBtn","VCard","VCardText","VCardTitle","VCheckbox","VChip","VCol","VContainer","VDataTable","VDialog","VEditDialog","VIcon","VLabel","VList","VListItem","VListItemTitle","VMenu","VRow","VSelect","VSnackbar","VSpacer","VSwitch","VTab","VTabs","VTextField","VTextarea","VToolbar","VTooltip"],"mappings":"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","file":"js/chunk-cafb5bde.c4ac8c0d.js","sourcesContent":["<template>\r\n <div ref=\"parentContainer\">\r\n <!-- {{ propertyList }} -->\r\n <!-- assistantQry: {{ assistantQry }}\r\n <br />\r\n convertAssistantQry: -->\r\n <!-- {{ convertAssistantQry() }} -->\r\n\r\n <div hidden>\r\n <v-take-photo></v-take-photo>\r\n </div>\r\n\r\n <h3 v-if=\"!hideTitle\">{{ table_title || tableHeader }}</h3>\r\n <!-- expanded:{{ expanded }} -->\r\n <!-- defaultModel:{{ defaultModel }} -->\r\n <v-tabs\r\n v-if=\"filterItems.length && filterItems.length > 1 && !noTabs && useTabs\"\r\n v-show=\"!hideFilterTabs\"\r\n v-model=\"currentFilter\"\r\n class=\"mt-2 filter-tabs\"\r\n active-class=\"active-tab\"\r\n continuous\r\n grow\r\n show-arrows\r\n :key=\"tabKey\"\r\n >\r\n <v-tab v-for=\"item in filteredTabItems\" :key=\"item.caption\">\r\n {{ item.caption }}\r\n </v-tab>\r\n </v-tabs>\r\n\r\n <div :class=\"{ 'full-screen': isFullScreen }\">\r\n <!-- </v-toolbar> -->\r\n <!-- <v-label v-if=\"hideTopBar && table_title\">\r\n {{ table_title }}\r\n </v-label> -->\r\n <div class=\"top-bar\">\r\n <v-component\r\n :is=\"$vuetify.breakpoint.smAndDown ? 'div' : 'v-toolbar'\"\r\n v-if=\"!edited && getTotal && !data_object.hideTotal\"\r\n :class=\"{\r\n 'ml-n0 mr-n0 mb-4': $vuetify.breakpoint.smAndDown,\r\n 'ml-0 mb-0 mr-0': $vuetify.breakpoint.mdAndUp\r\n }\"\r\n flat\r\n >\r\n <v-spacer\r\n v-if=\"\r\n (!edited && !dList && !hideTitle && table_title) || table_title\r\n \"\r\n ></v-spacer>\r\n\r\n <v-spacer\r\n v-if=\"\r\n !edited && filterItems && filterItems.length && showFilterCombo\r\n \"\r\n ></v-spacer>\r\n\r\n <v-spacer\r\n v-if=\"!edited && getTotal && !data_object.hideTotal && !dExcel\"\r\n ></v-spacer>\r\n <v-chip\r\n class=\"mt-n2\"\r\n ref=\"total\"\r\n v-if=\"!edited && getTotal && !data_object.hideTotal\"\r\n elevation-4\r\n >\r\n {{ !totals ? \"\" : totals.total.text }}\r\n </v-chip>\r\n </v-component>\r\n\r\n <!-- class=\"header-toolbar ml-0 mt-2 mb-2 pa-2\" -->\r\n\r\n <v-toolbar\r\n v-if=\"(!hideTopBar || !noDelete || addButtonCaption) && !hideControls\"\r\n :key=\"toolbarKey\"\r\n flat\r\n class=\"table-toolbar\"\r\n >\r\n <v-tooltip v-if=\"!edited && !noDelete && selectDelete\" top>\r\n <template v-slot:activator=\"{ on }\">\r\n <v-btn\r\n :class=\"dExcel ? `ml-2` : `ml-2`\"\r\n icon\r\n v-on=\"on\"\r\n :disabled=\"!selected.length\"\r\n @click=\"deleteSelected\"\r\n >\r\n <v-icon color=\"error\">mdi-delete-sweep</v-icon>\r\n </v-btn>\r\n </template>\r\n <span>Delete Selected</span>\r\n </v-tooltip>\r\n\r\n <v-btn\r\n v-if=\"\r\n !edited && !noDelete && !readonly && tableReady && table.length\r\n \"\r\n :key=\"delBtnKey\"\r\n class=\"ml-2\"\r\n icon\r\n v-on=\"on\"\r\n @click=\"\r\n selectDelete = !selectDelete;\r\n selected = [];\r\n \"\r\n >\r\n <v-icon v-if=\"!selectDelete\" color=\"error\">mdi-minus-circle</v-icon>\r\n\r\n <v-icon v-if=\"selectDelete\">mdi-cancel</v-icon>\r\n </v-btn>\r\n\r\n <v-btn\r\n class=\"ma-0\"\r\n v-if=\"\r\n addButtonCaption &&\r\n !tableInsertable &&\r\n !edited &&\r\n !readonly &&\r\n !addMenuButton\r\n \"\r\n color=\"info\"\r\n @click=\"editCurrentRecord()\"\r\n text\r\n >\r\n <v-icon class=\"ma-2\">mdi-plus-circle</v-icon>\r\n\r\n <!-- <span\r\n v-if=\"\r\n (filteredTabItems[currentFilter] || !currentFilter) &&\r\n !$root.isMobile &&\r\n !$root.isTablet\r\n \"\r\n >\r\n {{ addButtonCaption }}\r\n </span> -->\r\n </v-btn>\r\n <div v-if=\"noAddOnAllTab && !currentFilter\">\r\n Please {{ filterComboLabel }} to Add Record\r\n </div>\r\n <v-spacer></v-spacer>\r\n <v-menu\r\n v-if=\"\r\n (hasSearch && table.length) ||\r\n search ||\r\n remoteSearch ||\r\n (searchModel && Object.keys(searchModel).length)\r\n \"\r\n v-model=\"searchMenuModel\"\r\n :close-on-content-click=\"false\"\r\n offset-y\r\n >\r\n <template v-slot:activator=\"{}\">\r\n <v-text-field\r\n hide-details\r\n prepend-inner-icon=\"mdi-magnify\"\r\n :append-icon=\"\r\n hasAdvancedSearch\r\n ? 'mdi-clipboard-text-search'\r\n : searchAfterCompleted && search\r\n ? 'mdi-account-search'\r\n : ''\r\n \"\r\n label=\"Search\"\r\n clearable\r\n v-model=\"search\"\r\n @keydown.enter=\"\r\n searchAfterCompleted\r\n ? doSearch()\r\n : (searchMenuModel = !searchMenuModel)\r\n \"\r\n @click:append=\"\r\n searchAfterCompleted\r\n ? doSearch()\r\n : (searchMenuModel = !searchMenuModel)\r\n \"\r\n ></v-text-field>\r\n </template>\r\n <v-toolbar flat>\r\n <h2 class=\"d-flex justify-center\">Advanced Filter/Search</h2>\r\n </v-toolbar>\r\n <v-list\r\n v-if=\"hasAdvancedSearch\"\r\n :key=\"searchModelKey\"\r\n style=\"max-height: 50vh; overflow-y: auto\"\r\n >\r\n <v-list-item v-for=\"(h, i) in computedHeaders\" :key=\"i\">\r\n <v-row>\r\n <v-col class=\"ma-2\">\r\n <label>{{ capitalize(h.value) }}:</label>\r\n </v-col>\r\n\r\n <v-col>\r\n <div style=\"width: 300px\">\r\n <!-- {{ getSchema({ name: h.value }) }} -->\r\n <!-- {{ h }} -->\r\n <v-form-component\r\n :ref=\"h.value\"\r\n :name=\"h.value\"\r\n :label=\"h.text\"\r\n :schema=\"getSchema({ name: h.value })\"\r\n :k=\"h.value\"\r\n :model=\"searchModel\"\r\n :hasParent=\"hasParent\"\r\n ></v-form-component>\r\n </div>\r\n </v-col>\r\n </v-row>\r\n </v-list-item>\r\n </v-list>\r\n <v-toolbar>\r\n <v-btn text @click=\"clearSearch()\">Clear Filter</v-btn>\r\n <v-spacer></v-spacer>\r\n <v-menu\r\n v-model=\"saveFilterMenu\"\r\n :close-on-content-click=\"false\"\r\n offset-y\r\n >\r\n <template v-slot:activator=\"{ on }\">\r\n <v-btn v-on=\"on\" class=\"ma-2\" color=\"info\">\r\n Save Filter\r\n </v-btn>\r\n </template>\r\n <v-toolbar>\r\n <v-text-field\r\n label=\"Filter Name\"\r\n v-model=\"filterName\"\r\n ></v-text-field>\r\n <v-btn class=\"ma-2\" text color=\"info\" @click=\"saveFilter()\">\r\n Save Filter\r\n </v-btn>\r\n </v-toolbar>\r\n </v-menu>\r\n </v-toolbar>\r\n </v-menu>\r\n <v-btn v-if=\"hasAssistant\" text @click=\"buildCustomQueryPrompt\"\r\n ><v-icon>\r\n mdi-database-search\r\n </v-icon>\r\n <v-span v-if=\"$vuetify.breakpoint.mdAndUp\"\r\n >Build Custom Search</v-span\r\n >\r\n </v-btn>\r\n <v-btn\r\n v-if=\"hasAssistant && assistantQry\"\r\n text\r\n @click=\"resetAssistantQry\"\r\n ><v-icon>\r\n mdi-close\r\n </v-icon>\r\n <v-span v-if=\"$vuetify.breakpoint.mdAndUp\"\r\n >Reset Custom Search</v-span\r\n >\r\n </v-btn>\r\n <v-spacer></v-spacer>\r\n <v-btn v-if=\"expandable\" text small @click=\"expandAll()\">\r\n <v-icon v-if=\"!allTableExpanded\" class=\"ma-2\"\r\n >mdi-expand-all</v-icon\r\n >\r\n <v-icon v-else class=\"ma-2\">mdi-collapse-all</v-icon>\r\n </v-btn>\r\n\r\n <v-autocomplete\r\n clearable\r\n v-if=\"\r\n !edited &&\r\n (hasSearch ||\r\n (filteredTabItems.length &&\r\n filteredTabItems.length > 1 &&\r\n !noTabs)) &&\r\n !useTabs & !$root.isMobile &&\r\n filteredTabItems.length &&\r\n filteredTabItems.length > 1 &&\r\n !noTabs\r\n \"\r\n class=\"mt-5 pa-2\"\r\n :items=\"filteredTabItems\"\r\n item-text=\"caption\"\r\n item-value=\"value\"\r\n @change=\"applyFilter\"\r\n @keydown=\"applyFilterOnEnter\"\r\n :label=\"filterComboLabel || 'Filter'\"\r\n ></v-autocomplete>\r\n\r\n <v-autocomplete\r\n v-if=\"additionalModel && additionalModel.custom_qry\"\r\n clearable\r\n class=\"mt-5 pa-2\"\r\n :items=\"additionalModel.custom_qry\"\r\n item-text=\"caption\"\r\n item-value=\"_id\"\r\n @change=\"applyCustomQry\"\r\n label=\"Custom Query\"\r\n >\r\n <template v-slot:item=\"{ item }\">\r\n <!-- <v-list>\r\n <v-list-item\r\n v-for=\"(item, index) in additionalModel.custom_qry\"\r\n :key=\"item._id\"\r\n >\r\n <v-list-item-content>\r\n <v-list-item-title>{{ item.caption }}</v-list-item-title>\r\n </v-list-item-content>\r\n <v-list-item-action> -->\r\n {{ item.caption }}\r\n <v-btn icon @click=\"deleteCustomQry(item, index)\">\r\n <v-icon color=\"red\">mdi-delete</v-icon>\r\n </v-btn>\r\n <!-- </v-list-item-action>\r\n </v-list-item>\r\n </v-list> -->\r\n </template>\r\n </v-autocomplete>\r\n\r\n <v-menu-button\r\n :title=\"addButtonCaption\"\r\n v-bind=\"getAddButton()\"\r\n :apply=\"applyRow\"\r\n :reset=\"resetNewRow\"\r\n :menuOpen=\"menuOpen\"\r\n icon=\"mdi-plus-circle\"\r\n :modal=\"true\"\r\n :text=\"true\"\r\n color=\"info\"\r\n :menuItemClick=\"addRowFromButton\"\r\n :hasSearch=\"true\"\r\n :getItems=\"getItems\"\r\n :menuItems=\"menuItems\"\r\n v-if=\"\r\n addMenuButton &&\r\n !readonly &&\r\n (!noAddOnAllTab || (noAddOnAllTab && currentFilter))\r\n \"\r\n :formModel=\"formModel\"\r\n :editableFields=\"getEditableFields()\"\r\n :table=\"this\"\r\n :key=\"menuButtonKey\"\r\n :capitalizeText=\"true\"\r\n ></v-menu-button>\r\n\r\n <v-btn\r\n v-if=\"tableInsertable && !addMenuButton\"\r\n class=\"ma-1\"\r\n v-on=\"on\"\r\n text\r\n color=\"info\"\r\n @click=\"addRow()\"\r\n >\r\n <v-icon class=\"ma-2\">mdi-plus-circle</v-icon>\r\n <div>{{ addButtonCaption || \"Add Record\" }}</div>\r\n </v-btn>\r\n <!-- (!noAddOnAllTab || (noAddOnAllTab && currentFilter)) && -->\r\n <v-toolbar\r\n class=\"table-toolbar\"\r\n flat\r\n v-if=\"\r\n tableInsertable &&\r\n !edited &&\r\n !readonly &&\r\n table.length &&\r\n table[0]._id == newRowId\r\n \"\r\n >\r\n <v-btn\r\n v-if=\"table.length && table[0]._id == newRowId\"\r\n class=\"ma-1\"\r\n icon\r\n >\r\n <v-icon color=\"success\" @click=\"applyRow()\">\r\n mdi-checkbox-marked-circle\r\n </v-icon>\r\n </v-btn>\r\n\r\n <v-btn\r\n v-if=\"table.length && table[0]._id == newRowId\"\r\n icon\r\n color=\"warning\"\r\n class=\"ma-1\"\r\n >\r\n <v-icon @click=\"resetNewRow()\">mdi-cancel</v-icon>\r\n </v-btn>\r\n </v-toolbar>\r\n\r\n <v-spacer> </v-spacer>\r\n\r\n <v-btn\r\n v-if=\"showAdvancedSearch\"\r\n class=\"ma-1\"\r\n small\r\n text\r\n @click=\"showAdvancedSearch = !showAdvancedSearch\"\r\n >\r\n <v-icon color=\"info\">mdi-filter-remove</v-icon>\r\n </v-btn>\r\n <v-spacer></v-spacer>\r\n <a target=\"_blank\" :href=\"xllink\" v-if=\"xllink\">Download Excel</a>\r\n\r\n <v-toolbar\r\n class=\"table-toolbar\"\r\n :key=\"toolBarKey\"\r\n v-if=\"\r\n !$root.isMobile &&\r\n !edited &&\r\n !dExcel &&\r\n toolBarControls &&\r\n !hideControls &&\r\n !noToolBar &&\r\n tableReady &&\r\n !readonly\r\n \"\r\n flat\r\n >\r\n <v-spacer\r\n v-if=\"toolbarRight && $vuetify.breakpoint.mdAndUp\"\r\n ></v-spacer>\r\n\r\n <v-list-item\r\n v-for=\"(c, i) in (safeToolBarControls || []).filter(t => {\r\n return $root.customerId\r\n ? t['v-bind'] && !t['v-bind'].noCustomer\r\n : !t.hidden;\r\n })\"\r\n :key=\"i\"\r\n >\r\n <v-btn\r\n :small=\"true\"\r\n :color=\"c['v-bind'].color\"\r\n :text=\"c['v-bind'].text\"\r\n :class=\"c['v-bind'].class\"\r\n v-if=\"\r\n c.default &&\r\n !$root.isMobile &&\r\n !$root.isTablet &&\r\n c['v-bind'] &&\r\n c[`comp`] == 'v-btn' &&\r\n !c['v-bind'].hidden &&\r\n !c.hidden &&\r\n !hideCtl(c)\r\n \"\r\n @click=\"customBtnClick(c)\"\r\n :loading=\"customBtnLoading\"\r\n >\r\n <v-icon\r\n :class=\"$vuetify.breakpoint.smAndDown ? 'ma-0' : 'ma-2'\"\r\n v-if=\"c['v-bind'] && c['v-bind'].icon\"\r\n >\r\n {{ c[\"v-bind\"].icon }}\r\n </v-icon>\r\n {{ c[\"v-bind\"][\"input-value\"] }}\r\n </v-btn>\r\n\r\n <component\r\n v-else-if=\"\r\n c.default &&\r\n !edited &&\r\n c['v-bind'] &&\r\n !c['v-bind'].hidden &&\r\n !hideCtl(c)\r\n \"\r\n :hidden=\"c.hidden\"\r\n small\r\n :is=\"c[`comp`]\"\r\n :ref=\"c[`id`]\"\r\n :id=\"c[`id`]\"\r\n :table=\"getObject()\"\r\n :style=\"'width:' + c[`v-bind`].width\"\r\n v-bind=\"c[`v-bind`]\"\r\n >\r\n {{ c.value }}\r\n </component>\r\n </v-list-item>\r\n </v-toolbar>\r\n\r\n <v-tooltip\r\n v-if=\"!noRefreshButton && getFreshData && !edited && tableReady\"\r\n top\r\n >\r\n <template v-slot:activator=\"{ on }\">\r\n <v-btn\r\n class=\"ma-1\"\r\n small\r\n v-on=\"on\"\r\n @click=\"refreshParent ? refreshParent() : refreshTable()\"\r\n text\r\n >\r\n <v-icon\r\n :class=\"$vuetify.breakpoint.smAndDown ? 'ma-0' : 'ma-2'\"\r\n >\r\n mdi-reload\r\n </v-icon>\r\n </v-btn>\r\n </template>\r\n <span>Refresh</span>\r\n </v-tooltip>\r\n\r\n <v-spacer v-if=\"!$root.isMobile\"></v-spacer>\r\n <v-pager\r\n :key=\"pagerKey\"\r\n v-if=\"\r\n !$root.isMobile &&\r\n !edited &&\r\n tableReady &&\r\n !hideFooter &&\r\n !editDisablePagination &&\r\n !disablePagination\r\n \"\r\n :pageStart=\"pageStart\"\r\n :pageStop=\"itemsCount > pageStop ? pageStop : itemsCount\"\r\n :itemsLength=\"itemsCount\"\r\n :navigate=\"navigate\"\r\n :page=\"page\"\r\n ></v-pager>\r\n\r\n <v-menu\r\n v-model=\"menuModel\"\r\n v-if=\"!edited && !noAdditionalMenu\"\r\n :close-on-content-click=\"false\"\r\n :close-on-click=\"closeMenuOnClick\"\r\n >\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn class=\"ma-1\" icon small v-bind=\"attrs\" v-on=\"on\">\r\n <v-icon class=\"ma-2\">mdi-dots-vertical</v-icon>\r\n </v-btn>\r\n </template>\r\n <v-toolbar class=\"mb-n2\" flat>\r\n <v-spacer></v-spacer>\r\n <v-btnright icon @click=\"menuModel = false\">\r\n <v-icon small>mdi-close</v-icon>\r\n </v-btnright>\r\n </v-toolbar>\r\n\r\n <v-list class=\"mt-n4\">\r\n <v-list-item v-if=\"groupByItemsReady\">\r\n <!-- captializedGroupByItems():{{ captializedGroupByItems() }} -->\r\n\r\n <v-autocomplete\r\n label=\"Group By\"\r\n :clearable=\"true\"\r\n :items=\"captializedGroupByItems()\"\r\n @change=\"applyGroupBy\"\r\n ></v-autocomplete>\r\n </v-list-item>\r\n <v-list-item v-if=\"dExcel\">\r\n <v-btn icon v-on=\"on\" right @click=\"submit\">\r\n <v-icon>mdi-content-save</v-icon>\r\n Save Table\r\n </v-btn>\r\n </v-list-item>\r\n\r\n <v-list-item>\r\n <v-btn :loading=\"loading\" text small @click=\"downloadExcel()\">\r\n <v-icon class=\"ma-2\">mdi-file-excel</v-icon>\r\n Download Excel\r\n </v-btn>\r\n </v-list-item>\r\n\r\n <v-list-item v-if=\"hasUpload && tableReady\">\r\n <v-btn\r\n :loading=\"loading\"\r\n text\r\n small\r\n v-on=\"on\"\r\n @click=\"uploadExcel()\"\r\n >\r\n <v-icon class=\"ma-2\">mdi-auto-upload</v-icon>\r\n Upload Excel\r\n </v-btn>\r\n </v-list-item>\r\n <v-list-item v-if=\"$vuetify.breakpoint.smAndDown\">\r\n <v-btn small @click=\"toggleBreakpoint()\" text>\r\n <v-icon v-if=\"breakpoint && breakpoint != '0'\" class=\"ma-2\">\r\n mdi-table-large\r\n </v-icon>\r\n <v-icon class=\"ma-2\" v-else>mdi-view-list</v-icon>\r\n {{ breakpoint ? \"View Table\" : \"View List\" }}\r\n </v-btn>\r\n </v-list-item>\r\n <v-list-item\r\n v-if=\"tableReady && !hideFooter && table.length > 10\"\r\n >\r\n <v-btn\r\n v-on=\"on\"\r\n text\r\n small\r\n @click=\"editDisablePagination = !editDisablePagination\"\r\n >\r\n <v-icon class=\"ma-2\">mdi-select-all</v-icon>\r\n {{\r\n editDisablePagination\r\n ? \"Enable Pagination\"\r\n : \"Disable Pagination\"\r\n }}\r\n </v-btn>\r\n </v-list-item>\r\n\r\n <v-list-item v-if=\"columnTool && tableReady && !$root.customerId\">\r\n <v-menu\r\n v-if=\"columnTool && tableReady && !$root.customerId\"\r\n :close-on-content-click=\"false\"\r\n offset-y\r\n >\r\n <template v-slot:activator=\"{ on: onMenu, attrs }\">\r\n <v-btn small v-bind=\"attrs\" v-on=\"{ ...onMenu }\" text>\r\n <v-icon class=\"ma-2\">mdi-view-column</v-icon>\r\n Choose Columns\r\n </v-btn>\r\n </template>\r\n <v-list class=\"column-list\">\r\n <draggable style=\"width: 100%\" :list=\"computedHeaders\">\r\n <v-list-item\r\n class=\"pointer\"\r\n v-for=\"(item, index) in (computedHeaders || []).filter(\r\n c => {\r\n return c.value != 'actions';\r\n }\r\n )\"\r\n :key=\"index\"\r\n >\r\n <!-- {{ item }} -->\r\n <v-list-item-title>{{ item.text }}</v-list-item-title>\r\n\r\n <v-switch v-model=\"item.show\"></v-switch>\r\n </v-list-item>\r\n </draggable>\r\n </v-list>\r\n <v-toolbar>\r\n <v-btn @click=\"saveColumns()\" text style=\"top\" color=\"info\">\r\n Save Columns\r\n </v-btn>\r\n <v-btn\r\n @click=\"resetColumns()\"\r\n text\r\n style=\"top\"\r\n color=\"warning\"\r\n >\r\n Reset Columns\r\n </v-btn>\r\n </v-toolbar>\r\n </v-menu>\r\n </v-list-item>\r\n <hr />\r\n <v-list-item\r\n v-for=\"(c, i) in (safeToolBarControls || []).filter(t => {\r\n return (\r\n (!t.default || $root.isMobile || $root.isTablet) &&\r\n ($root.customerId\r\n ? t['v-bind'] && !t['v-bind'].noCustomer\r\n : !t.hidden)\r\n );\r\n })\"\r\n :key=\"i\"\r\n >\r\n <v-btn\r\n :small=\"true\"\r\n :color=\"c['v-bind'].color\"\r\n :text=\"c['v-bind'].text\"\r\n :class=\"c['v-bind'].class\"\r\n v-if=\"\r\n (!c.default || $root.isMobile || $root.isTablet) &&\r\n c[`comp`] == 'v-btn' &&\r\n c['v-bind'] &&\r\n !c['v-bind'].hidden &&\r\n !c.hidden &&\r\n !hideCtl(c)\r\n \"\r\n @click=\"customBtnClick(c)\"\r\n :loading=\"customBtnLoading\"\r\n >\r\n <v-icon\r\n :class=\"$vuetify.breakpoint.smAndDown ? 'ma-2' : 'ma-2'\"\r\n v-if=\"c['v-bind'] && c['v-bind'].icon\"\r\n >\r\n {{ c[\"v-bind\"].icon }}\r\n </v-icon>\r\n {{ c[\"v-bind\"][\"input-value\"] }}\r\n </v-btn>\r\n <component\r\n v-else-if=\"\r\n !c.default &&\r\n !edited &&\r\n c['v-bind'] &&\r\n !c['v-bind'].hidden &&\r\n !hideCtl(c)\r\n \"\r\n :hidden=\"c.hidden\"\r\n small\r\n :is=\"c[`comp`]\"\r\n :ref=\"c[`id`]\"\r\n :id=\"c[`id`]\"\r\n :table=\"getObject()\"\r\n v-bind=\"c[`v-bind`]\"\r\n >\r\n {{ c.value }}\r\n </component>\r\n </v-list-item>\r\n </v-list>\r\n </v-menu>\r\n\r\n <div class=\"text-center\">\r\n <v-dialog v-model=\"helpModel\" v-if=\"helpText\" width=\"500\">\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn class=\"ma-1\" icon small v-bind=\"attrs\" v-on=\"on\">\r\n <v-icon class=\"ma-2\">mdi-help-box</v-icon>\r\n </v-btn>\r\n </template>\r\n\r\n <v-card>\r\n <v-card-title class=\"text-h5 grey lighten-2\">\r\n {{ helpTitle }}\r\n </v-card-title>\r\n\r\n <v-card-text>\r\n {{ helpText }}\r\n </v-card-text>\r\n </v-card>\r\n </v-dialog>\r\n </div>\r\n <template> </template>\r\n\r\n <v-tooltip v-if=\"!isMobile && !noFullScreen\" top>\r\n <template v-slot:activator=\"{ on }\">\r\n <v-btn v-on=\"on\" class=\"ma-2\" icon @click=\"toggleFullScreen\">\r\n <v-icon v-if=\"!isFullScreen\">mdi-fullscreen</v-icon>\r\n <v-icon round color=\"error\" v-else>mdi-fullscreen-exit</v-icon>\r\n </v-btn>\r\n </template>\r\n <span>Toggle Full Screen</span>\r\n </v-tooltip>\r\n </v-toolbar>\r\n </div>\r\n <div v-if=\"upload\">\r\n <v-upload\r\n defaultMessage=\"Drop here excel file to upload\"\r\n :label=\"uploadFieldsTitle\"\r\n :objectName=\"data_object.object_name\"\r\n :uploadFields=\"uploadFields\"\r\n ></v-upload>\r\n </div>\r\n\r\n <h3 class=\"ma-2\" v-if=\"isEditedNew && edited\">\r\n {{\r\n addButtonCaption\r\n ? addButtonCaption.replace(\"Add\", \"New\")\r\n : \"New Record\"\r\n }}\r\n </h3>\r\n\r\n <v-tabs\r\n :hidden=\"hideEditedTabs || isEditedNew\"\r\n v-if=\"editedTabs.length\"\r\n class=\"mt-2\"\r\n v-model=\"edited\"\r\n :key=\"editedTabsKey\"\r\n show-arrows\r\n grow\r\n >\r\n <v-tab key=\"all_records\">All {{ tableName }}</v-tab>\r\n <v-tab\r\n @click=\"getCurrentEditedItem(t)\"\r\n v-for=\"(t, i) in editedTabs\"\r\n :key=\"i\"\r\n >\r\n <v-icon class=\"pr-2\" v-if=\"t.icon\">{{ t.icon }}</v-icon>\r\n {{ t.text }}\r\n\r\n <v-btn icon @click=\"removeTab(i)\" class=\"ml-2\">\r\n <v-icon x-small>mdi-close</v-icon>\r\n </v-btn>\r\n </v-tab>\r\n </v-tabs>\r\n\r\n <div class=\"edited-form\" v-if=\"edited\">\r\n <v-component :is=\"'div'\" fullscreen v-model=\"dialog\">\r\n <v-form-card\r\n :dObject=\"dObject\"\r\n v-bind=\"schema['v-bind']\"\r\n :inTable=\"true\"\r\n ref=\"form\"\r\n :panels=\"true\"\r\n :key=\"formKey\"\r\n :noCache=\"noCache\"\r\n :hasParent=\"hasParent\"\r\n ></v-form-card>\r\n </v-component>\r\n <v-toolbar flat>\r\n <v-spacer></v-spacer>\r\n <div class=\"edit-bar\" flat v-if=\"!childEdited && edited\">\r\n <v-spacer></v-spacer>\r\n\r\n <v-btn text @click=\"cancelEdit\">\r\n <v-icon class=\"ma-2\">mdi-cancel</v-icon><span>Cancel Edit</span>\r\n </v-btn>\r\n\r\n <v-btn\r\n text\r\n v-if=\"!disableSave\"\r\n right\r\n class=\"text-right ma-2\"\r\n color=\"success\"\r\n @click=\"validateAndSave()\"\r\n >\r\n <v-icon class=\"ma-2\">mdi-check</v-icon>\r\n <span> {{ saveButtonCaption || \"Save\" }}</span>\r\n </v-btn>\r\n <v-menu\r\n v-model=\"copyMenu\"\r\n :close-on-content-click=\"false\"\r\n :nudge-width=\"200\"\r\n v-if=\"copyRecords\"\r\n offset-x\r\n >\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn text small v-on=\"on\">\r\n <v-icon>mdi-content-copy</v-icon>\r\n Duplicate\r\n </v-btn>\r\n </template>\r\n <v-card class=\"pa-2\">\r\n <h3>Copy {{ dObject.model[copyRecords.field_name] }}</h3>\r\n <br />\r\n <v-label>\r\n New {{ copyRecords.field_name }} separated by comma:\r\n </v-label>\r\n <v-textarea v-model=\"duplicateValues\"></v-textarea>\r\n <v-btn @click=\"duplicate()\" color=\"info\">Submit</v-btn>\r\n </v-card>\r\n </v-menu>\r\n <!-- <v-btn\r\n small\r\n right\r\n text\r\n class=\"text-right ma-2\"\r\n color=\"success\"\r\n v-if=\"isEditedNew\"\r\n @click=\"validateAndSave(true)\"\r\n >\r\n Save and New\r\n </v-btn> -->\r\n <v-alert\r\n dismissible\r\n dense\r\n v-if=\"errorMessage != '' && errorMessage\"\r\n type=\"error\"\r\n >\r\n {{ errorMessage }}\r\n </v-alert>\r\n </div>\r\n </v-toolbar>\r\n </div>\r\n\r\n <div\r\n ref=\"tableWrap\"\r\n :style=\"{ height: wrapHeight, 'max-height': wrapHeight }\"\r\n :class=\"\r\n hideScroll\r\n ? ''\r\n : $root.isMobile\r\n ? ''\r\n : noHorizontalScroll\r\n ? 'data-table-wrap-no-hor'\r\n : 'data-table-wrap'\r\n \"\r\n v-else\r\n >\r\n <div ref=\"outerScroll\" v-if=\"!hideScroll\" class=\"outer-scroll\">\r\n <div refs=\"innerScroll\" class=\"inner-scroll\"></div>\r\n </div>\r\n <!-- computedHeaders:{{ computedHeaders }} -->\r\n\r\n <v-data-table\r\n :items=\"filteredItems\"\r\n v-if=\"\r\n !dList &&\r\n !dExcel &&\r\n Array.isArray(table) &&\r\n !mapDialog &&\r\n tableReady &&\r\n computedHeaders\r\n \"\r\n v-model=\"selected\"\r\n :headers=\"\r\n (computedHeaders || []).filter(h => {\r\n return (\r\n table.length &&\r\n !h.hide &&\r\n (h.show || h.value == 'actions' || tableEditRow)\r\n );\r\n })\r\n \"\r\n :group-by=\"groupBy\"\r\n :group-key=\"groupBy\"\r\n :group-desc=\"false\"\r\n item-key=\"_id\"\r\n :show-select=\"\r\n (!noDelete && selectDelete) ||\r\n singleSelect ||\r\n select ||\r\n isDraggable ||\r\n selectSwitch\r\n \"\r\n :show-expand=\"expandable\"\r\n :show-group-by=\"showGroupBy\"\r\n :fixed-header=\"fixedHeader\"\r\n :height=\"tableHeight\"\r\n :disable-pagination=\"editDisablePagination\"\r\n :hide-default-footer=\"true\"\r\n :hide-default-header=\"hideHeader\"\r\n :items-per-page=\"itemsPerPageEdited\"\r\n :mobile-breakpoint=\"breakpoint\"\r\n @click:row=\"handleClick\"\r\n @pagination=\"onPagination\"\r\n @item-selected=\"itemSelected || null\"\r\n :options.sync=\"pagination\"\r\n dense\r\n :expand.sync=\"expand\"\r\n ref=\"dTable\"\r\n :expanded.sync=\"expanded\"\r\n class=\"row-pointer elevation-1\"\r\n transition=\"slide-y-transition\"\r\n v-draggable\r\n @sorted=\"saveOrder\"\r\n :page.sync=\"page\"\r\n :loading=\"loading\"\r\n :search=\"searchLen ? searchTrigger : search\"\r\n :item-class=\"itemClass\"\r\n :disable-sort=\"disableSort\"\r\n :single-select=\"\r\n (singleSelect && !selectDelete) || (noDelete && !select)\r\n \"\r\n :server-items-length=\"serverItemsLength\"\r\n :custom-sort=\"customSorting\"\r\n :custom-filter=\"customFilter ? customFiltering : defaultFilter\"\r\n :tableName=\"tableName\"\r\n :key=\"tableKey\"\r\n :style=\"tblStyle\"\r\n @update:sort-by=\"getSortBy\"\r\n @update:sort-desc=\"getSortDesc\"\r\n @update:group-by=\"getGroupBy\"\r\n @update:group-desc=\"handleGroupDescChange\"\r\n >\r\n <template v-if=\"isGoToButton\" v-slot:item.goto=\"{ item }\">\r\n <v-btn small elevation=\"0\" @click=\"goToButtonAction(item)\">\r\n {{ goToButtonText }}\r\n </v-btn>\r\n </template>\r\n\r\n <template v-slot:body.prepend>\r\n <tr v-if=\"showAdvancedSearch\">\r\n <td\r\n style=\"min-width: 150px; padding: 0px\"\r\n v-for=\"(h, i) in computedHeaders\"\r\n :key=\"i\"\r\n >\r\n <v-form-component\r\n :ref=\"h.value\"\r\n :name=\"h.value\"\r\n :schema=\"getSchema({ name: h.value })\"\r\n :k=\"h.value\"\r\n :model=\"searchModel\"\r\n :hasParent=\"hasParent\"\r\n ></v-form-component>\r\n </td>\r\n </tr>\r\n </template>\r\n <!-- v-if=\"\r\n props.props.headers.some((h) => {\r\n return h.span;\r\n })\r\n \" -->\r\n <template v-slot:top>\r\n <!-- Custom sort control for mobile -->\r\n <div\r\n v-if=\"$root.isMobile\"\r\n class=\"custom-sort-control mb-n10 mt-n6 pl-4 pt-4\"\r\n >\r\n <!-- Your custom sort control for mobile -->\r\n <!-- <v-menu\r\n :close-on-content-click=\"false\"\r\n v-if=\"$root.isMobile\"\r\n v-model=\"menuFilterModel\"\r\n >\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn class=\"ma-2\" icon small v-bind=\"attrs\" v-on=\"on\">\r\n <v-icon>mdi-table-filter</v-icon>\r\n </v-btn>\r\n </template> -->\r\n <!-- <v-list>\r\n <v-list-item> -->\r\n <v-select\r\n v-if=\"\r\n filteredTabItems.length &&\r\n filteredTabItems.length > 1 &&\r\n !noTabs &&\r\n $root.isMobile\r\n \"\r\n clearable\r\n :items=\"filteredTabItems\"\r\n item-text=\"caption\"\r\n item-value=\"value\"\r\n @change=\"applyFilter\"\r\n class=\"mb-1 mr-1 mt-2\"\r\n :outlined=\"false\"\r\n filled\r\n :label=\"filterComboLabel || 'Filter'\"\r\n ></v-select>\r\n <!-- </v-list-item>\r\n </v-list> -->\r\n <!-- </v-menu> -->\r\n </div>\r\n </template>\r\n\r\n <template\r\n slot=\"header\"\r\n slot-scope=\"props\"\r\n v-if=\"\r\n props.props.headers.some(h => {\r\n return h['v-bind'] && h['v-bind'].span && !h['v-bind'].noSpan;\r\n })\r\n \"\r\n >\r\n <!-- {{ props.props.headers }} -->\r\n <td\r\n v-for=\"(h, i) in (props.props.headers || []).filter(r => {\r\n return !r['v-bind'] && !r.value == 'actions';\r\n })\"\r\n :key=\"i\"\r\n >\r\n {{ h.text }}\r\n </td>\r\n\r\n <td\r\n :colspan=\"h['v-bind'] ? h['v-bind'].span.headers.length : 1\"\r\n v-for=\"(h, i) in (props.props.headers || []).filter(r => {\r\n return r['v-bind'] && r['v-bind'].span;\r\n })\"\r\n :key=\"i\"\r\n >\r\n <v-row v-if=\"h['v-bind']\" class=\"ma-2 pr-12\">\r\n <v-col v-for=\"(s, j) in h['v-bind'].span.headers\" :key=\"j\">\r\n <span :class=\"'ml-n' + j * 6\">{{ s }}</span>\r\n </v-col>\r\n </v-row>\r\n </td>\r\n </template>\r\n\r\n <template slot=\"group.header\" slot-scope=\"props\">\r\n <td :colspan=\"props.headers.length\">\r\n <v-btn\r\n class=\"ma-2\"\r\n @click=\"props.toggle\"\r\n small\r\n text\r\n :data-open=\"props.isOpen\"\r\n ref=\"group\"\r\n >\r\n <v-icon :ref=\"'openGroup_' + props.group\" v-if=\"props.isOpen\">\r\n mdi-chevron-up\r\n </v-icon>\r\n <v-icon :ref=\"'closeGroup_' + props.group\" v-else>\r\n mdi-chevron-down\r\n </v-icon>\r\n <h4>\r\n {{ capitalize(getGroupName(props)) }}\r\n </h4>\r\n </v-btn>\r\n <v-tooltip bottom>\r\n <template v-slot:activator=\"{ on, attrs }\">\r\n <v-btn\r\n ref=\"removeGroup\"\r\n v-bind=\"attrs\"\r\n v-on=\"on\"\r\n small\r\n text\r\n @click=\"props.remove\"\r\n >\r\n <v-icon>mdi-close</v-icon>\r\n </v-btn>\r\n </template>\r\n Ungroup\r\n </v-tooltip>\r\n </td>\r\n </template>\r\n\r\n <template slot=\"item.data-table-select\" slot-scope=\"item\">\r\n <td\r\n v-if=\"\r\n (selectDelete && !noDelete) ||\r\n select ||\r\n singleSelect ||\r\n selectSwitch\r\n \"\r\n style=\"max-width: 25px; overflow: hidden\"\r\n >\r\n <v-checkbox\r\n class=\"mt-0 mb-n4\"\r\n v-if=\"\r\n (!droppedObjects || !sortedDraggedObjects(item).length) &&\r\n ((item.item._id && !disabledProperty) ||\r\n (disabledValue &&\r\n item.item[disabledProperty] !== disabledValue) ||\r\n (!disabledValue && !item.item[disabledProperty]))\r\n \"\r\n v-model=\"item.isSelected\"\r\n @change=\"\r\n log(item);\r\n item.select($event);\r\n \"\r\n ></v-checkbox>\r\n </td>\r\n <td v-if=\"isDraggable\">\r\n <v-tooltip right>\r\n <template v-slot:activator=\"{ on }\">\r\n <v-icon v-on=\"on\" class=\"drag-handle\">mdi-drag</v-icon>\r\n </template>\r\n <span>Drag to reorder</span>\r\n </v-tooltip>\r\n </td>\r\n <td v-if=\"rowIcons\">\r\n <span v-for=\"(i, j) in rowIcons(item)\" :key=\"j\">\r\n <v-icon :color=\"i.color\">{{ i.icon }}</v-icon>\r\n {{ i.title }}\r\n </span>\r\n </td>\r\n </template>\r\n\r\n <template\r\n v-for=\"(field, i) in capitalizable\"\r\n :slot=\"[`item.` + field]\"\r\n slot-scope=\"props\"\r\n >\r\n <div\r\n :key=\"i\"\r\n v-if=\"\r\n schema.properties[field] && schema.properties[field].template\r\n \"\r\n v-html=\"getTemplate(props.item, { name: field })\"\r\n ></div>\r\n\r\n <div\r\n :key=\"field\"\r\n v-else-if=\"props.item[field] && schema.properties[field]\"\r\n >\r\n {{\r\n props.item[field] && schema.properties[field][\"v-bind\"]\r\n ? schema.properties[field][\"v-bind\"] &&\r\n schema.properties[field][\"v-bind\"].returnObject\r\n ? schema.properties[field][\"v-bind\"]\r\n ? props.item[field][\r\n schema.properties[field][\"v-bind\"].itemText\r\n ]\r\n : capitalize(props.item[field].toString())\r\n : \"\"\r\n : \"\"\r\n }}\r\n </div>\r\n </template>\r\n\r\n <!-- <template\r\n v-for=\"(slot, i) in coloredFields\"\r\n v-slot:[`item.${slot}`]=\"{ item }\"\r\n >\r\n <v-chip\r\n v-if=\"item[slot]\"\r\n :key=\"i\"\r\n :color=\"\r\n getItemColor\r\n ? getItemColor(item[slot], slot, item, tableName)\r\n : item['color']\r\n ? item['color']\r\n : ''\r\n \"\r\n dark\r\n outlined\r\n >\r\n <b> {{ getChipValue(item, slot) }}</b>\r\n </v-chip>\r\n </template> -->\r\n\r\n <template\r\n v-for=\"(slot, i) in specialFields\"\r\n v-slot:[`item.${slot.model}`]=\"{ item }\"\r\n >\r\n <v-text-dialog\r\n v-if=\"item[slot.model] && dialogFields\"\r\n :vModel=\"item[slot.model]\"\r\n :width=\"slot.width\"\r\n :icon=\"getTextDialogIcon(slot, item)\"\r\n :key=\"i\"\r\n ></v-text-dialog>\r\n\r\n <!-- <v-alert\r\n v-if=\"item[slot.model] && !dialogFields\"\r\n :key=\"i\"\r\n :color=\"\r\n getItemColor\r\n ? getItemColor(item[slot.model], slot.model, item, tableName)\r\n : item['color']\r\n ? item['color']\r\n : ''\r\n \"\r\n > -->\r\n\r\n <v-alert\r\n dense\r\n class=\"ma-2\"\r\n text\r\n :color=\"\r\n $vuetify.theme.dark\r\n ? invertColor(\r\n getItemColor(\r\n item[slot.model],\r\n slot.model,\r\n item,\r\n tableName\r\n )\r\n )\r\n : getItemColor(item[slot.model], slot.model, item, tableName)\r\n \"\r\n v-if=\"item[slot.model] && !dialogFields\"\r\n :key=\"i\"\r\n >\r\n <span style=\"white-space: nowrap\">\r\n {{ getChipValue(item, slot.model) }}\r\n </span>\r\n </v-alert>\r\n\r\n <!-- </v-alert> -->\r\n </template>\r\n\r\n <template\r\n v-for=\"(field, i) in editable\"\r\n :slot=\"[`item.` + field.name]\"\r\n slot-scope=\"props\"\r\n >\r\n <v-edit-dialog\r\n v-model=\"dialogModel\"\r\n v-if=\"\r\n !editRow &&\r\n ((props.item._id != newRowId &&\r\n !readonly &&\r\n !field.directEdit &&\r\n editedItem &&\r\n props.item._id &&\r\n props.item._id != newRowId) ||\r\n (!editedItem &&\r\n !readonly &&\r\n !field.nonUpdatable &&\r\n !field.directEdit &&\r\n props.item._id != newRowId))\r\n \"\r\n :key=\"field.name + i\"\r\n :ref=\"field.name + props.item._id\"\r\n @cancel=\"cancel\"\r\n save-text=\"apply\"\r\n @open=\"open(field, props)\"\r\n @close=\"close\"\r\n @save=\"emitDialogSave(props.item, field.name)\"\r\n >\r\n <div\r\n v-if=\"\r\n schema.properties && getColor(props, field) == 'underscore'\r\n \"\r\n :class=\"\r\n $vuetify.breakpoint.smAndDown ? '' : getColor(props, field)\r\n \"\r\n v-html=\"getField(props, field)\"\r\n ></div>\r\n\r\n <v-chip\r\n v-else\r\n :color=\"getColor(props, field).replace(' editable', '')\"\r\n >\r\n <div class=\"chip-text\">\r\n {{ getField(props, field) || \"\" }}\r\n </div>\r\n </v-chip>\r\n <!-- {{ getSchema(field, props.item) }} -->\r\n\r\n <template v-slot:input>\r\n <v-form-component\r\n :ref=\"field.name\"\r\n :name=\"field.name\"\r\n :model=\"props.item\"\r\n :parentModel=\"props.item\"\r\n :parModel=\"formModel\"\r\n :schema=\"getSchema(field, props.item)\"\r\n :parentSchema=\"parObject || {}\"\r\n :parentSchemaObject=\"getParentSchema()\"\r\n :inLine=\"true\"\r\n :k=\"field.name\"\r\n :defaultDataFn=\"defaultDataFn\"\r\n :placeholder=\"schema.properties[field.name].title\"\r\n :click=\"selectCtl\"\r\n :onValueChange=\"onValueChange\"\r\n :autofocus=\"true\"\r\n :dialogOpen=\"true\"\r\n :hasParent=\"hasParent\"\r\n :noCache=\"noCache\"\r\n >\r\n </v-form-component>\r\n\r\n <v-toolbar v-if=\"showComponent(field.name, props.item)\" flat>\r\n <v-spacer></v-spacer>\r\n <v-btn\r\n v-if=\"!schema.properties[field.name].noEditDialogButtons\"\r\n @click=\"emitDialogSave(props.item, field.name)\"\r\n small\r\n text\r\n color=\"info\"\r\n >\r\n {{ getSaveTitle(field.name) }}\r\n </v-btn>\r\n <v-btn\r\n ref=\"cancelBtn\"\r\n @click=\"closeDialog(field.name + props.item._id)\"\r\n small\r\n text\r\n >\r\n Close\r\n </v-btn>\r\n </v-toolbar>\r\n </template>\r\n </v-edit-dialog>\r\n\r\n <div\r\n :key=\"field.name + i\"\r\n v-if=\"\r\n (editRow && !field.hideTitle) ||\r\n (readonly &&\r\n schema.properties &&\r\n getColor(props, field) == 'underscore')\r\n \"\r\n :class=\"\r\n $vuetify.breakpoint.smAndDown\r\n ? ''\r\n : editRow\r\n ? ''\r\n : getColor(props, field)\r\n \"\r\n v-html=\"getField(props, field)\"\r\n ></div>\r\n <div\r\n :class=\"$vuetify.breakpoint.mdAndUp ? 'mb-2 ml-n6' : 'mb-3 ml-2'\"\r\n :style=\"\r\n $vuetify.breakpoint.mdAndUp && getSchema(field)[field.name]\r\n ? 'width:' + getSchema(field)[field.name].width + 'px'\r\n : ''\r\n \"\r\n :key=\"i\"\r\n >\r\n <div\r\n style=\"width: 100px\"\r\n v-if=\"\r\n disabledProperty &&\r\n props.item[disabledProperty] == disabledValue &&\r\n field.name == disabledProperty\r\n \"\r\n >\r\n {{ capitalize(props.item[disabledProperty]) }}\r\n </div>\r\n\r\n <div\r\n class=\"mb-n7 mt-n2 pa-0\"\r\n v-if=\"\r\n schema.properties[field.name] &&\r\n schema.properties[field.name].template &&\r\n !editable.includes(field)\r\n \"\r\n >\r\n {{ getTemplate(props.item, field) }}\r\n </div>\r\n <!-- pa-2 mb-6 full-width -->\r\n <div :class=\"$vuetify.breakpoint.mdAndUp ? '' : ''\">\r\n <v-form-component\r\n v-if=\"\r\n schema.properties[field.name] &&\r\n ((schema.properties[field.name] &&\r\n !schema.properties[field.name].template &&\r\n props.item._id != newRowId &&\r\n !schema.properties[field.name].NoFirstRowEditable &&\r\n directEdit &&\r\n field.directEdit != false &&\r\n (props.item._id || tableInsertable) &&\r\n ((!disabledProperty && schema.properties[field.name]) ||\r\n props.item[disabledProperty] != disabledValue)) ||\r\n (props.item._id == newRowId &&\r\n !schema.properties[field.name].NoFirstRowEditable &&\r\n tableInsertable &&\r\n !field.directEdit) ||\r\n (!directEdit && field.directEdit == true))\r\n \"\r\n :ref=\"field.name\"\r\n :mainTab=\"formMainTab\"\r\n :name=\"field.name\"\r\n :model=\"props.item\"\r\n :parentModel=\"props.item\"\r\n :parModel=\"formModel\"\r\n :schema=\"getSchema(field, props.item)\"\r\n :parentSchema=\"parObject || {}\"\r\n :parentSchemaObject=\"getParentSchema()\"\r\n :inLine=\"true\"\r\n :k=\"field.name\"\r\n :inserted=\"tableInsertable\"\r\n class=\"mb-n8 mt-n2 pa-0 ml-6\"\r\n :compclass=\"'mb-n4 mt-n2 pa-0'\"\r\n :placeholder=\"schema.properties[field.name].title\"\r\n :click=\"selectCtl\"\r\n :defaultDataFn=\"defaultDataFn\"\r\n :onValueChange=\"onValueChange\"\r\n :hasParent=\"hasParent\"\r\n ></v-form-component>\r\n </div>\r\n </div>\r\n </template>\r\n\r\n <template\r\n v-if=\"link && link.field\"\r\n :slot=\"[`item.` + link.field]\"\r\n slot-scope=\"props\"\r\n >\r\n <router-link\r\n :to=\"{\r\n name: link.name + '_' + props.item[link.field],\r\n params: { id: props.item[link.field] }\r\n }\"\r\n >\r\n <div\r\n @click=\"\r\n linkClick ? linkClick(props.item) : myLinkClick(props.item)\r\n \"\r\n >\r\n {{ props.item[link.field] }}\r\n </div>\r\n </router-link>\r\n </template>\r\n\r\n <template\r\n v-if=\"tableEditRow || actionCommand\"\r\n slot=\"item.actions\"\r\n slot-scope=\"props\"\r\n >\r\n <!-- <v-row> -->\r\n\r\n <v-toolbar style=\"background-color: transparent\" flat>\r\n <v-spacer></v-spacer>\r\n <v-btn\r\n v-if=\"tableEditRow\"\r\n @click=\"editCurrentRecord(props.item)\"\r\n icon\r\n >\r\n <v-icon>mdi-pencil</v-icon>\r\n </v-btn>\r\n\r\n <component\r\n v-for=\"(c, i) in editControls\"\r\n :key=\"i\"\r\n small\r\n class=\"ml-0\"\r\n :is=\"c[`comp`]\"\r\n :ref=\"c[`id`]\"\r\n :id=\"c[`id`]\"\r\n :formModel=\"props.item\"\r\n v-bind=\"c[`v-bind`]\"\r\n />\r\n <v-tooltip v-for=\"(c, i) in actionCommand\" :key=\"i\" bottom>\r\n <template v-slot:activator=\"{ on }\">\r\n <v-badge\r\n bordered\r\n :content=\"props.item[c.badge]\"\r\n :value=\"props.item[c.badge] ? true : false\"\r\n class=\"custom-badge-position\"\r\n color=\"error\"\r\n overlap\r\n >\r\n <v-btn\r\n @click=\"\r\n c.action\r\n ? c.action(props.item)\r\n : customAction(props.item, c.actionName)\r\n \"\r\n :color=\"c.color\"\r\n v-on=\"on\"\r\n icon\r\n >\r\n <v-icon v-if=\"c.icon\">{{ c.icon }}</v-icon>\r\n <div v-if=\"c.commandText\">\r\n {{ c.commandText(props.item) }}\r\n </div>\r\n </v-btn>\r\n </v-badge>\r\n </template>\r\n {{ c.text }}\r\n <!-- -->\r\n </v-tooltip>\r\n </v-toolbar>\r\n <!-- </v-row> -->\r\n <!-- <v-row v-else> </v-row> -->\r\n </template>\r\n\r\n <template\r\n slot=\"item.data-table-expand\"\r\n slot-scope=\"{ item, expand, isExpanded }\"\r\n >\r\n <!-- {{ expand }}{{ isExpanded }} -->\r\n <v-tooltip bottom>\r\n <template v-slot:activator=\"{ on }\">\r\n <v-icon\r\n ref=\"expandIcon\"\r\n v-on=\"on\"\r\n v-if=\"item._id\"\r\n @click=\"\r\n expand(!isExpanded);\r\n doExpand(item, isExpanded);\r\n \"\r\n >\r\n {{\r\n isExpanded\r\n ? \"mdi-arrow-up-drop-circle-outline\"\r\n : \"mdi-arrow-down-drop-circle-outline\"\r\n }}\r\n </v-icon>\r\n </template>\r\n <span>More Detail</span>\r\n </v-tooltip>\r\n </template>\r\n\r\n <template v-slot:expanded-item=\"{ headers, item }\">\r\n <td\r\n class=\"ma-0 pa-0\"\r\n style=\"height: auto; overflow: hidden\"\r\n :colspan=\"headers.length\"\r\n >\r\n <v-container>\r\n <v-row\r\n :key=\"dropKey\"\r\n class=\"drop-zone\"\r\n align=\"start\"\r\n justify=\"start\"\r\n >\r\n <v-col\r\n v-for=\"(d, i) in sortedDraggedObjects(item)\"\r\n :key=\"d._id\"\r\n :draggable=\"true\"\r\n @dragover.prevent=\"onDragOver($event, i)\"\r\n @dragstart=\"onDragStart(d, i)\"\r\n @drop=\"onDropItem(item, i)\"\r\n >\r\n <v-card\r\n v-html=\"\r\n droppedObjectTemplate ? droppedObjectTemplate(d, i) : ''\r\n \"\r\n ></v-card>\r\n </v-col>\r\n </v-row>\r\n </v-container>\r\n\r\n <!-- <v-card class=\"pa-3\">\r\n <v-card-text>\r\n <div\r\n class=\"drop-zone\"\r\n @dragover.prevent=\"onDragOver\"\r\n @drop=\"onDrop(item)\"\r\n >\r\n Drop Here {{ dropName }}\r\n </div>\r\n </v-card-text>\r\n </v-card> -->\r\n </td>\r\n </template>\r\n\r\n <template slot=\"footer\">\r\n <hr v-if=\"totalFields\" />\r\n <table\r\n v-if=\"totalFields\"\r\n class=\"v-data-table mt-2\"\r\n style=\"width: 100%\"\r\n >\r\n <tr>\r\n <td\r\n align=\"right\"\r\n v-for=\"(header, j) in filteredHeaders\"\r\n :key=\"j\"\r\n >\r\n <span v-for=\"(f, i) in tableTotal\" :key=\"i\">\r\n <strong>\r\n <span\r\n class=\"mr-6\"\r\n v-if=\"tableTotal[i]['field'] == header.value\"\r\n >\r\n {{ parseFloat(tableTotal[i][\"total\"]).toFixed(2) }}\r\n </span>\r\n </strong>\r\n </span>\r\n <!-- You can insert any content or calculation here -->\r\n </td>\r\n </tr>\r\n </table>\r\n\r\n <div class=\"fixed-footer\">\r\n <tr>\r\n <td v-if=\"editedItem && !tableInsertable\"></td>\r\n\r\n <td v-if=\"editedItem && !tableInsertable\">\r\n <v-table-edited-item\r\n :editedItem=\"editedItem\"\r\n :isNew=\"isNew\"\r\n :onValueChange=\"onValueChange\"\r\n :save=\"save\"\r\n ref=\"edit_combo\"\r\n ></v-table-edited-item>\r\n </td>\r\n </tr>\r\n <!-- <table style=\"width:100%\" v-if=\"tableInsertable\">\r\n <tr> -->\r\n <hr />\r\n <!-- <v-toolbar\r\n v-if=\"!hideFooter\"\r\n flat\r\n :color=\"$vuetify.breakpoint.smAndDown ? 'grey lighten-3' : ''\"\r\n\r\n > -->\r\n </div>\r\n\r\n <!-- </v-toolbar> -->\r\n </template>\r\n <!-- <template\r\n v-if=\"breakpoint && $vuetify.breakpoint.smAndDown && itemTemplate\"\r\n v-slot:item=\"{ item, headers }\"\r\n >\r\n <v-row class=\"ma-2\" v-for=\"h in headers\" :key=\"h.value\">\r\n <v-col\r\n v-if=\"\r\n (selectDelete && !noDelete && item._id != newRowId) ||\r\n select ||\r\n singleSelect ||\r\n selectSwitch\r\n \"\r\n style=\"max-width: 25px; overflow: hidden\"\r\n >\r\n\r\n <v-checkbox\r\n class=\"mt-0 mb-n4\"\r\n v-if=\"\r\n (item._id && !disabledProperty) ||\r\n (disabledValue &&\r\n item[disabledProperty] !== disabledValue) ||\r\n (!disabledValue && !item[disabledProperty])\r\n \"\r\n v-model=\"item.isSelected\"\r\n @change=\"\r\n log(item);\r\n item.select($event);\r\n \"\r\n ></v-checkbox\r\n ></v-col>\r\n <v-col>{{ h.text }}</v-col>\r\n <v-col>{{ item[h.value] }}</v-col>\r\n </v-row>\r\n\r\n </template> -->\r\n\r\n <template\r\n v-if=\"$root.isMobile && mobileViewTemplate && breakpoint\"\r\n v-slot:item=\"{ item, index }\"\r\n >\r\n <v-mobile-view-table-template\r\n :tableName=\"tableName\"\r\n :item=\"item\"\r\n :index=\"index\"\r\n :getItemColor=\"getItemColor ? getItemColor : null\"\r\n :editCurrentRecord=\"editCurrentRecord\"\r\n :linkClick=\"linkClick\"\r\n :getTemplate=\"getTemplate\"\r\n :parentObject=\"parentObject\"\r\n ></v-mobile-view-table-template>\r\n </template>\r\n\r\n <!-- <template v-slot:no-data>\r\n <v-card>\r\n No Data\r\n <v-icon large> mdi-table-off </v-icon>\r\n </v-card>\r\n </template> -->\r\n </v-data-table>\r\n </div>\r\n\r\n <!-- pageCount: {{ pageCount }} currentPage:{{ currentPage }} -->\r\n <!-- <v-pagination>\r\n v-model=\"currentPage\" :length=\"pageCount\"\r\n </v-pagination> -->\r\n <d-list\r\n width=\"100%\"\r\n v-if=\"dList\"\r\n :key=\"listKey\"\r\n :data_object=\"data_object\"\r\n :editData=\"editData\"\r\n :editRec=\"editRec\"\r\n ></d-list>\r\n\r\n <excel-table\r\n v-if=\"dExcel\"\r\n :key=\"excelKey\"\r\n :table=\"table\"\r\n :headers=\"headers\"\r\n :data_object=\"data_object\"\r\n :columnWidth=\"excelColumnWidth\"\r\n ref=\"excel_table\"\r\n v-model=\"selected\"\r\n class=\"mt-n4\"\r\n ></excel-table>\r\n <!-- <v-btn @click=\"assignId()\">assign id </v-btn> -->\r\n <v-snackbar\r\n v-if=\"successMessage\"\r\n v-model=\"successMessage\"\r\n :timeout=\"5000\"\r\n color=\"success\"\r\n >\r\n {{ successMessage }}\r\n\r\n <template v-slot:action=\"{ attrs }\">\r\n <v-btn text v-bind=\"attrs\" @click=\"successMessage = false\">\r\n Close\r\n </v-btn>\r\n </template>\r\n </v-snackbar>\r\n <!-- <v-alert\r\n class=\"ma-4\"\r\n dismissible\r\n timeout=\"3000\"\r\n v-if=\"successMessage != '' && !noAlert\"\r\n type=\"success\"\r\n >\r\n {{ successMessage }}\r\n </v-alert> -->\r\n <v-alert\r\n class=\"ma-4\"\r\n timeout=\"3000\"\r\n dismissible\r\n v-if=\"errorMessage != '' && errorMessage\"\r\n type=\"error\"\r\n >\r\n {{ errorMessage }}\r\n </v-alert>\r\n <v-app-bar v-if=\"$root.isMobile\" class=\"bottom-bar\" bottom :app=\"true\">\r\n <v-toolbar flat>\r\n <v-pager\r\n v-if=\"\r\n tableReady &&\r\n !hideFooter &&\r\n table.length > 10 &&\r\n !editDisablePagination &&\r\n !disablePagination\r\n \"\r\n :pageStart=\"pageStart\"\r\n :pageStop=\"pageStop\"\r\n :itemsLength=\"itemsCount\"\r\n :navigate=\"navigate\"\r\n :page=\"page\"\r\n ></v-pager>\r\n </v-toolbar>\r\n </v-app-bar>\r\n </div>\r\n <v-dialog class=\"assistant\" v-model=\"assistantModel\" width=\"600\">\r\n <v-ai-chat\r\n v-if=\"assistantVBind.customInstructions\"\r\n v-bind=\"assistantVBind\"\r\n ></v-ai-chat>\r\n </v-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n// import vuetify from \"vuetify\";\r\nimport \"vuetify/dist/vuetify.min.css\";\r\n\r\nimport axios from \"axios\";\r\nimport Sortable from \"sortablejs\";\r\nimport draggable from \"vuedraggable\";\r\nimport arrive from \"arrive\";\r\nimport { mergeProps } from \"vue\";\r\nimport * as fun from \"../plugins/common\";\r\n\r\nexport default {\r\n name: \"DTable\",\r\n props: {\r\n data_object: Object,\r\n vModel: [Object, Array],\r\n editable: {\r\n type: Array,\r\n default: function() {\r\n return [];\r\n }\r\n },\r\n\r\n table_title: String,\r\n tableName: String,\r\n addButtonCaption: String,\r\n addButtonKey: String,\r\n newItemTitle: String,\r\n new_data: Object,\r\n rowClick: Function,\r\n linkClick: Function,\r\n selectSwitch: Boolean,\r\n editData: [Array, Object],\r\n getTotal: Function,\r\n rowIcons: Function,\r\n parentKey: String,\r\n allParentKeys: Array,\r\n toolBarControls: Array,\r\n editControls: Array,\r\n toolBarExpandedControls: Array,\r\n itemsPerPage: {\r\n type: [Number, String]\r\n },\r\n itemSelected: Function,\r\n toolbarRight: Boolean,\r\n hasSearch: Boolean,\r\n remoteSearch: Boolean,\r\n remoteSearchFields: Array,\r\n numericFields: Array,\r\n searchLen: Number,\r\n beforeSubmit: Function,\r\n afterSubmit: Function,\r\n beforeSave: Function,\r\n afterSave: Function,\r\n onValueChange: Function,\r\n doSubmit: Boolean,\r\n dList: Boolean,\r\n dListData: Array,\r\n dExcel: Boolean,\r\n fixedHeader: Boolean,\r\n hideTitle: Boolean,\r\n tableHeight: [String, Number],\r\n hideFooter: Boolean,\r\n hideHeader: Boolean,\r\n allExpanded: Boolean,\r\n disablePagination: Boolean,\r\n noServerPagination: Boolean,\r\n mobileBreakpoint: String,\r\n alwaysUpdate: Boolean,\r\n allEditable: Boolean,\r\n directEdit: Boolean,\r\n getTable: Function,\r\n ajustTableSchema: Function,\r\n editedItem: Object,\r\n onRowUpdate: Function,\r\n beforeAddData: Function,\r\n onLoad: Function,\r\n onMount: Function,\r\n onDataChange: Function,\r\n getFreshData: Boolean,\r\n excelColumnWidth: String,\r\n formModel: [Object, Array],\r\n parentModel: Object,\r\n fields_excluded: Array,\r\n fields_included: Array,\r\n expandedIndexes: Array,\r\n editRow: Boolean,\r\n editRecord: Function,\r\n initialData: Array,\r\n tblKey: String,\r\n groupName: Function,\r\n expandable: Boolean,\r\n additionalData: Array,\r\n k: String,\r\n expansionColumns: Number,\r\n insertable: Boolean,\r\n noDelete: Boolean,\r\n noSave: Boolean,\r\n disabledProperty: String,\r\n disabledValue: String,\r\n parObject: Object,\r\n parTable: Array,\r\n parentObject: [Object, Array],\r\n defaultModel: Object,\r\n isDraggable: Boolean,\r\n disableSort: Boolean,\r\n singleSelect: Boolean,\r\n noToolBar: Boolean,\r\n skipRecalculation: Boolean,\r\n saveButtonCaption: String,\r\n noAdditionalMenu: Boolean,\r\n assistant_instructions: String,\r\n link: {\r\n type: Object,\r\n default: function() {\r\n return {};\r\n }\r\n },\r\n noInitEdit: Boolean,\r\n isGoToButton: Boolean,\r\n goToButtonText: String,\r\n goToButtonAction: Function,\r\n onDataReceived: Function,\r\n getRowClass: {\r\n Function,\r\n String\r\n },\r\n coloredFields: Array,\r\n dialogFields: Array,\r\n getItemColor: [Function, String],\r\n colorProperty: String,\r\n filterTabs: Array,\r\n filterTabsFn: [String, Function, Object],\r\n noTabs: Boolean,\r\n noExcel: Boolean,\r\n filterCondition: String,\r\n // filterFunction: Function,\r\n searchableColumns: Array,\r\n focusOnInsert: String,\r\n showGroupBy: Boolean,\r\n filterTable: Function,\r\n filter: String,\r\n cssClass: String,\r\n selectedId: String,\r\n mData: Array,\r\n serverPagination: Boolean,\r\n sortBy: [String, Array],\r\n customSort: Function,\r\n customSortItems: Array,\r\n sortDesc: Boolean,\r\n onRowDragDrop: Function,\r\n dropItem: Function,\r\n noAlert: Boolean,\r\n customFilter: Function,\r\n refreshAfterSubmit: Boolean,\r\n noCache: Boolean,\r\n showFilterCombo: Boolean,\r\n filterComboLabel: String,\r\n hideAllTabFilter: Boolean,\r\n updateNestedArray: Boolean,\r\n hasAdvancedSearch: Boolean,\r\n noRefreshAfterUpload: Boolean,\r\n noRefreshButton: Boolean,\r\n noRefreshButtonTitle: Boolean,\r\n limitTabsToData: Boolean,\r\n limitObject: String,\r\n actionCommand: Array,\r\n editedItemTitle: Array,\r\n idField: String,\r\n columnTool: Boolean,\r\n refreshParent: Function,\r\n hideTopBar: Boolean,\r\n draggedIndex: null,\r\n dropItemHandling: Function,\r\n droppedObjectsSortProperty: String,\r\n defaultTabCaption: String,\r\n defaultTabColor: String,\r\n mobileItemTemplate: Function,\r\n hideEditedTabs: Boolean,\r\n hideFilterTabs: Boolean,\r\n copyRecords: Boolean,\r\n disableChildEdit: Boolean,\r\n defaultDataFn: String,\r\n groupByItems: Array,\r\n noGroups: Boolean,\r\n vBind: Object,\r\n readonly: Boolean,\r\n NoFirstRowEditable: Boolean,\r\n minSearchLength: Number,\r\n totalFields: Array,\r\n validate: String,\r\n noHorizontalScroll: Boolean,\r\n hideScroll: Boolean,\r\n noAddOnAllTab: Boolean,\r\n autoSave: Boolean,\r\n hideAllInCombo: Boolean,\r\n refreshHeadersOnFormChange: Boolean,\r\n parentProperty: String,\r\n noTabSort: Boolean,\r\n defaultDataObject: Object,\r\n mobileViewTemplate: Boolean,\r\n addMenuButton: Object,\r\n noFullScreen: Boolean,\r\n formMainTab: Number,\r\n deleteId: String,\r\n toolBarItemsExcluded: Array,\r\n hasParent: Boolean,\r\n getItems: Boolean,\r\n scrollOnNew: String,\r\n searchAfterCompleted: Boolean,\r\n helpText: String,\r\n helpTitle: String,\r\n useTabs: Boolean,\r\n maxRecords: Number,\r\n droppedObjects: Array,\r\n droppedObjectTemplate: Function,\r\n droppedObjectFilterProperty: String,\r\n expandedItemsTitle: String,\r\n dropName: String,\r\n addRecordWithLink: Object,\r\n qry: null,\r\n columns: Array,\r\n hasAssistant: Boolean\r\n },\r\n\r\n components: {\r\n VLoading: () => import(\"../components/Loading.vue\"),\r\n VCombo: () => import(\"./ComboBox.vue\"),\r\n VFormComponent: () => import(\"./FormComponent.vue\"),\r\n DList: () => import(\"../components/List.vue\"),\r\n DForm: () => import(\"../components/Form.vue\"),\r\n VAccordion: () => import(\"../components/Accordion.vue\"),\r\n VDateRangePicker: () => import(\"../components/DateRangePicker.vue\"),\r\n VUpload: () => import(\"../components/UploadDragDrop.vue\"),\r\n USMap: () => import(\"../components/USMap.vue\"),\r\n SelectTable: () => import(\"../components/SelectTable.vue\"),\r\n VRadioList: () => import(\"../components/RadioList.vue\"),\r\n VAddLabor: () => import(\"../components/AddLabor.vue\"),\r\n VCustomButton: () => import(\"../components/CustomButton.vue\"),\r\n VDateTime: () => import(\"./DateTime.vue\"),\r\n VFormCard: () => import(\"../components/FormCard.vue\"),\r\n VUnitCharge: () => import(\"../components/UnitCharge.vue\"),\r\n VAddToTableButton: () => import(\"../components/AddToTableButton.vue\"),\r\n VTreeInput: () => import(\"../components/TreeInput.vue\"),\r\n VEditor: () => import(\"../components/Editor.vue\"),\r\n SendLetter: () => import(\"../components/SendLetter.vue\"),\r\n VTableEditedItem: () => import(\"../components/TableEditedItem.vue\"),\r\n DataTableRowHandler: () => import(\"../components/DataTableRowHandler.vue\"),\r\n VMenuButton: () => import(\"../components/MenuButton.vue\"),\r\n ChangeRates: () => import(\"../components/ChangeRates.vue\"),\r\n VLabelButton: () => import(\"../components/LabelButton.vue\"),\r\n VFormToolBar: () => import(\"../components/FormToolBar.vue\"),\r\n VDialogTable: () => import(\"../components/DialogTable.vue\"),\r\n VCrew: () => import(\"../components/Crew.vue\"),\r\n VTextDialog: () => import(\"../components/TextDialog.vue\"),\r\n VTableSearch: () => import(\"../components/TableSearch.vue\"),\r\n VTakePhoto: () => import(\"../components/TakePhoto.vue\"),\r\n VArray: () => import(\"../components/Array.vue\"),\r\n VAiChat: () => import(\"../components/AIChat.vue\"),\r\n VMobileViewTableTemplate: () =>\r\n import(\"../components/UI/MobileViewTableTemplate.vue\"),\r\n VPager: () => import(\"../components/UI/Pager.vue\"),\r\n // VColumns: () => import(\"../components/Columns.vue\"),\r\n draggable\r\n },\r\n data() {\r\n return {\r\n lastSavedCustomQry: null,\r\n assistantVBind: {\r\n hideAssistantsList: true,\r\n hideNewChat: true,\r\n noStreaming: true,\r\n defaultMessage: \"Building Search Query\",\r\n defaultToolTip: \"Describe me your search criteria\",\r\n listHeight: 100\r\n },\r\n assistantModel: 0,\r\n myLinkClick: null,\r\n testItems: [\r\n {\r\n _id: 111,\r\n color: \"#fff\"\r\n }\r\n ],\r\n initialQry: null,\r\n\r\n assistantQry: null,\r\n tabQry: null,\r\n searchLabel: \"Search\",\r\n tableReady: false,\r\n activeTab: null,\r\n breakpoint: null,\r\n tabFilter: null,\r\n selectDelete: false,\r\n mapDialog: false,\r\n mapDialogWidth: 0,\r\n mapDialogHeight: 0,\r\n curTable: null,\r\n dialog: false,\r\n successMessage: false,\r\n errorMessage: false,\r\n headers: [],\r\n computedHeaders: [],\r\n selected: [],\r\n table: [],\r\n pagerKey: 0,\r\n tableKey: 0,\r\n originalRecords: [],\r\n schema: {},\r\n sending: false,\r\n showSelect: true,\r\n search: \"\",\r\n snack: false,\r\n snackColor: \"\",\r\n snackText: \"\",\r\n groupBy: [],\r\n totalKey: \"\",\r\n formKey: 0,\r\n expandedKey: 0,\r\n formObject: {},\r\n model: {},\r\n init: false,\r\n isNew: true,\r\n isEditedNew: false,\r\n listKey: 0,\r\n excelKey: 0,\r\n loading: false,\r\n tooltip: null,\r\n defaultItem: null,\r\n dObject: Object,\r\n options: {\r\n debug: true,\r\n disableAll: false,\r\n autoFoldObjects: true\r\n },\r\n editedItemPlaceholder: \"\",\r\n totals: null,\r\n capitalizable: [],\r\n expanded: [],\r\n // expandable: false,\r\n expand: false,\r\n transitioned: [],\r\n closeTimeouts: {},\r\n editedClass: \"mb-n6 mt-n2\",\r\n newRow: {},\r\n insertedRow: null,\r\n insertNewRow: false,\r\n newRowInserted: false,\r\n observer: null,\r\n rowAdded: false,\r\n expandedObjects: [],\r\n compKey: 0,\r\n page: 1,\r\n pageCount: 1,\r\n currentPage: 1,\r\n itemsLength: 1,\r\n pageStart: 1,\r\n pageStop: 1,\r\n editDialog: false,\r\n qryExplanation: \"\",\r\n newRowId: \"\",\r\n sortDisabled: false,\r\n allTableExpanded: false,\r\n comboFilterItems: [],\r\n currentFilter: 0,\r\n pagination: {},\r\n blankRowModel: {},\r\n filterItems: [],\r\n filterCond: \"\",\r\n propertyList: [],\r\n addTableKey: 0,\r\n dModel: {},\r\n select: false,\r\n editedId: \"\",\r\n additionalModel: null,\r\n hideControls: false,\r\n customBtnLoading: false,\r\n form: null,\r\n update: {\r\n add: [],\r\n update: [],\r\n delete: []\r\n },\r\n comboCurrentFilter: {},\r\n showAdvancedSearch: false,\r\n searchModel: {},\r\n xllink: \"\",\r\n editedTabs: [],\r\n edited: 0,\r\n currentForm: null,\r\n childEdited: false,\r\n editedTabsKey: 0,\r\n columnId: null,\r\n editTitle: \"\",\r\n mobileHeaders: [],\r\n copyMenu: false,\r\n duplicateValues: null,\r\n hasUpload: false,\r\n upload: false,\r\n uploadFields: [],\r\n uploadFieldsInitialTitle: \"Use excel file with the following fields:\",\r\n itemsPerPageEdited: 0,\r\n pager: false,\r\n serverItemsLength: -1,\r\n itemsPerPageChanged: false,\r\n editDisablePagination: false,\r\n delBtnKey: 0,\r\n toolMenu: false,\r\n filterChanged: false,\r\n toolbarKey: 0,\r\n groupByItemsReady: false,\r\n searchDone: false,\r\n toolBarKey: 0,\r\n footerKey: 0,\r\n serverPaginationDone: false,\r\n doServerPagination: false,\r\n filterComboKey: 0,\r\n rowClassFn: null,\r\n specialFields: [],\r\n disableSave: false,\r\n searchTabQuery: \"\",\r\n tabSearchDialog: false,\r\n tabKey: 0,\r\n dialogModel: true,\r\n tableInsertable: false,\r\n keepHeaders: false,\r\n initialHideHeaders: null,\r\n mobileList: \"\",\r\n menuModel: false,\r\n helpModel: false,\r\n searchMenuModel: false,\r\n searchModelKey: 0,\r\n additionalTabs: null,\r\n additionalTab: 0,\r\n editMode: false,\r\n insertMode: false,\r\n menuOpen: false,\r\n hasDefaultTab: 0,\r\n dropKey: 0,\r\n filteredTabModel: 0,\r\n searchBarKey: 0,\r\n filterModel: null,\r\n isFullScreen: false,\r\n closeMenuOnClick: false,\r\n menuItems: [],\r\n menuButtonKey: false,\r\n sortCriteria: [],\r\n currentSortBy: [], // This will hold the current sort column(s)\r\n currentSortDesc: [],\r\n wrapHeight: \"\"\r\n };\r\n },\r\n methods: {\r\n toggleFullScreen() {\r\n this.isFullScreen = !this.isFullScreen;\r\n },\r\n buildSearchQuery() {\r\n // Create an array of conditions for remoteSearchFields using regex\r\n const regexConditions = this.remoteSearchFields\r\n .filter(field => !(this.numericFields || []).includes(field)) // Exclude numericFields from regex\r\n .map(field => {\r\n return {\r\n [field]: {\r\n $regex: this.search,\r\n $options: \"i\" // Case-insensitive regex search\r\n }\r\n };\r\n });\r\n\r\n // Create an array of conditions for numericFields using exact match\r\n const numericConditions = (this.numericFields || []).map(field => {\r\n return {\r\n [field]: parseInt(this.search) // Exact match for numeric fields\r\n };\r\n });\r\n\r\n // Combine all conditions\r\n const searchConditions = [...regexConditions, ...numericConditions];\r\n\r\n // Construct the MongoDB query\r\n if (this.initialQry) {\r\n const myQry = {}; // Clone the initial query\r\n\r\n if (!this.initialQry[\"$and\"]) {\r\n myQry[\"$and\"] = [fun.clone(this.initialQry)];\r\n }\r\n if (!myQry[\"$and\"]) {\r\n myQry[\"$and\"] = [fun.clone(this.initialQry)];\r\n }\r\n myQry[\"$and\"].push({ $or: searchConditions });\r\n return myQry;\r\n }\r\n\r\n return {\r\n $or: searchConditions\r\n };\r\n },\r\n\r\n mergeProps,\r\n itemTemplate(item, headers) {\r\n if (this.mobileItemTemplate) {\r\n return this.mobileItemTemplate(item, headers);\r\n } else {\r\n var rows = \"\";\r\n headers.forEach(h => {\r\n if (item[h.value]) {\r\n rows += fun.format(\r\n \"<tr><td style='white-space:noWrap;margin-right:20px'><b>{0}: </b></td><td>{1}</td></tr>\",\r\n h.text,\r\n item[h.value] || \"\"\r\n );\r\n }\r\n });\r\n\r\n var t = fun.format(\r\n \"<table style='width:100%'>{0}</table><hr/><br/>\",\r\n rows\r\n );\r\n\r\n // return t;\r\n return false;\r\n }\r\n },\r\n customAction(item, actionName) {\r\n this.$root.$emit(actionName, {\r\n item: item,\r\n obj: this\r\n });\r\n console.log(actionName, item);\r\n },\r\n\r\n resetColumns() {\r\n var data = {\r\n object_name: \"columns\",\r\n ids: [this.columnId]\r\n };\r\n\r\n axios\r\n .post(this.serverURL + \"/delete_records\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n this.tableMount();\r\n });\r\n },\r\n saveCustomQry(q) {\r\n var that = this;\r\n\r\n var data = {\r\n metadata: {\r\n object_name: \"custom_qry\"\r\n },\r\n\r\n model: {\r\n caption: q.caption,\r\n description: q.description,\r\n qry: this.assistantQry,\r\n table_name: this.tableName,\r\n user_id: this.$root.user_id\r\n }\r\n };\r\n if (fun.compareObjects(this.lastSavedCustomQry, data.model)) {\r\n return;\r\n } else {\r\n this.lastSavedCustomQry = data.model;\r\n }\r\n\r\n this.qryExplanation = q.description;\r\n axios\r\n .post(this.serverURL + \"/add_data\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n console.log(response.data);\r\n this.successMessage = \"Custom query created\";\r\n // this.toolMenu = false;\r\n });\r\n },\r\n saveColumns() {\r\n var that = this;\r\n if (!this.columnId) {\r\n this.columnId = fun.guid();\r\n }\r\n var data = {\r\n metadata: {\r\n object_name: \"columns\"\r\n },\r\n\r\n model: {\r\n _id: this.columnId,\r\n headers: this.computedHeaders,\r\n table_name: this.tableName,\r\n user_id: this.$root.user_id\r\n }\r\n };\r\n axios\r\n .post(this.serverURL + \"/add_data\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n console.log(response.data);\r\n this.successMessage = \"Columns updated\";\r\n this.toolMenu = false;\r\n });\r\n },\r\n getColumns() {\r\n var columns = this.columns || this.additionalModel.columns;\r\n if (columns.length && columns[0].headers.length) {\r\n this.computedHeaders = columns[0].headers;\r\n this.columnId = columns[0]._id;\r\n } else {\r\n this.computedHeaders.forEach(c => {\r\n c.show = true;\r\n });\r\n this.tableKey = !this.tableKey;\r\n }\r\n\r\n // if (!this.tableName) {\r\n // return;\r\n // }\r\n // var data_object = {\r\n // object_name: \"columns\",\r\n // qry: {\r\n // table_name: this.tableName.toLowerCase(),\r\n // user_id: this.$root.user_id,\r\n // },\r\n // };\r\n // axios\r\n // .post(this.serverURL + \"/get_data\", data_object, {\r\n // withCredentials: true,\r\n // })\r\n // .then((response) => {\r\n // var data = response.data;\r\n // if (data.model.length && data.model[0].headers.length) {\r\n // this.computedHeaders = data.model[0].headers;\r\n // this.columnId = data.model[0]._id;\r\n // } else {\r\n // this.computedHeaders.forEach((c) => {\r\n // c.show = true;\r\n // });\r\n // this.tableKey = !this.tableKey;\r\n // }\r\n // });\r\n },\r\n tableMount() {\r\n var that = this;\r\n this.tableReady = false;\r\n this.childEdited = this.disableChildEdit;\r\n\r\n if (!this.itemsPerPageEdited) {\r\n this.itemsPerPageEdited = this.itemsPerPage;\r\n }\r\n this.editDisablePagination = this.disablePagination;\r\n\r\n // if (this.$vuetify.breakpoint.smAndDown) {\r\n // this.tableEditRow = this.editRow || this.insertable;\r\n // } else {\r\n this.tableEditRow = this.editRow;\r\n this.tableInsertable = this.insertable;\r\n // }\r\n // this.columnId = fun.guid();\r\n this.$root.$emit(\"tableInit\", this);\r\n this.mapDialogWidth = window.innerWidth;\r\n this.mapDialogHeight = window.innerHeight;\r\n this.curTable = this;\r\n if (this.filterTabs) {\r\n this.getFilterParams(this);\r\n }\r\n\r\n if (this.onMount) {\r\n this.onMount(this);\r\n that.init = true;\r\n }\r\n this.$root.$on(\"responseFromAssistant\", d => {\r\n console.log(d);\r\n that.assistantQry = d.json.query || d.json;\r\n console.log(that.assistantQry);\r\n that.assistantModel = 0;\r\n that.itemsCount = 0;\r\n // if (!that.additionalModel.custom_qry) {\r\n // that.additionalModel.custom_qry = [];\r\n // }\r\n // that.additionalModel.custom_qry.push(d);\r\n that.saveCustomQry(d);\r\n that.loadFromDb();\r\n });\r\n this.$root.$on(\"activeTabChanged\", () => {\r\n var curTab = this.$root.resentTabs[this.$root.activeTab];\r\n // console.log(curTab);\r\n });\r\n this.$root.$on(\"dialogClose\", function() {\r\n that.dialog = false;\r\n });\r\n this.$root.$on(\"dataChanged\", obj => {\r\n if (obj.tableTitle == that.table_title) {\r\n that.refresh();\r\n }\r\n });\r\n\r\n this.$root.$on(\"data_changed\", m => {\r\n if (m.dataChange) {\r\n m.dataChange(that);\r\n }\r\n });\r\n this.$root.$on(\"recalculateFields\", m => {\r\n if (that.tableName == m.tableName) {\r\n // that.getCalculatedFields();\r\n }\r\n });\r\n\r\n this.$root.$on(\"filterTable\", m => {\r\n if (that.tableName == m.tableName) {\r\n that.table = that.originalRecords.filter(r => {\r\n return m.func(r);\r\n });\r\n if (m.sort) {\r\n that.sortTable(m.sort);\r\n }\r\n }\r\n });\r\n this.$root.$on(\"fileUploaded\", d => {\r\n if (d.response.uploaded) {\r\n this.successMessage = \"Data has been successfully imported\";\r\n } else {\r\n this.errorMessage = d.response;\r\n }\r\n this.upload = false;\r\n if (this.noRefreshAfterUpload) {\r\n return;\r\n }\r\n // if (d.response.object_name != \"templates\") {\r\n // this.refreshTable();\r\n // }\r\n });\r\n that.showSelect = that.selectSwitch;\r\n\r\n that.getData();\r\n\r\n if (that.getTable) {\r\n that.getTable(that);\r\n }\r\n\r\n this.getEditedItem();\r\n this.setTotals();\r\n this.resetForm();\r\n if (!this.remoteSearch || (this.remoteSearch && this.maxRecords)) {\r\n that.tableReady = true;\r\n }\r\n\r\n this.$root.$emit(\"tableMounted\", this);\r\n },\r\n\r\n doSearch() {\r\n this.tableReady = true;\r\n this.tableMount();\r\n\r\n this.loadFromDb();\r\n },\r\n initEdit(item, edit) {\r\n this.dObject.schema = this.schema;\r\n // this.dObject[\"v-bind\"] = this.schema[\"v-bind\"];\r\n this.dObject.objectName = this.objectName || this.data_object.object_name;\r\n this.dObject.additionalModel = this.additionalModel;\r\n\r\n // this.dObject.model = item;\r\n this.dObject.parentModel = this.formModel;\r\n // if (this.dObject.model && !item) {\r\n // this.dObject.model._id = fun.guid();\r\n // }\r\n\r\n // if (edit) {\r\n this.getModel(item, edit);\r\n\r\n this.formKey = !this.formKey;\r\n return this.dObject.model;\r\n },\r\n refreshTable() {\r\n this.tableMount();\r\n this.edited = false;\r\n // this.currentFilter = 1;\r\n // this.currentFilter = 0;\r\n // this.updateFilter();\r\n // this.$forceUpdate();\r\n // this.doTabFilter();\r\n // this.tableKey = !this.tableKey;\r\n },\r\n doExpand(item, isExpanded) {\r\n if (this.singleSelect && !isExpanded) {\r\n this.selected = [];\r\n this.selected.push(item);\r\n }\r\n },\r\n onInsertControlCreated(itemName) {\r\n if (this.focusOnInsert && itemName == this.focusOnInsert) {\r\n // console.log(\"focus\", itemName);\r\n //\r\n }\r\n },\r\n toggleFilter(e) {\r\n e.preventDefault();\r\n console.log(e);\r\n },\r\n validateEntry(id, remove, fn) {\r\n var that = this;\r\n setTimeout(function() {\r\n that.errorMessage = \"\";\r\n var validationRules = [];\r\n var valid = true;\r\n var messages = [];\r\n if (that.validate) {\r\n var r = that.table.find(t => {\r\n return t._id == id;\r\n });\r\n\r\n validationRules = eval(that.validate);\r\n }\r\n if (validationRules) {\r\n validationRules.forEach(v => {\r\n var rule = fun.getRule(v.rule.rules, v.rule.title);\r\n if (rule) {\r\n var invalidMessage = rule[0](r[v.name]);\r\n if (invalidMessage && typeof invalidMessage == \"string\") {\r\n messages.push(invalidMessage);\r\n }\r\n }\r\n });\r\n if (messages.length) {\r\n that.errorMessage = messages.join(\"<br/>\");\r\n valid = false;\r\n if (remove) {\r\n that.table = that.table.filter(item => item._id !== id);\r\n that.originalRecords = that.originalRecords.filter(\r\n item => item._id !== id\r\n );\r\n that.newRowId = null;\r\n }\r\n }\r\n }\r\n fn(valid);\r\n }, 100);\r\n },\r\n applyRow(fromMenu) {\r\n if (fromMenu) {\r\n this.validateAndSave();\r\n return;\r\n }\r\n var table = this.table;\r\n var that = this;\r\n var valid = this.validateEntry(this.newRowId, true, valid => {\r\n if (valid) {\r\n const model = that.table.find(t => {\r\n return t._id == that.newRowId;\r\n });\r\n this.newRowId = \"\";\r\n this.getCalculatedFields();\r\n this.$root.$emit(\"rowAdded\", {\r\n tbl: this\r\n });\r\n if (this.alwaysUpdate) {\r\n this.save(model, false, true);\r\n // this.submit();\r\n }\r\n }\r\n });\r\n },\r\n hideToolBar(hide) {\r\n this.hideControls = hide;\r\n },\r\n onDragOver(event) {\r\n event.preventDefault(); // Necessary to allow a drop\r\n },\r\n onDragStart(item, index) {\r\n event.dataTransfer.setData(\"text/plain\", JSON.stringify(item));\r\n this.draggedIndex = index;\r\n event.dataTransfer.effectAllowed = \"move\";\r\n // return (event) => {\r\n // event.dataTransfer.setData('text/plain', item.name);\r\n // console.log(`Started dragging: ${item.name}`);\r\n // };\r\n // const draggableItems = Array.from(\r\n // event.currentTarget.querySelectorAll(\".draggable-item\")\r\n // );\r\n\r\n // // Find the index of the dragged element\r\n // const draggedElement = event.target.closest(\".draggable-item\");\r\n // this.draggedIndex = draggableItems.indexOf(draggedElement);\r\n },\r\n getDropTargetIndex(event) {\r\n const targetElement = event.target.closest(\".draggable\");\r\n if (!targetElement) return this.droppedObjects.length;\r\n\r\n const targetId = Number(targetElement.getAttribute(\"data-id\"));\r\n return this.droppedObjects.findIndex(item => item.id === targetId);\r\n },\r\n\r\n onDropItem(cont, index) {\r\n event.stopPropagation(); // Prevent event from bubbling up\r\n event.preventDefault(); // Ensure default behavior is blocked\r\n let droppedItem = JSON.parse(event.dataTransfer.getData(\"text/plain\"));\r\n this.dropItemHandling(cont, droppedItem, index, this);\r\n },\r\n onDrop(item) {\r\n // Get all draggable items within the container\r\n const draggableItems = Array.from(\r\n event.currentTarget.querySelectorAll(\".draggable-item\")\r\n );\r\n\r\n let itemIndex = -1; // Index where the item should be dropped\r\n const draggableRecordsId = []; // Array to track item IDs\r\n\r\n // Find the currently hovered item and its ID\r\n const curItem = event.currentTarget.querySelector(\"[data-id]\");\r\n const curId = curItem ? curItem.getAttribute(\"data-id\") : null;\r\n\r\n // Iterate through all draggable items to build IDs and find the target index\r\n draggableItems.forEach((d, i) => {\r\n const job = d.querySelector(\"[data-id]\");\r\n const id = job.getAttribute(\"data-id\");\r\n draggableRecordsId.push(id);\r\n\r\n if (id === curId) {\r\n itemIndex = i; // Set the target index\r\n }\r\n });\r\n\r\n // If the dragged item exists in the records, update its position\r\n const draggedIndex = this.droppedObjects.findIndex(\r\n obj => obj.id === item.id\r\n );\r\n\r\n if (\r\n draggedIndex !== -1 &&\r\n itemIndex !== -1 &&\r\n draggedIndex !== itemIndex\r\n ) {\r\n // Remove the dragged item from its current position\r\n const [draggedItem] = this.droppedObjects.splice(draggedIndex, 1);\r\n\r\n // Insert the dragged item into the new position\r\n this.droppedObjects.splice(itemIndex, 0, draggedItem);\r\n\r\n console.log(\"Updated Order:\", this.droppedObjects);\r\n }\r\n\r\n // Call the dropItem method with updated information\r\n this.dropItem(event, \"\", item, draggableRecordsId, this.draggedIndex);\r\n },\r\n\r\n customFiltering(value, search, item) {\r\n if (this.customFilter) {\r\n return this.customFilter(value, search, item);\r\n }\r\n if (this.currentFilter) {\r\n return this.filterItems[this.currentFilter - 1];\r\n }\r\n },\r\n restoreSchema() {\r\n // if (!this.parentKey) {\r\n let objName = this.data_object.object_name;\r\n if (!objName) {\r\n return;\r\n }\r\n if (localStorage.getItem(objName)) {\r\n let origSchema = JSON.parse(localStorage.getItem(objName));\r\n\r\n Object.keys(this.schema.properties).forEach(k => {\r\n delete this.schema.properties[k];\r\n });\r\n Object.keys(origSchema).forEach(k => {\r\n this.schema.properties[k] = origSchema[k];\r\n });\r\n }\r\n\r\n // }\r\n },\r\n validateAndSave(addNew, dontUpdateParent, keepOpen) {\r\n this.restoreSchema();\r\n this.isNew = addNew;\r\n var model = this.dObject.model;\r\n if (!model._id) {\r\n model._id = fun.guid();\r\n }\r\n\r\n var exist = this.originalRecords.filter(r => {\r\n return r._id == model._id;\r\n });\r\n\r\n this.errorMessage = \"\";\r\n this.form = this.$refs[\"form\"].$refs[\"form\"].$refs[\"form\"];\r\n\r\n var formReady = this.form.validate();\r\n\r\n if (formReady) {\r\n //\r\n this.save(model, false, true);\r\n\r\n if (this.edited && !keepOpen) {\r\n this.removeTab(this.edited - 1);\r\n }\r\n if (addNew) {\r\n this.dObject.model = this.defaultModel;\r\n\r\n this.editCurrentRecord();\r\n }\r\n } else {\r\n this.errorMessage = \"Please check your entries.\";\r\n }\r\n if (!dontUpdateParent) {\r\n this.updateParentArray(model);\r\n }\r\n },\r\n updateParentArray(m) {\r\n if (this.parentModel) {\r\n if (Array.isArray(this.parentModel[this.k])) {\r\n this.parentModel[this.k].forEach(r => {\r\n if (r._id == m._id) {\r\n r = m;\r\n }\r\n });\r\n }\r\n this.disableParentEdit(false, true);\r\n }\r\n },\r\n getPos(e) {\r\n console.log(e);\r\n },\r\n invertColor(c) {\r\n return fun.invertColor(c);\r\n },\r\n getModel(item, edit) {\r\n if (\r\n !item &&\r\n this.table.filterItems &&\r\n this.table.filterItems[this.table.currentFilter]\r\n ) {\r\n item = this.table.filterItems[this.table.currentFilter].value;\r\n }\r\n\r\n var that = this;\r\n if (!edit) {\r\n try {\r\n this.form = this.$refs[\"form\"].$refs[\"form\"].$refs[\"form\"];\r\n this.form.reset();\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n\r\n if (!edit && this.defaultModel) {\r\n this.dObject.model = this.defaultModel;\r\n }\r\n if (!edit && this.groupBy && this.groupByValue) {\r\n this.dObject.model[this.groupBy] = this.groupByValue;\r\n }\r\n if (this.dObject.model && this.defaultModel) {\r\n // console.log(this.dObject.model);\r\n Object.keys(this.defaultModel).forEach(k => {\r\n if (!this.dObject.model[k]) {\r\n this.dObject.model[k] = this.defaultModel[k];\r\n }\r\n });\r\n }\r\n if (that.schema.properties) {\r\n Object.keys(that.schema.properties).forEach(k => {\r\n if (that.schema.properties[k].loadOnDemand) {\r\n var data_object = that.schema.properties[k][\"v-bind\"];\r\n if (!data_object || !data_object.object_name) {\r\n data_object = {\r\n object_name: that.data_object.schema_name,\r\n qryFn: \"var q={}; q['_id']=par._id; q\"\r\n };\r\n }\r\n if (data_object.qryFn && item) {\r\n var par = item;\r\n data_object.qry = eval(data_object.qryFn);\r\n }\r\n axios\r\n .post(this.serverURL + \"/get_data\", data_object, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n var data = response.data;\r\n if (data_object.data_property && data.model[0]) {\r\n data.model = data.model[0][data_object.data_property];\r\n }\r\n var parTable = that.table;\r\n\r\n if (\r\n that.schema.properties[k] &&\r\n that.schema.properties[k][\"x-display\"] == \"d-table\"\r\n ) {\r\n data_object.editData = data.model;\r\n\r\n this.$root.$emit(\"onDemandLoaded\", {\r\n tbl: this,\r\n data: data_object.editData\r\n });\r\n that.dObject.update = {};\r\n that.dObject.update[k] = {\r\n id_fields: that.schema.properties[k][\"v-bind\"].id_fields\r\n };\r\n data_object.parTable = parTable;\r\n this.$root.$on(\"updateChanged\", tbl => {\r\n // console.log(tbl);\r\n if (tbl.tableName == data_object.tableName) {\r\n that.dObject.update[k].update_data = tbl.update;\r\n that.table.update = that.dObject.update;\r\n }\r\n });\r\n } else {\r\n try {\r\n that.dObject.model[k] = data.model[0][k];\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n\r\n this.formKey = !this.formKey;\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.formKey = !this.formKey;\r\n },\r\n customSorting(items, index, isDesc) {\r\n var that = this;\r\n if (!items || !items.length) {\r\n return items;\r\n }\r\n\r\n var defaultSort = function() {\r\n if (!items || !items.length) {\r\n return true;\r\n }\r\n var templatedItems = fun.clone(items);\r\n templatedItems.forEach(t => {\r\n Object.keys(t).forEach(k => {\r\n t[k] =\r\n that.getTemplate(t, {\r\n name: k\r\n }) || t[k];\r\n });\r\n });\r\n if (that.sortBy && !index.length) {\r\n index = [that.sortBy];\r\n }\r\n // || that.sortDesc\r\n var desc = false;\r\n if (isDesc.length) {\r\n desc = isDesc[0];\r\n } else {\r\n desc = that.sortDesc;\r\n }\r\n\r\n fun.sortObjects(templatedItems, index, desc);\r\n templatedItems.forEach(r => {\r\n var origItem = items.find(i => {\r\n return i._id == r._id;\r\n });\r\n Object.keys(origItem).forEach(k => {\r\n r[k] = origItem[k];\r\n });\r\n });\r\n let sortedOriginalItems = templatedItems.map(item =>\r\n items.find(origItem => origItem._id === item._id)\r\n );\r\n return sortedOriginalItems;\r\n };\r\n if (this.customSort && this.customSortItems.length) {\r\n if (!index.length || this.customSortItems.includes(index[0])) {\r\n if (!index.length) {\r\n index = [this.customSortItems[0]];\r\n }\r\n } else {\r\n return defaultSort();\r\n }\r\n\r\n return this.sortDisabled\r\n ? defaultSort()\r\n : this.customSort(items, index, isDesc);\r\n } else {\r\n return defaultSort();\r\n }\r\n },\r\n getColor(props, field) {\r\n var cls = \"\";\r\n var value = props.item[field.name];\r\n\r\n if (this.coloredFields && this.coloredFields.indexOf(field.name) != -1) {\r\n var colorCls;\r\n if (this.getItemColor) {\r\n colorCls = this.getItemColor(value, field.name, true, this.tableName);\r\n } else {\r\n if (props[\"color\"]) {\r\n colorCls = props[\"color\"];\r\n //\r\n }\r\n }\r\n\r\n cls = colorCls;\r\n if (this.editable.indexOf(field.name) != -1) {\r\n return cls;\r\n } else {\r\n return cls + \" editable\";\r\n }\r\n } else {\r\n return \"underscore\";\r\n }\r\n },\r\n getInvertColor(props, field) {\r\n return fun.invertColor(this.getColor(props, field));\r\n },\r\n itemClass(item) {\r\n if (this.rowClassFn) {\r\n return this.rowClassFn(item);\r\n }\r\n if (this.getRowClass) {\r\n let color = this.getRowClass(item);\r\n\r\n return this.addDynamicClass(color);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n addDynamicClass(color) {\r\n if (!color) {\r\n return \"\";\r\n }\r\n let className = `row-color-${color.replace(\"#\", \"\")}`;\r\n if (!document.getElementById(className)) {\r\n const style = document.createElement(\"style\");\r\n const readableColor = fun.calculateLuminance(color);\r\n style.id = className;\r\n style.type = \"text/css\";\r\n style.innerHTML = `\r\n .${className} {\r\n background-color: ${color} !important;\r\n color: ${readableColor} !important; /* Apply readable text color */\r\n }\r\n .${className} .v-icon,\r\n .${className} i,\r\n .${className} .v-data-table__expanded {\r\n background-color: ${color} !important;\r\n color: ${readableColor} !important; /* Ensure icons and slot content match text color */\r\n }\r\n `;\r\n document.head.appendChild(style);\r\n }\r\n return className;\r\n },\r\n changeSort(column) {\r\n if (this.pagination.sortBy === column) {\r\n this.pagination.descending = !this.pagination.descending;\r\n } else {\r\n this.pagination.sortBy = column;\r\n this.pagination.descending = false;\r\n }\r\n },\r\n onPagination(paginationProperties) {\r\n // paginationProperties.itemsPerPage = parseInt(this.itemsPerPageEdited);\r\n\r\n if (this.itemsPerPageChanged) {\r\n this.itemsPerPageChanged = false;\r\n return;\r\n }\r\n if (this.doServerPagination) {\r\n if (\r\n // !this.serverPaginationDone &&\r\n paginationProperties.page > 1 ||\r\n (this.currentPage > 1 && paginationProperties.navigate)\r\n ) {\r\n this.currentPage = paginationProperties.page;\r\n //\r\n this.loadFromDb();\r\n // this.serverPaginationDone = false;\r\n }\r\n } else {\r\n this.pageCount = paginationProperties.pageCount;\r\n this.currentPage = paginationProperties.page;\r\n this.itemsLength = paginationProperties.itemsLength;\r\n this.pageStart = paginationProperties.pageStart + 1;\r\n this.pageStop = paginationProperties.pageStop;\r\n this.perPage = paginationProperties.itemsPerPage;\r\n }\r\n },\r\n\r\n saveOrder(event) {\r\n const movedItem = this.table.splice(event.oldIndex, 1)[0];\r\n this.table.splice(event.newIndex, 0, movedItem);\r\n if (this.onRowDragDrop) {\r\n this.onRowDragDrop(this.table, event);\r\n }\r\n },\r\n getParentVBind() {\r\n return this.schema[\"v-bind\"];\r\n },\r\n getParentSchema() {\r\n let properties = this.schema.properties\r\n ? this.schema.properties\r\n : this.data_object.schema.properties;\r\n return properties;\r\n },\r\n getSchema(field, model) {\r\n var that = this;\r\n var properties = this.schema.properties\r\n ? this.schema.properties\r\n : this.data_object.schema.properties;\r\n\r\n if (properties) {\r\n var schema = fun.clone(properties); //JSON.parse(JSON.stringify(properties));\r\n Object.keys(schema).forEach(function(k) {\r\n if (k != field.name) {\r\n delete schema[k];\r\n }\r\n });\r\n schema[field.name] = this.prepareEditedField(schema[field.name]);\r\n // schema[field.name].hideTitle = true;\r\n if (field[\"v-bind\"] && schema[field.name]) {\r\n schema[field.name][\"v-bind\"] = field[\"v-bind\"];\r\n }\r\n if (\r\n schema[field.name] &&\r\n !schema[field.name][\"x-display\"] &&\r\n (!schema[field.name].type || schema[field.name].type == \"string\")\r\n ) {\r\n schema[field.name][\"x-display\"] = \"v-text-field\";\r\n schema[field.name][\"v-bind\"] = schema[field.name][\"v-bind\"] || {};\r\n schema[field.name][\"v-bind\"].clearable = true;\r\n }\r\n\r\n return schema;\r\n }\r\n },\r\n getCurrentEditedItem(t) {\r\n var item = this.originalRecords.filter(d => {\r\n return d._id == t.id;\r\n })[0];\r\n this.editCurrentRecord(item);\r\n },\r\n getDialogType(field) {\r\n // Determine whether to use 'v-edit-dialog' or 'v-dialog' based on item properties\r\n return field[\"v-bind\"] && field[\"v-bind\"].dialog\r\n ? \"v-dialog\"\r\n : \"v-edit-dialog\";\r\n },\r\n openDialog(field) {\r\n this.currentItem = field;\r\n if (this.getDialogType(field) === \"v-dialog\") {\r\n this.dialogModel = true;\r\n }\r\n // Else, the v-edit-dialog will handle its own opening\r\n },\r\n getVBind(field, model) {\r\n var vBind = this.getSchema(field, model);\r\n vBind.readonly = this.getReadOnly(field, model);\r\n },\r\n getReadOnly(field, model) {\r\n var that = this;\r\n if (\r\n that.schema[field][\"v-bind\"] &&\r\n that.schema[field][\"v-bind\"].readOnlyFormula\r\n ) {\r\n var readOnlyFormula = that.schema[field][\"v-bind\"].readOnlyFormula;\r\n var r = model;\r\n\r\n return eval(readOnlyFormula);\r\n }\r\n },\r\n inEditedItems() {\r\n var that = this;\r\n var included = false;\r\n if (this.editable) {\r\n this.editable.forEach(function(i) {\r\n if (that.editedItem) {\r\n if (i.name == that.editedItem.item) {\r\n included = true;\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return included;\r\n },\r\n\r\n selectMe(item, e) {\r\n item.select(item, e);\r\n },\r\n clearSearch() {\r\n this.search = \"\";\r\n this.computedHeaders.forEach(h => {\r\n this.searchModel[h.value] = \"\";\r\n });\r\n this.searchMenuModel = 0;\r\n this.searchModelKey = !this.searchModelKey;\r\n },\r\n capitalize(text) {\r\n return fun.capitalize(text);\r\n },\r\n formatDate(d) {\r\n return fun.formatDate(d);\r\n },\r\n resetModel() {\r\n this.model = {};\r\n },\r\n getGroupName(p) {\r\n var name = p.group;\r\n var defaultName = name || \"(none)\";\r\n var grName = p.groupBy && p.groupBy.length ? p.groupBy[0] : \"\";\r\n if (this.groupName) {\r\n // this.prevGroup = this.groupName(name);\r\n return this.groupName(name);\r\n } else {\r\n if (\r\n grName &&\r\n this.schema.properties[grName] &&\r\n this.schema.properties[grName].template\r\n ) {\r\n var m = p.items[0];\r\n var par = this.parentObject;\r\n var addModel = this.additionalModel;\r\n try {\r\n var t = eval(this.schema.properties[grName].template);\r\n } catch (error) {\r\n t = defaultName;\r\n }\r\n // this.prevGroup = t;\r\n return t;\r\n } else {\r\n // this.prevGroup = grName ? p.items[0][grName] : defaultName;\r\n\r\n return grName ? p.items[0][grName] : defaultName;\r\n }\r\n }\r\n },\r\n getAddButton() {\r\n if (this.addMenuButton) {\r\n if (this.addMenuButton.fromItem) {\r\n try {\r\n return this.data_object.schema.properties[\r\n this.addMenuButton.fromItem\r\n ][\"v-bind\"];\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n }\r\n },\r\n getEditableFields() {\r\n if (this.addMenuButton.editableFields) {\r\n var editableFields = [];\r\n this.addMenuButton.editableFields.forEach(f => {\r\n var fld = {};\r\n fld.name = f;\r\n fld.prop = this.data_object.schema.properties[f];\r\n editableFields.push(fld);\r\n });\r\n return editableFields;\r\n }\r\n },\r\n cancelEdit() {\r\n this.errorMessage = \"\";\r\n if (this.edited) {\r\n this.removeTab(this.edited - 1);\r\n // this.edited = null;\r\n }\r\n },\r\n getChipValue(item, slot) {\r\n if (!this.schema.properties[slot]) {\r\n return \"\";\r\n }\r\n var vBind = this.schema.properties[slot][\"v-bind\"];\r\n var value = item[slot];\r\n\r\n if (vBind && vBind.itemText && typeof item[slot] == \"object\") {\r\n value = item[slot][vBind.itemText];\r\n }\r\n if (vBind && vBind.capitalizeText) {\r\n value = this.capitalize(value);\r\n }\r\n if (this.schema.properties[slot].template) {\r\n value = this.getTemplate(item, {\r\n name: slot\r\n });\r\n }\r\n return value;\r\n },\r\n save(r, isEdtited, isEditedItem, keepOpen) {\r\n var that = this;\r\n var ind = -1;\r\n if (!r._id) {\r\n r._id = fun.guid();\r\n }\r\n this.originalRecords.forEach((f, i) => {\r\n if (f._id == r._id) {\r\n ind = i;\r\n }\r\n });\r\n if (ind == -1) {\r\n this.originalRecords.push(r);\r\n this.isNew = true;\r\n } else {\r\n this.originalRecords[ind] = r;\r\n }\r\n\r\n try {\r\n if (this.$refs.form && !this.$refs.form.validate()) {\r\n return;\r\n }\r\n } catch (error) {\r\n //\r\n }\r\n\r\n if (isEdtited && !this.isEditedNew) {\r\n this.isNew = false;\r\n }\r\n\r\n if (isEditedItem) {\r\n var defaultItem = null;\r\n\r\n if (!this.isNew) {\r\n defaultItem = this.table[this.table.indexOf(r)];\r\n }\r\n if (this.editedItem && this.editedItem.modelFn) {\r\n var par = fun.getParentByProperty(this, this.editedItem.modelFn);\r\n if (par) {\r\n r = par[this.editedItem.modelFn]({\r\n r: r,\r\n tbl: that,\r\n defaultItem: defaultItem,\r\n isNew: !this.isNew,\r\n schema: this.data_object.schema,\r\n formModel: this.formModel\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (this.isNew && Object.keys(r).length) {\r\n if (\r\n (!r._id || this.data_object.alwaysAddId) &&\r\n (this.data_object.parent_object ||\r\n this.formModel ||\r\n this.data_object.alwaysAddId)\r\n ) {\r\n r._id = fun.guid();\r\n }\r\n var exist = this.table.filter(function(n) {\r\n return n._id == r._id;\r\n });\r\n if (!exist.length) {\r\n this.table.push(r);\r\n // if (this.parentObject && this.k) {\r\n // this.parentObject[this.k] = this.table;\r\n // }\r\n }\r\n\r\n this.model = {};\r\n } else {\r\n this.dialog = keepOpen;\r\n }\r\n try {\r\n this.getCalculatedFields(r);\r\n } catch (error) {\r\n //\r\n }\r\n\r\n this.$emit(\"input\", this.originalRecords);\r\n if (this.beforeSave) {\r\n this.beforeSave(r, this);\r\n }\r\n if (\r\n (this.getFreshData && !this.alwaysUpdate) ||\r\n (!this.data_object.parent_object && !this.noSave) ||\r\n this.dList ||\r\n (this.data_object.parent_object && !this.alwaysUpdate)\r\n ) {\r\n if (!isEditedItem || this.alwaysUpdate) {\r\n this.saveRecord(r, this.isNew);\r\n }\r\n }\r\n if (this.alwaysUpdate && this.data_object.parent_object) {\r\n this.submit();\r\n } else if (!this.alwaysUpdate) {\r\n if (Array.isArray(this.table)) {\r\n this.$emit(\r\n \"input\",\r\n this.table.filter(function(r) {\r\n return r._id;\r\n })\r\n );\r\n this.$root.$emit(\"tableUpdated\", this, this.noSave);\r\n }\r\n }\r\n\r\n if (!this.editedItem) {\r\n this.isNew = true;\r\n }\r\n\r\n that.$root.$emit(\"record_updated\", {\r\n data_object: that.data_object,\r\n model: fun.clone(r)\r\n });\r\n this.model = {};\r\n this.listKey = !this.listKey;\r\n this.dialog = false;\r\n this.setTotals();\r\n // if (this.editedItem) {\r\n // this.moveFocus(r);\r\n // }\r\n if (this.isNew && !keepOpen) {\r\n this.rowAdded = true;\r\n var editedIndex = this.hideAllTabFilter ? 0 : -1;\r\n this.editedTabs.forEach((e, i) => {\r\n if (e.icon == \"mdi-new-box\") {\r\n editedIndex = i;\r\n }\r\n if (editedIndex > -1) {\r\n this.editedTabs.splice(editedIndex, 1);\r\n // this.resetForm();\r\n // this.tableMount();\r\n // this.refresh();\r\n }\r\n });\r\n }\r\n },\r\n resetForm() {\r\n if (this.form) {\r\n this.form.reset();\r\n this.form.resetValidation();\r\n this.successMessage = false;\r\n this.errorMessage = false;\r\n }\r\n },\r\n saveFilter() {\r\n console.log(this.searchModel);\r\n this.errorMessage = \"\";\r\n if (!this.filterName) {\r\n this.errorMessage = \"Please Enter Filter Name\";\r\n return;\r\n }\r\n var filterName = this.filterName.replaceAll(\" \", \"_\");\r\n var customFilterData = {};\r\n customFilterData[filterName] = this.searchModel;\r\n var data = {\r\n object_name: \"employee\",\r\n qry: {\r\n \"contact.email\": this.$root.user_email\r\n },\r\n new_data: {\r\n $set: {\r\n custom_filter: customFilterData\r\n }\r\n }\r\n };\r\n\r\n axios\r\n .post(this.serverURL + \"/update_record\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n this.successMessage = \"successfully added custom filter\";\r\n // if(!this.additionalTabs){\r\n // this.additionalTabs\r\n // }\r\n this.updateAdditionalTabs(customFilterData);\r\n this.clearSearch();\r\n });\r\n },\r\n cancel() {\r\n this.snack = true;\r\n this.snackColor = \"error\";\r\n this.snackText = \"Canceled\";\r\n this.isNew = true;\r\n this.model = {};\r\n },\r\n customBtnClick(c) {\r\n this.$root.$emit(\"customBtnClick\", {\r\n tbl: this,\r\n btn: c.id\r\n });\r\n event.stopPropagation();\r\n },\r\n applyGroupBy(item) {\r\n this.groupBy = item ? [item] : [];\r\n },\r\n captializedGroupByItems() {\r\n if (this.groupByItems) {\r\n var items = [];\r\n // this.groupByItems = this.groupByItems.sort();\r\n this.groupByItems.forEach(g => {\r\n items.push({\r\n text: fun.capitalize(g),\r\n value: g\r\n });\r\n });\r\n\r\n return items;\r\n }\r\n },\r\n duplicate() {\r\n // this.dObject.model\r\n var dValues = [];\r\n this.duplicateValues.split(\",\").forEach(v => {\r\n dValues.push(v.trim());\r\n });\r\n\r\n var data = {\r\n collection_name: this.data_object.object_name,\r\n field_name: this.copyRecords.field_name,\r\n duplicate_values: dValues,\r\n\r\n original_value: this.dObject.model[this.copyRecords.field_name]\r\n };\r\n\r\n axios\r\n .post(this.serverURL + \"/duplicate_records\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n console.log(response.data);\r\n this.successMessage = response.data;\r\n });\r\n },\r\n getCalculatedFields(model) {\r\n if (!this.schema || !this.schema.properties) {\r\n return;\r\n }\r\n var schema = this.schema.properties\r\n ? this.schema\r\n : this.data_object\r\n ? this.data_object.schema\r\n : null;\r\n if (!schema || !schema.properties) {\r\n return;\r\n }\r\n // console.log(schema);\r\n var getNumber = function(n) {\r\n return fun.getNumber(n);\r\n };\r\n var sum = function(r, formula) {\r\n return fun.sum(r, formula);\r\n };\r\n\r\n var getSum = function(a) {\r\n return fun.getSum(a);\r\n };\r\n var formatDate = function(a) {\r\n return fun.formatDateTime(a);\r\n };\r\n var par = fun.getParentByProperty(this, this.parentProperty);\r\n var keys = Object.keys(schema.properties);\r\n if (!model) {\r\n if (this.table.length) {\r\n this.table.forEach(function(r) {\r\n keys.forEach(function(key) {\r\n if (schema.properties[key].calculate && r._id) {\r\n try {\r\n r[key] = eval(schema.properties[key].calculate);\r\n } catch (error) {\r\n r[key] = \"\";\r\n }\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n keys.forEach(function(key) {\r\n if (schema.properties[key].calculate && model._id) {\r\n try {\r\n model[key] = eval(schema.properties[key].calculate);\r\n } catch (error) {\r\n model[key] = \"\";\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.$emit(\"input\", this.originalRecords);\r\n this.$root.$emit(\"fieldsRecalculated\", this, keys);\r\n },\r\n open(field, props) {\r\n this.dialog = true;\r\n var ref = field.name + props.item._id;\r\n\r\n this.$nextTick(() => {\r\n var firstElement = document.querySelector(\r\n \".v-small-dialog__menu-content\"\r\n );\r\n\r\n // Check if the element exists and add the new class\r\n if (firstElement && field[\"v-bind\"] && field[\"v-bind\"].dialog) {\r\n firstElement.classList.add(\"edit-dialog-wrapper\");\r\n }\r\n\r\n // class=\r\n const dialogEl = this.$refs[ref][0].$el;\r\n // left = dialogEl.getBoundingClientRect().left;\r\n if (field[\"v-bind\"] && field[\"v-bind\"].dialog) {\r\n var parentTable = fun.findParentByTagName(dialogEl, \"table\");\r\n\r\n left = parentTable.getBoundingClientRect().left;\r\n document.documentElement.style.setProperty(\r\n \"--edit-dialog-width\",\r\n \"100%\"\r\n );\r\n } else {\r\n return;\r\n }\r\n if (\r\n (field[\"v-bind\"] && field[\"v-bind\"].controlAtStart) ||\r\n this.$vuetify.breakpoint.smAndDown\r\n ) {\r\n const row = dialogEl.parentElement.parentElement;\r\n\r\n var left = this.$vuetify.breakpoint.smAndDown\r\n ? 0\r\n : row.getBoundingClientRect().left;\r\n }\r\n\r\n document.documentElement.style.setProperty(\r\n \"--edit-dialog-left\",\r\n left + \"px\"\r\n );\r\n });\r\n\r\n // document.arrive(\"input[k='\" + k + \"']\", (a) => {\r\n // if (a) {\r\n // a.click();\r\n // }\r\n // });\r\n // this.snack = true;\r\n // this.snackColor = \"info\";\r\n // this.snackText = \"Dialog opened\";\r\n // this.sortDisabled = true;\r\n },\r\n close() {\r\n this.dialog = false;\r\n this.isNew = true;\r\n this.model = {};\r\n this.sortDisabled = false;\r\n },\r\n\r\n editRec(rec) {\r\n this.isNew = false;\r\n this.model = rec;\r\n this.dialog = true;\r\n },\r\n submit(options) {\r\n this.errorMessage = \"\";\r\n var that = this;\r\n\r\n var data_object = this.data_object;\r\n\r\n var model = this.table;\r\n\r\n if (data_object.parent_object) {\r\n var m = {};\r\n\r\n if (data_object.parent_object.path) {\r\n m[data_object.parent_object.path] = model;\r\n } else {\r\n m[data_object.object_name] = model;\r\n }\r\n model = m;\r\n }\r\n var tot = this.getTotal ? this.getTotal(this) : \"\";\r\n\r\n if (tot) {\r\n model[tot.key] = tot.value;\r\n }\r\n if (data_object.defaultValue) {\r\n model.forEach(function(r, i) {\r\n model[i] = {\r\n ...r,\r\n ...data_object.defaultValue\r\n };\r\n });\r\n }\r\n this.getCalculatedFields();\r\n if (this.beforeSubmit) {\r\n var doNotSubmit = this.beforeSubmit(model, data_object.deleted);\r\n if (doNotSubmit) {\r\n return false;\r\n }\r\n }\r\n if (this.beforeAddData) {\r\n this.beforeAddData(model, this);\r\n }\r\n var metadata = this.data_object;\r\n metadata.d_excel = this.dExcel;\r\n\r\n var data = {\r\n metadata: metadata,\r\n model: model\r\n };\r\n if (!model._id && metadata.model && metadata.model._id) {\r\n model._id = metadata.model._id;\r\n }\r\n\r\n axios\r\n .post(this.serverURL + \"/add_data\", data, {\r\n withCredentials: true\r\n })\r\n .then(function(response) {\r\n if (response.data.msg) {\r\n that.successMessage = \"successfully saved\"; // response.data.msg;\r\n }\r\n\r\n // console.log(\"error2:\", response);\r\n })\r\n .catch(function(error) {\r\n that.errorMessage = error.data;\r\n // console.log(\"error:\", error);\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n if (that.afterSubmit) {\r\n var opt = {};\r\n opt.formOptions = options;\r\n that.afterSubmit(opt);\r\n }\r\n },\r\n getEditedItem() {\r\n var that = this;\r\n if (this.editedItem && this.editedItem.objName) {\r\n if (!this.editedItem.items) {\r\n this.loading = true;\r\n axios\r\n .post(\r\n this.serverURL + \"/get_records\",\r\n {\r\n object_name: this.editedItem.objName,\r\n qry: this.editedItem.qry\r\n },\r\n {\r\n withCredentials: true\r\n }\r\n )\r\n .then(response => {\r\n var data = response.data;\r\n if (that.editedItem.prepareData) {\r\n data = that.editedItem.prepareData(data);\r\n }\r\n that.editedItem.items = data;\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n }\r\n },\r\n defaultFilteredItem() {\r\n //not used\r\n var defaultItem = {};\r\n if (this.filterItems && this.filterItems.length) {\r\n var item = this.filterItems[this.currentFilter];\r\n if (item) {\r\n defaultItem[item.name] = item.id;\r\n var prop = this.schema.properties[item.name];\r\n if (prop[\"x-display\"] && prop[\"x-display\"] == \"v-combo\") {\r\n if (prop[\"v-bind\"].returnObject) {\r\n defaultItem[item.name] = {\r\n text: item.caption,\r\n value: item.id\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return defaultItem;\r\n },\r\n addRowFromButton(rec, edit) {\r\n var item = rec.item.rec || rec.item;\r\n var specialFunction = null;\r\n var addProp = this.data_object.schema.properties[\r\n this.addMenuButton.fromItem\r\n ][\"v-bind\"];\r\n var val = rec.item.value || rec.item;\r\n // this.$refs.dTable[\"disable-pagination\"] = true;\r\n // this.editDisablePagination = true;\r\n if (addProp.updateItem) {\r\n // if (addProp.updateItem.checkCustomFunction) {\r\n // specialFunction = fun.getObjectsByKey(item, \"special_function\");\r\n // // if (specialFunction && specialFunction.length) {\r\n // // //comboUpdated\r\n\r\n // // }\r\n if (item && addProp.updateItem.update) {\r\n var f = {};\r\n const guid = fun.guid;\r\n f = eval(addProp.updateItem.update);\r\n if (!f[this.addMenuButton.fromItem]) {\r\n f[this.addMenuButton.fromItem] = val;\r\n }\r\n // if (this.defaultModel) {\r\n // Object.keys(f).forEach((k) => {\r\n // if (!f[k]) {\r\n // f[k] = this.defaultModel[k];\r\n // }\r\n // });\r\n // }\r\n this.defaultModel = {\r\n ...this.defaultModel,\r\n ...f\r\n };\r\n } else {\r\n this.defaultModel[this.addMenuButton.fromItem] = val;\r\n }\r\n // }\r\n // this.data_object.schema.properties[this.addMenuButton.fromItem][\"v-bind\"];\r\n var newRow = this.addRow(rec);\r\n if (edit) {\r\n this.editCurrentRecord(newRow);\r\n }\r\n this.getCalculatedFields();\r\n if (addProp.updateItem.checkCustomFunction) {\r\n this.$root.$emit(\"comboUpdated\", {\r\n obj: this,\r\n objName: rec.objName,\r\n model: rec,\r\n formModel: newRow\r\n });\r\n return;\r\n }\r\n }\r\n },\r\n scrollToEdited(newRow) {\r\n var that = this;\r\n if (that.scrollOnNew) {\r\n that.$nextTick(() => {\r\n var ref = that.scrollOnNew + newRow._id;\r\n if (ref) {\r\n try {\r\n const el = that.$refs[that.scrollOnNew][0].$el;\r\n if (el) {\r\n var elem =\r\n el.closest(\"tr\").previousElementSibling || el.closest(\"tr\");\r\n elem.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\"\r\n // inline: \"start\",\r\n });\r\n }\r\n } catch (error) {\r\n //\r\n }\r\n //\r\n }\r\n });\r\n }\r\n },\r\n addRow(rec) {\r\n this.errorMessage = \"\";\r\n this.editMode = false;\r\n this.insertMode = true;\r\n // this.navigate(\"last\");\r\n\r\n // var valid = true;\r\n var newRow = {};\r\n var that = this;\r\n that.newRowId = \"\";\r\n var addRow = function(valid) {\r\n if (!valid) {\r\n return;\r\n }\r\n // that.navigate(\"last\");\r\n if (that.$refs.removeGroup) {\r\n that.$refs.removeGroup.$el.click();\r\n }\r\n\r\n // this.defaultFilteredItem() ||\r\n if (that.defaultModel) {\r\n newRow = fun.clone(that.defaultModel);\r\n } else {\r\n newRow = that.getDefaults(newRow);\r\n }\r\n if (that.filteredTabItems.length) {\r\n // var f = !that.hideAllTabFilter\r\n // ? that.currentFilter - 1\r\n // : that.currentFilter;\r\n var f = that.currentFilter;\r\n var curFilter = that.filteredTabItems[f];\r\n if (curFilter) {\r\n newRow[curFilter.name] = curFilter.value;\r\n }\r\n }\r\n newRow._id = fun.guid();\r\n that.newRowId = newRow._id;\r\n that.page = that.pageCount;\r\n if (\r\n (that.originalRecords.length + 1) / that.itemsPerPageEdited ||\r\n 10 > that.page\r\n ) {\r\n // that.page += 1;\r\n that.navigate(\"next\");\r\n }\r\n if (!that.table.length) {\r\n that.table.push(newRow);\r\n } else {\r\n that.table.unshift(newRow);\r\n // that.tableKey = !that.tableKey;\r\n\r\n that.originalRecords.unshift(newRow);\r\n }\r\n\r\n if (that.updateNestedArray) {\r\n that.update.add.push(newRow);\r\n }\r\n\r\n that.$root.$emit(\"rowAdded\", {\r\n tbl: that,\r\n row: newRow,\r\n rec: rec\r\n });\r\n that.scrollToEdited(newRow);\r\n return newRow;\r\n };\r\n if (that.newRowId) {\r\n var valid = that.validateEntry(that.newRowId, true, valid => {\r\n addRow(valid);\r\n });\r\n } else {\r\n addRow(true);\r\n }\r\n\r\n this.tableKey = !this.tableKey;\r\n return newRow;\r\n // this.insertMode = false;\r\n },\r\n blankRow(rowChanged) {\r\n var that = this;\r\n if (!this.table.length) {\r\n this.table = [];\r\n }\r\n this.newRow = {};\r\n var addRow = function() {\r\n var newRow = {};\r\n if (that.defaultModel) {\r\n newRow = fun.clone(that.defaultModel);\r\n }\r\n if (that.filteredTabItems.length) {\r\n var curFilter = that.filteredTabItems[that.currentFilter];\r\n newRow[curFilter.name] = curFilter.value;\r\n }\r\n if (that.editedItem && that.editedItem.defaultFn) {\r\n that.defaultItem = that.editedItem.defaultFn(that);\r\n }\r\n\r\n that.table.push(newRow);\r\n that.originalRecords.push(newRow);\r\n that.insertedRow = newRow;\r\n that.editDialog = true;\r\n };\r\n if (this.groupBy.length && this.table.length > 0) {\r\n this.newRow[this.groupBy] = this.table[this.table.length - 1][\r\n this.groupBy\r\n ];\r\n }\r\n var blankRow = this.table.filter(r => {\r\n return !r._id;\r\n });\r\n\r\n if (!blankRow.length || rowChanged) {\r\n this.newRowInserted = true;\r\n\r\n this.insertedRow = this.table[this.table.length - 1];\r\n if (rowChanged) {\r\n this.insertedRow._id = fun.guid();\r\n addRow();\r\n } else {\r\n addRow();\r\n }\r\n }\r\n },\r\n resetFocus() {\r\n var that = this;\r\n var currentInput = document.activeElement;\r\n\r\n if (currentInput) {\r\n var td = currentInput.closest(\"td\");\r\n if (td) {\r\n var tr = td.closest(\"tr\");\r\n var tdArray = Array.from(tr.querySelectorAll(\"td\"));\r\n var indexCol = tdArray.findIndex(column => column == td);\r\n var h = that.computedHeaders[indexCol - 2];\r\n\r\n var indexRow = this.$refs[h.value].length - 1;\r\n try {\r\n var input = this.$refs[h.value][indexRow].$el.querySelectorAll(\r\n \"input\"\r\n )[0];\r\n input.focus();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n }\r\n },\r\n blankItem(isNew, clear) {\r\n if (this.editedItem) {\r\n var that = this;\r\n var edit = this.$refs.edit_combo;\r\n var newItem = {};\r\n\r\n if (this.editedItem.defaultFn) {\r\n this.defaultItem = this.editedItem.defaultFn(this);\r\n }\r\n if (this.editedItem.modelFn) {\r\n newItem = this.editedItem.modelFn({\r\n r: null,\r\n tbl: that,\r\n defaultItem: this.defaultItem || {},\r\n isNew: false,\r\n schema: this.data_object.schema,\r\n formModel: this.formModel\r\n });\r\n }\r\n if (!this.table.length) {\r\n this.table = [];\r\n }\r\n if (\r\n Array.isArray(this.table) &&\r\n !this.table.filter(function(r) {\r\n return r && !r._id;\r\n }).length\r\n ) {\r\n if (edit) {\r\n edit.resetModel();\r\n }\r\n\r\n // this.moveFocus();\r\n }\r\n }\r\n },\r\n navigate(dir) {\r\n if (dir == \"next\") {\r\n this.page += 1;\r\n }\r\n if (dir == \"prev\") {\r\n this.page -= 1;\r\n }\r\n if (dir == \"last\") {\r\n this.page = this.pageCount;\r\n }\r\n if (dir == \"first\") {\r\n this.page = 1;\r\n }\r\n if (this.doServerPagination) {\r\n var paginationProperties = {\r\n pageCount: this.pageCount,\r\n page: this.page,\r\n itemsLength: this.itemsCount,\r\n pageStart: this.pageStop + 1,\r\n pageStop: this.pageStop + this.perPage,\r\n itemsPerPage: this.perPage,\r\n navigate: true\r\n };\r\n this.onPagination(paginationProperties);\r\n }\r\n },\r\n changeFilterTab(ev) {\r\n // console.log(ev);\r\n if (!ev) {\r\n this.table = this.originalRecords;\r\n // this.$refs.dTable[\"disable-pagination\"] = false;\r\n // this.$refs.dTable[\"items-per-page\"] = 20;\r\n } else {\r\n // this.$refs.dTable[\"disable-pagination\"] = this.editDisablePagination;\r\n // this.$refs.dTable[\"items-per-page\"] = this.itemsPerPageEdited;\r\n this.filterItems.forEach((el, i) => {\r\n if (el.value == ev) {\r\n this.currentFilter = i;\r\n }\r\n });\r\n }\r\n },\r\n onScroll(e) {\r\n // debounce if scrolling fast\r\n this.timeout && clearTimeout(this.timeout);\r\n\r\n this.timeout = setTimeout(() => {\r\n const { scrollTop } = e.target;\r\n const rows = Math.ceil(scrollTop / this.rowHeight);\r\n\r\n this.start =\r\n rows + this.perPage > this.desserts.length\r\n ? this.desserts.length - this.perPage\r\n : rows;\r\n\r\n this.$nextTick(() => {\r\n e.target.scrollTop = scrollTop;\r\n });\r\n }, 20);\r\n },\r\n toggleGroup(openGroup) {\r\n var that = this;\r\n Object.keys(this.$refs).forEach(k => {\r\n if (k.startsWith(\"openGroup\")) {\r\n var groupName = k.split(\"_\")[1];\r\n if (groupName != openGroup) {\r\n if (that.$refs[k]) {\r\n that.$refs[k].$el.click();\r\n }\r\n }\r\n }\r\n if (that.$refs[\"closeGroup_\" + openGroup]) {\r\n that.$refs[\"closeGroup_\" + openGroup].$el.click();\r\n }\r\n });\r\n },\r\n moveFocus(r) {\r\n var that = this;\r\n try {\r\n var observer = new MutationObserver(function(mutations) {\r\n var rowCount = that.countVisibleRows();\r\n var nextCtl = document.querySelectorAll(\r\n 'input[k=\"' + that.editedItem.nextCtl + '\"]'\r\n );\r\n\r\n if (nextCtl.length && nextCtl.length == rowCount) {\r\n var rowIndex = nextCtl.length - 1;\r\n\r\n if (that.isNew) {\r\n observer.disconnect();\r\n var clearBtn = that.$refs.edit_combo.$el.getElementsByTagName(\r\n \"button\"\r\n );\r\n that.toggleGroup(r[that.groupBy]);\r\n if (clearBtn.length) {\r\n clearBtn[0].click();\r\n }\r\n }\r\n }\r\n });\r\n\r\n observer.observe(document.body, {\r\n characterDataOldValue: true,\r\n subtree: true,\r\n childList: true,\r\n characterData: true\r\n });\r\n } catch (error) {\r\n //\r\n }\r\n },\r\n saveRecord(model, isNew) {\r\n this.errorMessage = \"\";\r\n Object.keys(this.schema.properties).forEach(k => {\r\n if (\r\n this.schema.properties[k].loadOnDemand &&\r\n !this.schema.properties[k].keepOnSave\r\n ) {\r\n delete model[k];\r\n }\r\n });\r\n var newModel = fun.clone(model);\r\n var that = this;\r\n\r\n var m = {};\r\n m._id = undefined;\r\n\r\n var _id = isNew ? undefined : model._id;\r\n var alwaysUpdate = false;\r\n\r\n var data_object = this.data_object;\r\n\r\n if (data_object.parent_object) {\r\n if (that.parentModel) {\r\n alwaysUpdate = data_object.parent_object.alwaysUpdate;\r\n _id = that.parentModel._id;\r\n } else {\r\n if (that.formModel) {\r\n _id = that.formModel._id;\r\n m._id = data_object.parent_object._id;\r\n }\r\n }\r\n if (isNew) {\r\n model._id = fun.guid();\r\n }\r\n\r\n var childrenPath = data_object.parent_object.children_path;\r\n\r\n var path_ids = [];\r\n var path = \"\";\r\n childrenPath.forEach((p, i) => {\r\n if (i > 0) {\r\n path_ids.push({\r\n name: childrenPath[i - 1],\r\n _id: that.formModel._id\r\n });\r\n\r\n path += \".$.\" + p;\r\n } else {\r\n path = p;\r\n }\r\n });\r\n data_object.parent_object.path_ids = path_ids;\r\n data_object.parent_object.path = path;\r\n }\r\n\r\n if (this.beforeAddData) {\r\n var doNotSubmit = this.beforeAddData(model, this);\r\n if (doNotSubmit) {\r\n return false;\r\n }\r\n }\r\n // if (that.schema[\"v-bind\"].getObject) {\r\n // var r = model;\r\n // this.data_object.object_name = eval(that.schema[\"v-bind\"].getObject);\r\n // }\r\n var data = {\r\n metadata: this.data_object,\r\n update: that.update,\r\n model: model,\r\n _id: _id\r\n };\r\n\r\n // this.dialog = false;\r\n if (isNew) {\r\n data.metadata.add_record_to_table = true;\r\n }\r\n\r\n if (\r\n (this.alwaysUpdate || alwaysUpdate) &&\r\n (Object.keys(data.model).length || data.model.length)\r\n ) {\r\n alwaysUpdate = this.alwaysUpdate;\r\n // this.loading = true;\r\n axios\r\n .post(this.serverURL + \"/add_data\", data, {\r\n withCredentials: true\r\n })\r\n .then(function(response) {\r\n that.loading = false;\r\n that.successMessage = response.data.msg;\r\n if (data.metadata.add_record_to_table && !alwaysUpdate) {\r\n data.metadata.add_record_to_table = false;\r\n that.loadFromDb();\r\n }\r\n that.$root.$emit(\"record_updated\", {\r\n data_object: that.data_object,\r\n model: newModel\r\n });\r\n if (that.afterSave) {\r\n that.afterSave(that, newModel);\r\n }\r\n if (that.refreshAfterSubmit) {\r\n // setTimeout(that.refresh(), 200);\r\n // that.tableMount();\r\n // that.getData();\r\n that.refreshTable();\r\n //\r\n }\r\n });\r\n } else {\r\n this.table.push(model);\r\n this.originalRecords.push(model);\r\n this.page = this.pageCount;\r\n\r\n this.$root.$emit(\"tableUpdated\", model, !alwaysUpdate);\r\n }\r\n },\r\n convertArray(jsArray) {\r\n let convertedArray = jsArray.map(([field, order]) => {\r\n return `(\"${field}\", ${order})`;\r\n });\r\n return convertedArray;\r\n },\r\n loadFromDb() {\r\n // if (!this.data_object) {\r\n // return;\r\n // }\r\n var that = this;\r\n if (!this.qry) {\r\n // edited records\r\n\r\n if (\r\n this.remoteSearch ||\r\n // (\r\n this.doServerPagination\r\n // && (this.search || this.sortCriteria.length\r\n\r\n // ))\r\n ) {\r\n if (!this.search) {\r\n // this.tableReady = false;\r\n this.data_object.qry = fun.clone(this.initialQry);\r\n\r\n if (!this.data_object.object_name) {\r\n this.data_object.object_name = this.object_name;\r\n }\r\n // return;\r\n } else {\r\n this.data_object.qry = this.buildSearchQuery();\r\n this.data_object.object_name =\r\n this.data_object.remote_search_object ||\r\n this.data_object.object_name ||\r\n this.object_name;\r\n this.data_object.aggregate = null;\r\n }\r\n }\r\n if (\r\n this.data_object &&\r\n this.data_object.schema &&\r\n !this.data_object.object_name\r\n ) {\r\n var d = this.data_object.schema[\"v-bind\"];\r\n Object.keys(d).forEach(k => {\r\n this.data_object[k] = d[k];\r\n });\r\n\r\n // this.data_object.object_name = this.data_object.schema[\r\n // \"v-bind\"\r\n // ].object_name;\r\n // this.data_object.schema_name = this.data_object.schema[\r\n // \"v-bind\"\r\n // ].schema_name;\r\n // this.data_object.qry = this.data_object.schema[\"v-bind\"].qry;\r\n // this.data_object.qryFn = this.data_object.schema[\"v-bind\"].qryFn;\r\n // this.data_object.data_property = this.data_object.schema[\r\n // \"v-bind\"\r\n // ].data_property;\r\n // this.data_object.defaultValue = this.data_object.schema[\r\n // \"v-bind\"\r\n // ].defaultValue;\r\n }\r\n if (this.tabQry) {\r\n if (this.data_object.qry.$and) {\r\n this.data_object.qry.$and.push(this.tabQry);\r\n } else {\r\n this.data_object.qry = this.tabQry;\r\n }\r\n }\r\n if (this.assistantQry) {\r\n try {\r\n this.assistantQry = fun.preprocessJsonForMongoDB(this.assistantQry);\r\n\r\n if (this.data_object.qry) {\r\n if (!this.data_object.qry.$and) {\r\n this.data_object.qry.$and = [this.data_object.qry];\r\n }\r\n if (this.assistantQry.$and) {\r\n this.assistantQry.$and.forEach(q => {\r\n this.data_object.qry.$and.push(q);\r\n });\r\n } else {\r\n Object.keys(this.assistantQry).forEach(k => {\r\n var and = {};\r\n and[k] = this.assistantQry[k];\r\n this.data_object.qry.$and.push(and);\r\n });\r\n }\r\n } else {\r\n this.data_object.qry = this.assistantQry;\r\n }\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n if (\r\n this.data_object &&\r\n this.data_object.qry &&\r\n this.data_object.defaultValue\r\n ) {\r\n this.data_object.qry = {\r\n ...this.data_object.qry,\r\n ...this.data_object.defaultValue\r\n };\r\n }\r\n if (this.data_object && this.data_object.qryFn) {\r\n var par = this.parentObject;\r\n this.data_object.qry = eval(this.data_object.qryFn);\r\n }\r\n\r\n if (this.doServerPagination) {\r\n this.data_object.pagination = {\r\n pageCount: this.pageCount,\r\n currentPage: this.currentPage,\r\n pageStart:\r\n this.currentPage * this.itemsPerPageEdited -\r\n this.itemsPerPageEdited,\r\n\r\n itemsPerPageEdited: this.itemsPerPageEdited,\r\n totalRecords: this.itemsCount\r\n };\r\n if (\r\n this.itemsCount &&\r\n this.data_object.pagination.pageStart >= this.itemsCount\r\n ) {\r\n return;\r\n }\r\n this.data_object.pagination.pageStop =\r\n parseInt(this.data_object.pagination.pageStart) +\r\n parseInt(this.itemsPerPageEdited);\r\n\r\n // this.data_object.sort = this.convertArray(this.sortCriteria);\r\n this.data_object.sort = this.sortCriteria;\r\n }\r\n if (this.data_object) {\r\n this.data_object.per_page = this.itemsPerPage;\r\n }\r\n\r\n if (this.data_object && this.defaultModel) {\r\n this.data_object.default_model = this.defaultModel;\r\n }\r\n if (this.maxRecords || this.serverPagination) {\r\n this.data_object.max_records = this.maxRecords;\r\n this.data_object.sort = this.currentSortBy[0] || this.sortBy;\r\n this.data_object.sort_desc = this.currentSortBy[0]\r\n ? this.currentSortDesc[0]\r\n : this.sortDesc;\r\n }\r\n } else {\r\n this.data_object.qry = this.qry;\r\n }\r\n this.loading = true;\r\n var t = new Date();\r\n if (!this.data_object.additional_data) {\r\n this.data_object.additional_data = [];\r\n }\r\n if (this.tableName) {\r\n this.data_object.additional_data.push({\r\n obj_name: \"columns\",\r\n qry: {\r\n table_name: this.tableName.toLowerCase(),\r\n user_id: this.$root.user_id\r\n }\r\n });\r\n this.data_object.additional_data.push({\r\n obj_name: \"custom_qry\",\r\n qry: {\r\n table_name: this.tableName.toLowerCase(),\r\n user_id: this.$root.user_id\r\n }\r\n });\r\n }\r\n // if (this.doServerPagination && !this.itemsCount) {\r\n // var dObject = {\r\n // ...this.data_object,\r\n // ...{ count_only: true }\r\n // };\r\n // axios\r\n // .post(this.serverURL + \"/get_data\", dObject, {\r\n // withCredentials: true\r\n // })\r\n // .then(response => {\r\n // if (typeof response.data === \"object\" && response.data !== null) {\r\n // this.itemsCount = response.data.total_records;\r\n // } else {\r\n // this.itemsCount = response.data;\r\n // }\r\n\r\n // this.pageStop = this.itemsPerPage;\r\n // this.doServerPagination = true;\r\n // this.pagerKey = !this.pagerKey;\r\n // });\r\n // }\r\n\r\n axios\r\n .post(this.serverURL + \"/get_data\", this.data_object, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n // console.log(this.data_object, response.data);\r\n var data = response.data;\r\n this.serverPaginationDone = true;\r\n // data.table = data.model;\r\n // console.log(fun.roughSizeOfObject(data));\r\n this.additionalModel = data.additional_model;\r\n if (\r\n this.additionalModel &&\r\n this.additionalModel.employee &&\r\n this.additionalModel.employee.length &&\r\n this.additionalModel.employee[0].custom_filter\r\n ) {\r\n this.additionalTabs = this.additionalModel.employee[0].custom_filter;\r\n }\r\n if (data.schema[\"v-bind\"]) {\r\n Object.keys(data.schema[\"v-bind\"]).forEach(k => {\r\n that[k] = data.schema[\"v-bind\"][k];\r\n });\r\n }\r\n if (data.total_records) {\r\n this.itemsCount = data.total_records || data.model.length;\r\n if (this.itemsCount > data.model.length) {\r\n this.doServerPagination = true;\r\n }\r\n }\r\n\r\n if (\r\n (!data.table || !data.table.length) &&\r\n data.model &&\r\n data.model.length\r\n ) {\r\n data.table = data.model;\r\n }\r\n if (that.data_object.data_property) {\r\n data.table = response.data.model[0][that.data_object.data_property];\r\n if (!data.table.length) {\r\n data.table = data.model;\r\n }\r\n if (!data.table.length) {\r\n data.table = [];\r\n }\r\n that.originalRecords = fun.clone(data.table);\r\n }\r\n if (that.data_object.addField) {\r\n var template =\r\n data.schema.properties[that.data_object.addField].template;\r\n that.schema = data.schema;\r\n // if (!data.table.length && data.model.length) {\r\n // data.table = data.model;\r\n // }\r\n if (data.table.length) {\r\n data.table.forEach(r => {\r\n var d = that.getTemplate(r, {\r\n name: that.data_object.addField\r\n });\r\n r[that.data_object.addField] = d;\r\n });\r\n }\r\n that.table = data.table;\r\n if (that.formModel) {\r\n that.formModel[that.data_object.addField] = that.table;\r\n }\r\n\r\n that.originalRecords = fun.clone(data.table);\r\n }\r\n if (that.onDataReceived) {\r\n data = that.onDataReceived(response.data, this);\r\n that.originalRecords = fun.clone(data.table);\r\n }\r\n\r\n that.addTableKey = !that.addTableKey;\r\n if (that.defaultModel && data.table) {\r\n data.table.forEach(r => {\r\n Object.keys(that.defaultModel).forEach(k => {\r\n if (!r[k]) {\r\n r[k] = that.defaultModel[k];\r\n }\r\n });\r\n });\r\n }\r\n var currentPage = fun.clone(this.page);\r\n // if (currentPage != that.pageCount) {\r\n that.initTable(data);\r\n // that.updateFilter();\r\n that.getGroupBy();\r\n that.expandAll();\r\n if (this.editedId) {\r\n this.editCurrentRecord(data.table[0]);\r\n }\r\n\r\n // }\r\n })\r\n .catch(r => {\r\n // console.log(r);\r\n // this.$root.logout();\r\n })\r\n .finally(() => {\r\n that.loading = false;\r\n });\r\n },\r\n\r\n getObjects(obj, key, val) {\r\n return fun.getObjects(obj, key, val);\r\n },\r\n assignId() {\r\n var that = this;\r\n if (this.table.length) {\r\n this.table.forEach((r, i) => {\r\n if (!r._id) {\r\n if (\r\n (that.tableInsertable && i != that.table.length - 1) ||\r\n !that.tableInsertable\r\n )\r\n // r._id = fun.guid();\r\n that.table[i]._id = fun.guid();\r\n }\r\n });\r\n }\r\n },\r\n deleteCustomFilter(item) {\r\n this.$root.$confirm\r\n .open(\"Delete Custom Filter\", \"Confirm deleting \" + item.value + \"?\", {\r\n color: \"red\"\r\n })\r\n .then(confirm => {\r\n if (confirm) {\r\n var filterName = \"custom_filter.\" + item.value;\r\n var unset = {};\r\n unset[filterName] = \"\";\r\n\r\n var data = {\r\n object_name: \"employee\",\r\n qry: {\r\n \"contact.email\": this.$root.user_email\r\n },\r\n new_data: {\r\n $unset: unset\r\n }\r\n };\r\n\r\n axios\r\n .post(this.serverURL + \"/update_record\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n this.successMessage = \"successfully removed \" + item.value;\r\n delete this.additionalTabs[item.value];\r\n this.filterItems = this.filterItems.filter(\r\n obj => obj.value !== item.value\r\n );\r\n this.updateAdditionalTabs();\r\n\r\n console.log(this.filteredTabItems);\r\n // this.tabKey = !this.tabKey;\r\n });\r\n }\r\n });\r\n\r\n //\r\n },\r\n getGroupBy() {\r\n if (this.groupByItems && !this.noGroups) {\r\n this.groupByItems = this.groupByItems.sort();\r\n this.groupByItemsReady = true;\r\n }\r\n },\r\n buildSortCriteria() {\r\n this.sortCriteria = this.currentSortBy.map((sortField, index) => {\r\n return [sortField, this.currentSortBy[index] ? -1 : 1];\r\n });\r\n\r\n console.log(\"Sort Criteria:\", this.sortCriteria);\r\n if (this.doServerPagination) {\r\n this.loadFromDb();\r\n }\r\n },\r\n getSortBy(newSortBy) {\r\n if (newSortBy.length) {\r\n this.currentSortBy = newSortBy;\r\n this.buildSortCriteria();\r\n }\r\n },\r\n getSortDesc(newSortDesc) {\r\n this.currentSortDesc = newSortDesc;\r\n this.buildSortCriteria();\r\n },\r\n closeDialog(d) {\r\n this.$refs[d][0].cancel();\r\n },\r\n getField(props, field) {\r\n if (!this.schema.properties) {\r\n return;\r\n }\r\n if (!field.name) {\r\n field = {\r\n name: field\r\n };\r\n }\r\n var val = this.getTemplate(props.item, field);\r\n if (val) {\r\n return val;\r\n }\r\n if (\r\n this.schema.properties[field.name] &&\r\n this.schema.properties[field.name][\"x-display\"] == \"v-switch\"\r\n ) {\r\n return props.item[field.name]\r\n ? \"<span style='color:green'><b>(Yes)</b></span>\"\r\n : \"<span style='color:red'><b>(No)</b></span>\";\r\n }\r\n\r\n var title = field.title || this.capitalize(field.name);\r\n if (field[\"v-bind\"]) {\r\n if (\r\n field[\"v-bind\"].itemText &&\r\n field[\"v-bind\"].returnObject &&\r\n props.item[field.name]\r\n ) {\r\n val = props.item[field.name][field[\"v-bind\"].itemText];\r\n if (field[\"v-bind\"].capitalizeText) {\r\n return this.capitalize(val);\r\n } else {\r\n return val;\r\n }\r\n } else {\r\n val = props.item[field.name];\r\n if (field[\"v-bind\"].capitalizeText) {\r\n return this.capitalize(props.item[field.name]);\r\n } else {\r\n return props.item[field.name];\r\n }\r\n }\r\n } else {\r\n if (\r\n field[\"v-bind\"] &&\r\n field[\"v-bind\"].itemText &&\r\n field[\"v-bind\"].returnObject\r\n ) {\r\n val = props.item[field.name][field[\"v-bind\"].itemText];\r\n if (val) {\r\n return val;\r\n } else {\r\n val = this.getFieldDisplay(field, title);\r\n return val;\r\n }\r\n } else {\r\n if (\r\n this.schema.properties[field.name] &&\r\n this.schema.properties[field.name].displayProperty &&\r\n props.item[field.name]\r\n ) {\r\n val =\r\n props.item[field.name][\r\n this.schema.properties[field.name].displayProperty\r\n ];\r\n\r\n if (!val) {\r\n val = this.getFieldDisplay(field, title);\r\n }\r\n return val;\r\n } else {\r\n val = props.item[field.name];\r\n\r\n if (!val || (typeof val == \"object\" && !val.length)) {\r\n val = this.getFieldDisplay(field, title);\r\n }\r\n\r\n return val;\r\n }\r\n }\r\n }\r\n },\r\n getFieldDisplay(field, title) {\r\n var val = \"\";\r\n if (!this.schema.properties[field.name]) {\r\n return;\r\n }\r\n if (this.schema.properties[field.name][\"x-type\"] == \"number\") {\r\n val = 0;\r\n } else if (this.schema.properties[field.name][\"x-display\"] == \"v-cc\") {\r\n val = \"\";\r\n } else {\r\n val = \"(No \" + title + \")\";\r\n }\r\n return val;\r\n },\r\n sortedDraggedObjects(item) {\r\n let sortedObjects = (this.droppedObjects || [])\r\n .filter(f => {\r\n return (\r\n f[this.droppedObjectFilterProperty] &&\r\n f[this.droppedObjectFilterProperty]._id == item._id\r\n );\r\n })\r\n .sort((a, b) => {\r\n const aValue = eval(`a.${this.droppedObjectsSortProperty}`) || 0;\r\n const bValue = eval(`b.${this.droppedObjectsSortProperty}`) || 0;\r\n return aValue - bValue;\r\n });\r\n if (!sortedObjects.length) sortedObjects = [{}];\r\n return sortedObjects;\r\n },\r\n getDefaultDataObject() {\r\n if (!this.originalRecords.length && this.defaultDataObject) {\r\n axios\r\n .post(this.serverURL + \"/get_data\", this.defaultDataObject, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n var data = response.data;\r\n this.originalRecords = data.model;\r\n this.table = this.originalRecords;\r\n })\r\n .catch(r => {\r\n console.log(r);\r\n });\r\n }\r\n },\r\n getData() {\r\n var that = this;\r\n\r\n if (this.editData && this.editData.length) {\r\n this.table = this.editData;\r\n this.itemsCount = this.editData.length;\r\n\r\n if (!this.alwaysUpdate) {\r\n this.getFreshData = false;\r\n }\r\n } else if (\r\n this.vModel &&\r\n Array.isArray(this.vModel)\r\n // &&\r\n // this.vModel.length\r\n ) {\r\n this.originalRecords = this.vModel;\r\n this.table = this.originalRecords;\r\n if (\r\n !this.table.length &&\r\n !this.getFreshData &&\r\n this.data_object.schema.default_values\r\n ) {\r\n this.originalRecords = this.data_object.schema.default_values;\r\n this.table = this.originalRecords;\r\n this.getDefaultDataObject();\r\n }\r\n } else if (this.data_object && this.data_object.model) {\r\n this.table = this.data_object.model;\r\n if (!Array.isArray(this.data_object.model)) {\r\n this.table = [];\r\n }\r\n }\r\n if (this.table.length) {\r\n if (!this.itemsCount) {\r\n this.itemsCount = this.table.length;\r\n }\r\n this.table.forEach(r => {\r\n if (r && !r._id) {\r\n r._id = fun.guid();\r\n }\r\n });\r\n }\r\n if (this.beforeGetData) {\r\n this.beforeGetData(this.data_object);\r\n }\r\n\r\n if (this.getFreshData) {\r\n this.loadFromDb();\r\n } else {\r\n this.getTableProperties(this.data_object);\r\n if (this.singleSelect && !this.selected.length) {\r\n this.selected.push(this.table[0]);\r\n }\r\n this.doTabs(this.currentFilter);\r\n this.getGroupBy();\r\n this.getDefaultDataObject();\r\n this.getUploadFields();\r\n\r\n this.addTableKey = !this.addTableKey;\r\n }\r\n this.getCalculatedFields();\r\n if (this.initialData && this.groupBy) {\r\n var groupBy = that.groupBy;\r\n this.initialData.forEach((d, i) => {\r\n var groupExist = that.table.filter(c => {\r\n return d[groupBy] == c[groupBy] && !c._id;\r\n });\r\n if (!groupExist.length && !this.editedItem) {\r\n var r = {};\r\n r[groupBy] = d[groupBy];\r\n that.table.push(r);\r\n }\r\n });\r\n }\r\n\r\n this.formObject.schema = this.schema;\r\n this.formObject.model = this.model;\r\n if (this.formModel) {\r\n this.formModel[this.k] = this.table;\r\n // this.formModel[this.k] = this.table;\r\n }\r\n if (this.data_object && this.data_object.schema) {\r\n this.expandedObjects = fun.getObjects(\r\n this.data_object.schema.properties,\r\n \"in_expand\",\r\n true\r\n );\r\n }\r\n if (this.schema[\"v-bind\"] && this.schema[\"v-bind\"].sort) {\r\n var sort = this.schema[\"v-bind\"].sort;\r\n this.sortTable(sort);\r\n }\r\n if (!this.originalRecords.length) {\r\n this.originalRecords = fun.clone(this.table);\r\n }\r\n },\r\n hideCtl(c) {\r\n // console.log(c);\r\n if (c.hideIf) {\r\n var p = this.formModel;\r\n return eval(c.hideIf);\r\n }\r\n return false;\r\n },\r\n resetNewRow() {\r\n this.errorMessage = \"\";\r\n this.table.splice(0, 1);\r\n },\r\n selectCtl(e) {\r\n console.log(e);\r\n },\r\n sortTable(sort) {\r\n this.table.sort((a, b) => {\r\n return a[sort] - b[sort];\r\n });\r\n },\r\n getFilterParams(obj) {\r\n if (obj.filterTabs) {\r\n this.filterItems = obj.filterTabs;\r\n }\r\n },\r\n autoAssign() {\r\n var wasAssigned = false;\r\n this.table.forEach((r, i) => {\r\n Object.keys(this.schema.properties).forEach(k => {\r\n if (this.schema.properties[k].autoAssign && !r[k]) {\r\n r[k] = i + 1;\r\n if (this.schema.properties[k].prefix) {\r\n var prefix = eval(this.schema.properties[k].prefix);\r\n r[k] = prefix + \"-\" + r[k];\r\n }\r\n\r\n wasAssigned = true;\r\n }\r\n });\r\n });\r\n if (wasAssigned) {\r\n this.submit();\r\n }\r\n },\r\n isNewGroup(prop) {\r\n // console.log(prop);\r\n var displayGroup = false;\r\n if (typeof prop[\"group\"] == \"string\") {\r\n if (!this.prevGroup || this.prevGroup != prop[\"group\"]) {\r\n displayGroup = true;\r\n }\r\n }\r\n if (typeof prop[\"group\"] == \"object\") {\r\n if (!this.prevGroup || this.prevGroup._id != prop[\"group\"]._id) {\r\n displayGroup = true;\r\n }\r\n }\r\n // this.prevGroup = prop[\"group\"];\r\n return displayGroup;\r\n },\r\n getUploadFields() {\r\n this.uploadFields = [];\r\n Object.keys(this.schema.properties).forEach(p => {\r\n if (this.schema.properties[p].upload) {\r\n if (!this.schema.properties[p].upload_fields) {\r\n this.uploadFields.push(p);\r\n } else {\r\n this.schema.properties[p].upload_fields.forEach(u => {\r\n this.uploadFields.push(u);\r\n });\r\n }\r\n }\r\n });\r\n if (this.uploadFields.length) {\r\n this.hasUpload = true;\r\n this.toolbarKey = !this.toolbarKey;\r\n this.uploadFieldsTitle =\r\n this.uploadFieldsInitialTitle + \" \" + this.uploadFields.join(\", \");\r\n }\r\n },\r\n initTable(data) {\r\n this.initEdited();\r\n var that = this;\r\n if (!this.schema) {\r\n return;\r\n }\r\n\r\n if (\r\n !this.table ||\r\n !this.table.length ||\r\n (data && data.model && data.model.length)\r\n ) {\r\n if (data.model && data.model.length) {\r\n this.table = data.model;\r\n } else if (data.table && data.table.length) {\r\n this.table = data.table;\r\n } else {\r\n this.table = [];\r\n }\r\n }\r\n if (data.total_records && this.itemsPerPageEdited) {\r\n this.pageCount = Math.ceil(\r\n data.total_records / this.itemsPerPageEdited\r\n );\r\n this.itemsLength = data.total_records;\r\n this.pageStart = 1 + this.itemsPerPageEdited * (this.currentPage - 1);\r\n this.pageStop = this.pageStart + this.itemsPerPageEdited - 1;\r\n if (this.pageStop > data.total_records) {\r\n this.pageStop = data.total_records;\r\n }\r\n // this.currentPage += 1;\r\n }\r\n var table = this.table;\r\n this.schema = data.schema;\r\n this.getUploadFields();\r\n\r\n if (data.table && !this.editData) {\r\n this.table = data.table;\r\n if (this.dList) {\r\n this.editData = this.table;\r\n }\r\n } else {\r\n this.table = table;\r\n }\r\n\r\n this.groupBy = data.groupBy || [];\r\n this.headers = data.headers;\r\n\r\n this.getDefaults();\r\n\r\n if (this.ajustTableSchema) {\r\n this.ajustTableSchema(this);\r\n }\r\n\r\n this.getAllEditable();\r\n if (this.dExcel) {\r\n this.excelKey = !this.excelKey;\r\n }\r\n try {\r\n this.filterHeaders();\r\n } catch (error) {\r\n //\r\n }\r\n\r\n try {\r\n this.getColumns();\r\n } catch (error) {\r\n //\r\n }\r\n\r\n this.setTotals();\r\n // this.getCalculatedFields();\r\n if (this.singleSelect && !this.selected.length && !this.getFreshData) {\r\n this.selected.push(this.table[0]);\r\n }\r\n if (this.selectedId) {\r\n var selRec;\r\n this.table.forEach((r, i) => {\r\n if (r._id == this.selectedId) {\r\n selRec = i;\r\n }\r\n });\r\n this.selected.push(this.table[selRec]);\r\n }\r\n\r\n if (data.schema && data.schema[\"v-bind\"]) {\r\n var vBind = data.schema[\"v-bind\"];\r\n Object.keys(vBind).forEach(k => {\r\n that[k] = vBind[k];\r\n });\r\n this.tableEditRow = this.editRow;\r\n\r\n if (vBind.filterTabsFn) {\r\n this.filterTabsFn = vBind.filterTabsFn;\r\n // if (vBind.initialHideHeaders) {\r\n // vBind.initialHideHeaders.forEach((h) => {\r\n // this.computedHeaders[h].hidden = true;\r\n // });\r\n // }\r\n this.doTabs(this.currentFilter);\r\n }\r\n if (\r\n (vBind.filterTabs && !this.filteredTabItems) ||\r\n !this.filteredTabItems.length\r\n ) {\r\n this.originalRecords = table;\r\n this.getFilterParams(vBind);\r\n } else {\r\n this.autoAssign();\r\n }\r\n }\r\n\r\n if (this.editRecord) {\r\n this.editRecord(this);\r\n }\r\n\r\n if (\r\n this.schema &&\r\n this.schema.properties &&\r\n this.schema.properties[\"color\"]\r\n ) {\r\n if (!this.model.length) {\r\n this.getDefaultColor();\r\n }\r\n }\r\n if (this.sortBy) {\r\n fun.sortArrayOfObjectsByProperties(this.table, this.sortBy);\r\n }\r\n this.originalRecords = fun.clone(this.table);\r\n this.tableReady = true;\r\n this.propertyList = [];\r\n Object.keys(this.schema.properties).forEach(k => {\r\n this.propertyList.push(k);\r\n });\r\n\r\n this.$root.$emit(\"initTable\", this);\r\n },\r\n convertAssistantQry() {\r\n if (this.assistantQry) {\r\n return fun.mongoToSqlLike(this.assistantQry);\r\n }\r\n },\r\n resetAssistantQry() {\r\n this.assistantQry = null;\r\n this.itemsCount = 0;\r\n this.qryExplanation = \"\";\r\n\r\n this.loadFromDb();\r\n },\r\n buildCustomQueryPrompt() {\r\n // var prompt =\r\n // \"Based on the description build a mongo query for collection called 'shipments' that have fields \" +\r\n // this.propertyList.toString() +\r\n // \". Only use those properties. Find fields logically. Do not query fields that not requested in user prompt. Use lower case for strings. Provide the response in JSON format.\";\r\n this.qryExplanation = \"\";\r\n this.assistantVBind.customInstructions = this.assistant_instructions;\r\n this.assistantModel = true;\r\n\r\n return prompt;\r\n },\r\n initEdited(id) {\r\n if (this.noInitEdit) {\r\n return;\r\n }\r\n if (\r\n !id &&\r\n this.$route.params.id &&\r\n fun.isNumericOrObjectId(this.$route.params.id)\r\n ) {\r\n id = this.$route.params.id;\r\n }\r\n if (\r\n !id &&\r\n this.$route.params.qry &&\r\n fun.isNumericOrObjectId(this.$route.params.qry)\r\n ) {\r\n id = this.$route.params.qry;\r\n }\r\n if (id == 0) {\r\n this.editCurrentRecord();\r\n return;\r\n }\r\n if (!id) {\r\n return;\r\n }\r\n\r\n var idField = this.idField || \"_id\";\r\n if (this.$route.path.includes(\"storage\")) {\r\n idField = \"storage_id\";\r\n }\r\n this.editedId = id;\r\n if (this.maxRecords) {\r\n this.data_object.qry = { _id: this.editedId };\r\n }\r\n this.tableEditRow = this.editRow;\r\n if (id && this.tableEditRow && !this.$route.path.includes(\"settings\")) {\r\n if (\r\n !this.$route.path.includes(\"storage\") &&\r\n !this.$route.path.includes(\"customers\")\r\n ) {\r\n this.editedId = id.toString().split(\":\")[0];\r\n // } else {\r\n }\r\n if (this.loadFromDb) {\r\n this.qry = {};\r\n this.qry[idField] = this.editedId;\r\n }\r\n\r\n // if (!this.maxRecords) {\r\n // var curRec = this.originalRecords.filter((r) => {\r\n // return r[idField] == this.editedId;\r\n // });\r\n // if (this.getFreshData && curRec[0]) {\r\n // this.editCurrentRecord(curRec[0]);\r\n // }\r\n // // } else {\r\n\r\n // // axios\r\n // // .post(this.serverURL + \"/get_data\", this.data_object, {\r\n // // withCredentials: true,\r\n // // })\r\n // // .then((response) => {\r\n // // var data = response.data;\r\n // // this.editCurrentRecord(data.model[0]);\r\n // // });\r\n // //\r\n // }\r\n }\r\n },\r\n getDefaultColor() {\r\n var edited = false;\r\n this.table.forEach(t => {\r\n if (!t[\"color\"]) {\r\n t[\"color\"] = \"#\" + fun.randomColor();\r\n edited = true;\r\n }\r\n });\r\n if (edited) {\r\n this.submit();\r\n }\r\n },\r\n doTabs(curFilter) {\r\n var that = this;\r\n if (this.filterTabs) {\r\n // this.currentFilter = 0;\r\n this.doTabFilter();\r\n }\r\n if (this.filterTabsFn) {\r\n if (typeof this.filterTabsFn == \"string\") {\r\n var capitalize = fun.capitalize;\r\n var addModel = this.additionalModel;\r\n var parTable = this.parTable;\r\n var sortObjects = fun.sortObjects;\r\n var table = this.table;\r\n var schema = this.schema;\r\n var prop = schema.properties;\r\n try {\r\n this.currentFilter = -1;\r\n this.filterItems = eval(this.filterTabsFn);\r\n\r\n // this.currentFilter = curFilter || 0;\r\n // this.doTabFilter();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n } else if (this.filterTabsFn[\"v-bind\"]) {\r\n var filterTabVBind = this.filterTabsFn[\"v-bind\"];\r\n var par = this.parentObject;\r\n this.initialHideHeaders = filterTabVBind.initialHideHeaders;\r\n\r\n if (filterTabVBind[\"v-if\"] && !eval(filterTabVBind[\"v-if\"])) {\r\n return;\r\n }\r\n var d = {\r\n object_name: filterTabVBind.objName,\r\n all_records: true,\r\n qry: filterTabVBind.qry\r\n };\r\n if (filterTabVBind.permittedQry) {\r\n try {\r\n this.$root.store.permittedActions.forEach(permittedActions => {\r\n if (eval(filterTabVBind.permittedQry)) {\r\n var qry = eval(filterTabVBind.permittedQry).replaceAll(\r\n \"`\",\r\n '\"'\r\n );\r\n filterTabVBind.qry = JSON.parse(qry);\r\n }\r\n });\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n\r\n axios\r\n .post(this.serverURL + \"/get_data\", d, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n var data = response.data;\r\n this.filterItems = [];\r\n // try {\r\n // data.model = fun.sortObjectByKey(data.model, \"sort\");\r\n // } catch (error) {\r\n // //\r\n // }\r\n\r\n data.model.forEach(m => {\r\n var options = filterTabVBind.options;\r\n if (!options) {\r\n try {\r\n options = eval(filterTabVBind.optionFn);\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n\r\n this.filterItems.push({\r\n caption: fun.capitalize(m[filterTabVBind.caption]),\r\n value: m[filterTabVBind.value],\r\n name: filterTabVBind.name,\r\n color: m[filterTabVBind.color],\r\n filterProperty: filterTabVBind.filterProperty,\r\n options: options\r\n });\r\n });\r\n if (filterTabVBind.addToListFrom) {\r\n that.table.forEach(dt => {\r\n var exist = that.filterItems.filter(r => {\r\n return r.value == dt[filterTabVBind.addToListFrom];\r\n });\r\n if (!exist.length && dt[filterTabVBind.addToListFrom]) {\r\n that.filterItems.push({\r\n caption: dt[filterTabVBind.addToListFrom],\r\n value: dt[filterTabVBind.addToListFrom],\r\n // name: filterTabVBind.name,\r\n // color: m[filterTabVBind.color],\r\n filterProperty: filterTabVBind.filterProperty\r\n });\r\n }\r\n });\r\n }\r\n fun.sortObjects(\r\n this.filterItems,\r\n filterTabVBind.sort || filterTabVBind.caption\r\n );\r\n // console.log(fun.roughSizeOfObject(data));\r\n this.currentFilter = 0;\r\n this.getFilterCombo();\r\n this.checkTabOptions();\r\n this.searchBarKey = !this.searchBarKey;\r\n })\r\n .catch(r => {\r\n console.log(r);\r\n });\r\n } else {\r\n this.filterItems = this.filterTabsFn();\r\n this.currentFilter = 0;\r\n this.doTabFilter();\r\n }\r\n }\r\n if (this.limitTabsToData) {\r\n this.limitTabs();\r\n }\r\n this.getFilterCombo();\r\n },\r\n limitTabs() {\r\n var that = this;\r\n axios\r\n .post(\r\n this.serverURL + \"/get_data\",\r\n {\r\n object_name: this.limitObject.object_name,\r\n all_records: true\r\n },\r\n {\r\n withCredentials: true\r\n }\r\n )\r\n .then(response => {\r\n var arr = response.data.model;\r\n if (that.filterItems.length) {\r\n var groupped = fun.groupBy(arr, this.filterItems[0].name);\r\n var included = Object.keys(groupped);\r\n if (this.limitObject.additional_value) {\r\n included.push(this.limitObject.additional_value);\r\n }\r\n\r\n that.filterItems = that.filterItems.filter(item =>\r\n included.includes(item.value)\r\n );\r\n }\r\n\r\n // console.log(groupped);\r\n });\r\n },\r\n toggleBreakpoint() {\r\n this.menuModel = !this.menuModel;\r\n if (!this.breakpoint || this.breakpoint == \"0\") {\r\n this.breakpoint = 600;\r\n document\r\n .getElementsByClassName(\"v-data-table\")[0]\r\n .classList.add(\"mobile-list\");\r\n // this.mobileList = \"mobile-list\";\r\n } else {\r\n this.breakpoint = 0;\r\n document\r\n .getElementsByClassName(\"v-data-table\")[0]\r\n .classList.remove(\"mobile-list\");\r\n // this.mobileList = \"\";\r\n }\r\n },\r\n showComponent(c, r) {\r\n var comp = this.schema.properties[c];\r\n // console.log(comp);\r\n var d = this.displayIf(r, comp);\r\n\r\n return d;\r\n },\r\n getSaveTitle(c) {\r\n var comp = this.schema.properties[c];\r\n return comp.save_title || \"Apply\";\r\n },\r\n getSaveFunction(c) {\r\n var comp = this.schema.properties[c];\r\n return comp.save_function;\r\n },\r\n displayIf(r, value) {\r\n if (value[\"v-if-not-parameter\"] && r[value[\"v-if-not-parameter\"]]) {\r\n return false;\r\n }\r\n // if (value[\"v-if-top-parent\"]) {\r\n // var topParent = value[\"v-if-top-parent\"];\r\n\r\n // var parent = fun.getParentByProperty(this, topParent.property);\r\n // var display =\r\n // parent.model[topParent.parameter] &&\r\n // parent.model[topParent.parameter].length > 0;\r\n // return display;\r\n // }\r\n var par = value[\"v-if-parameter\"]\r\n ? value[\"v-if-parameter\"].name || value[\"v-if-parameter\"]\r\n : \"\";\r\n if (value[\"v-if-value\"] || value[\"v-if-parent\"]) {\r\n return (\r\n fun.toArrayOfString(value[\"v-if-value\"]).includes(r[par]) ||\r\n value[\"v-if-value\"] == r[par] ||\r\n (value[\"v-if-value\"].toString().indexOf(\"undefined\") > -1 &&\r\n !r[par] &&\r\n !value[\"v-if-parent\"])\r\n );\r\n }\r\n if (\r\n value[\"v-if-parameter\"] &&\r\n !value[\"v-if-value\"] &&\r\n !value[\"v-if-not-value\"]\r\n ) {\r\n var params = par.split(\",\");\r\n var incl = false;\r\n params.forEach(p => {\r\n if (r[p]) {\r\n incl = true;\r\n }\r\n });\r\n return incl;\r\n }\r\n if (value[\"v-if-not-value\"]) {\r\n // par = value[\"v-if-parameter\"].name || value[\"v-if-parameter\"];\r\n return value[\"v-if-not-value\"] == \"true\"\r\n ? false\r\n : !fun.toArrayOfString(value[\"v-if-not-value\"]).includes(r[par]) &&\r\n !r[value[\"v-if-not-value\"]];\r\n }\r\n\r\n return true;\r\n },\r\n updateHeight(doFullHeight) {\r\n // const parentHeight =\r\n // window.innerHeight - this.$refs.parentContainer.offsetTop;\r\n // if (this.isFullScreen || doFullHeight) {\r\n // this.wrapHeight = parentHeight - 200 + \"px\";\r\n // return;\r\n // }\r\n this.$nextTick(() => {\r\n if (\r\n // this.$refs.parentContainer &&\r\n this.$refs.outerScroll &&\r\n this.$refs.tableWrap\r\n ) {\r\n const topElementY = this.$refs.outerScroll.getBoundingClientRect()\r\n .top;\r\n const topElementHeight = this.$refs.outerScroll.offsetHeight;\r\n // this.wrapHeight =\r\n // window.innerHeight -\r\n // topElementY -\r\n // 2 * topElementHeight +\r\n // \"px !important\";\r\n // this.$root.$emit(\"tableHeightUpdated\", this);\r\n\r\n // this.$refs.tableWrap.style.height = `${newHeight}px !important`;\r\n // this.$refs.tableWrap.style.maxHeight = `${newHeight}px !important`;\r\n }\r\n });\r\n },\r\n getFilterCombo() {\r\n if (this.filterItems && this.filterItems.length && this.showFilterCombo) {\r\n // a.slice().unshift(0)\r\n // fun.prepend(this.comboFilterItems);\r\n\r\n // if (!this.hideAllTabFilter && !this.hideAllInCombo) {\r\n // this.comboFilterItems.push({\r\n // caption: \"(All \" + fun.capitalize(this.tableName) + \")\",\r\n // value: \"\",\r\n // });\r\n // }\r\n fun.sortArrayOfObjectsByProperties(this.filterItems, [\"value\"]);\r\n this.filterItems.forEach(c => {\r\n this.comboFilterItems.push(c);\r\n });\r\n // this.comboFilterItems = fun.clone(this.filterItems);\r\n\r\n // this.comboCurrentFilter = this.filterItems[0];\r\n }\r\n },\r\n getTextDialogIcon(slot, item) {\r\n if (slot.icon) {\r\n return slot.icon;\r\n } else if (slot.iconFn) {\r\n var i = item;\r\n return eval(slot.iconFn);\r\n }\r\n },\r\n getDefaults(model) {\r\n // console.log(this.schema);\r\n var that = this;\r\n if (!model) {\r\n model = that.model;\r\n }\r\n if (this.schema && this.schema.properties) {\r\n var properties = this.schema.properties;\r\n var keys = Object.keys(properties);\r\n keys.forEach(function(key) {\r\n if (properties[key].default_value) {\r\n if (!model[key]) {\r\n model[key] = properties[key].default_value;\r\n if (\r\n properties[key].default_value.function &&\r\n that[properties[key].default_value.function]\r\n ) {\r\n model[key] = that[properties[key].default_value.function]();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n return model;\r\n\r\n // console.log(this.model);\r\n },\r\n prepareEditedField(ed) {\r\n if (ed) {\r\n if (!ed[\"v-bind\"]) {\r\n ed[\"v-bind\"] = {};\r\n }\r\n ed[\"hideTitle\"] = !ed.outlined;\r\n ed[\"v-bind\"].class = \"mb-2 mt-0 pa-0\";\r\n\r\n if (ed[\"x-type\"] == \"number\") {\r\n ed[\"v-bind\"].style = \"max-width: 75px;\";\r\n } else {\r\n ed[\"v-bind\"].style = \"white-space:nowrap;width:100%;\";\r\n }\r\n return ed;\r\n }\r\n },\r\n deleteCustomQry(item, index) {\r\n var that = this;\r\n this.$root.$confirm\r\n .open(\"Delete\", \"Confirm deleting \" + item.caption + \"?\", {\r\n color: \"red\"\r\n })\r\n .then(confirm => {\r\n if (confirm) {\r\n var data = {\r\n object_name: \"custom_qry\",\r\n ids: [item._id]\r\n };\r\n\r\n axios\r\n .post(this.serverURL + \"/delete_records\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n that.additionalModel.custom_qry.splice(index, 1);\r\n that.successMessage = response.data;\r\n });\r\n }\r\n });\r\n },\r\n getAllEditable() {\r\n var that = this;\r\n if (!this.schema) {\r\n return;\r\n }\r\n var schema = this.schema.properties\r\n ? this.schema\r\n : this.data_object.schema;\r\n if (schema.properties) {\r\n var keys = Object.keys(schema.properties);\r\n keys.forEach(function(r) {\r\n var ed = {\r\n name: r\r\n };\r\n\r\n if (\r\n // !this.$vuetify.breakpoint.smAndDown &&\r\n (that.allEditable ||\r\n (that.editable && that.editable.includes(r))) &&\r\n (!schema.properties[r][\"calculate\"] ||\r\n schema.properties[r][\"editable\"]) &&\r\n !schema.properties[r][\"readonly\"]\r\n ) {\r\n ed.directEdit =\r\n schema.properties[r][\"x-display\"] != \"textarea\"\r\n ? (that.directEdit &&\r\n schema.properties[r].directEdit != false) ||\r\n (!that.directEdit && schema.properties[r].directEdit == true)\r\n : false;\r\n if (!schema.properties[r][\"x-display\"]) {\r\n ed.ctl = \"v-text-field\";\r\n } else {\r\n ed.ctl = schema.properties[r][\"x-display\"];\r\n ed[\"v-bind\"] = schema.properties[r][\"v-bind\"];\r\n }\r\n ed[\"x-type\"] = schema.properties[r][\"x-type\"];\r\n\r\n if (ed.directEdit != false || that.directEdit) {\r\n ed = that.prepareEditedField(ed);\r\n }\r\n // if (ed[\"v-bind\"]) {\r\n if (\r\n (that.editable && !ed[\"v-bind\"]) ||\r\n !ed[\"v-bind\"].noEditInTable\r\n ) {\r\n that.editable.push(ed);\r\n } else {\r\n if (!ed[\"v-bind\"] || ed[\"v-bind\"].capitalizeText) {\r\n that.capitalizable.push(r);\r\n }\r\n }\r\n\r\n // }\r\n\r\n // }\r\n } else if (\r\n (schema.properties[r][\"v-bind\"] &&\r\n (schema.properties[r][\"v-bind\"][\"capitalizeText\"] ||\r\n schema.properties[r][\"v-bind\"][\"returnObject\"])) ||\r\n schema.properties[r].template\r\n ) {\r\n if (that.capitalizable || schema.properties[r].template) {\r\n that.capitalizable.push(r);\r\n }\r\n }\r\n });\r\n }\r\n },\r\n getEditedSchema() {\r\n var that = this;\r\n var field = this.editable.filter(e => {\r\n return e.name == that.editedItem.item;\r\n })[0];\r\n return this.getSchema(field);\r\n },\r\n removeTab(i) {\r\n this.edited = 0;\r\n this.editedTabs.splice(i, 1);\r\n this.childEdited = false;\r\n this.disableParentEdit(false);\r\n },\r\n getTableProperties(data_object) {\r\n if (!data_object) {\r\n return;\r\n }\r\n var that = this;\r\n var headers = this.headers.length\r\n ? this.headers\r\n : this.data_object.headers;\r\n\r\n var data = data_object.schema;\r\n if (!data) {\r\n return;\r\n }\r\n var get_table = data.get_table;\r\n if (!get_table) {\r\n get_table = \"all\";\r\n }\r\n var filter = get_table == \"all\" ? \"\" : get_table.split(\",\");\r\n var properties = data.properties;\r\n if (!properties) {\r\n return;\r\n }\r\n var keys = Object.keys(properties);\r\n\r\n try {\r\n that.table.forEach(r => {\r\n // console.log(r, i);\r\n Object.keys(r).forEach(k => {\r\n var schema = data.properties[k];\r\n\r\n if (schema && schema[\"x-display\"] == \"v-date-field\") {\r\n r[k] = fun.formatDate(r[k]);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n this.originalRecords = fun.clone(this.table);\r\n var groupBy = \"\";\r\n if (!headers) {\r\n headers = [];\r\n }\r\n //\r\n keys.forEach(function(key) {\r\n if (!filter || filter.indexOf(key) == -1) {\r\n var p = properties[key];\r\n var header = {};\r\n header.text = p.title;\r\n header.value = key;\r\n header.hidden = p.hidden;\r\n header.splitTitle = p.splitTitle;\r\n // header.groupable = p.groupable;\r\n\r\n if (!fun.InArray(headers, \"value\", key)) {\r\n headers.push(header);\r\n }\r\n\r\n if (p.groupBy) {\r\n groupBy = key;\r\n }\r\n }\r\n });\r\n\r\n this.groupBy = groupBy || [];\r\n if (!this.headers.length) {\r\n this.headers = headers;\r\n }\r\n // this.initTable();\r\n\r\n this.filterHeaders();\r\n this.getAllEditable();\r\n // this.getCalculatedFields();\r\n if (!Object.keys(that.schema).length) {\r\n that.schema = that.data_object.schema;\r\n }\r\n try {\r\n if (typeof Object.keys(that.schema.properties).forEach === \"function\") {\r\n Object.keys(that.schema.properties).forEach(p => {\r\n that.schema.properties[p][\"full-width\"] = true;\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n getCurrentDateTime() {\r\n return fun.getCurrentDateTime(true);\r\n },\r\n getCurrentDate() {\r\n return fun.getCurrentDateTime();\r\n },\r\n getCurrentUser() {\r\n return this.$root.store.userData.email;\r\n },\r\n updateModel(m, isNew) {\r\n // console.log(m);\r\n this.save(m, !isNew, true);\r\n },\r\n itemExpanded(value) {\r\n var that = this;\r\n if (this.expandable) {\r\n if (that.expanded.includes(value)) {\r\n that.transitioned.splice(that.transitioned.indexOf(value), 1);\r\n setTimeout(function() {\r\n that.expanded.splice(that.expanded.indexOf(value), 1);\r\n }, 100);\r\n } else {\r\n that.expanded.push(value);\r\n setTimeout(function() {\r\n that.transitioned.push(value);\r\n }, 100);\r\n }\r\n }\r\n },\r\n handleClick(value) {\r\n var that = this;\r\n if (this.rowClick && !this.selected.length) {\r\n this.rowClick(value);\r\n }\r\n\r\n if (this.tableInsertable) {\r\n if (!value._id) {\r\n this.insertNewRow = true;\r\n } else {\r\n this.insertNewRow = false;\r\n }\r\n }\r\n\r\n //\r\n },\r\n\r\n setTotals() {\r\n var tot = this.getTotal ? this.getTotal(this) : \"\";\r\n var data = {};\r\n if (tot) {\r\n var model = {};\r\n data.total = tot;\r\n model[tot.key] = tot.value;\r\n var data_object = this.data_object;\r\n if (data_object.parent_object && data_object.parent_object.object_id) {\r\n data.model = model;\r\n }\r\n }\r\n\r\n this.totals = data;\r\n },\r\n getTemplate(m, field) {\r\n var htmlDecode = function(input) {\r\n var doc = new DOMParser().parseFromString(input, \"text/html\");\r\n return doc.documentElement.textContent;\r\n };\r\n // if (\r\n // this.schema[\"v-bind\"] &&\r\n // (!this.schema[\"v-bind\"].addField ||\r\n // this.schema[\"v-bind\"].addField != field.name)\r\n // ) {\r\n var that = this;\r\n var r = m;\r\n var par = this.parentObject;\r\n var addModel = this.additionalModel;\r\n var curRec = m[field.name];\r\n // var formatDate = fun.formatDate;\r\n var capitalize = fun.capitalize;\r\n var parTable = this.parTable;\r\n var table = this.table;\r\n var parentModel = this.parentModel;\r\n var sum = function(r, formula) {\r\n return fun.sum(r, formula);\r\n };\r\n var convertDateFormat = fun.convertDateFormat;\r\n var formatDate = fun.formatDate;\r\n var portal = this.$root.portal_id;\r\n var retValue = \"\";\r\n // if (\r\n // that.schema.properties[field.name] &&\r\n // that.schema.properties[field.name].template\r\n // ) {\r\n // console.log(that.schema.properties[field.name].template);\r\n // }\r\n // if (m.crew_name == \"BEDDELEEM\") {\r\n // console.log(m);\r\n // }\r\n // if (r.shipment_id == 564595) {\r\n // console.log(\"shipment_id\", r.shipment_id);\r\n // }\r\n // if (field.name == \"order_date_time\" && r.order_date_time) {\r\n // console.log(r.order_date_time);\r\n // }\r\n try {\r\n if (that.schema.properties[field.name].template) {\r\n retValue = eval(that.schema.properties[field.name].template);\r\n }\r\n } catch (error) {\r\n retValue = \"\";\r\n // console.log(error);\r\n }\r\n try {\r\n retValue = retValue.toString();\r\n } catch (error) {\r\n //\r\n }\r\n return retValue;\r\n // } else {\r\n // return m[field.name];\r\n // }\r\n },\r\n filterHeaders() {\r\n var that = this;\r\n\r\n if (this.headers && this.headers.length) {\r\n if (\r\n // this.editRow &&\r\n !this.headers.filter(h => {\r\n return h.value == \"actions\";\r\n }).length\r\n\r\n // ||\r\n // this.actionCommand\r\n ) {\r\n this.headers.push({\r\n text: \"\",\r\n value: \"actions\",\r\n sortable: false,\r\n groupable: false\r\n });\r\n }\r\n // if (this.actionCommand) {\r\n // this.actionCommand.forEach((a) => {\r\n // var addCommand = true;\r\n // if (a.displayIf) {\r\n // var isMobile = this.$root.isMobile;\r\n // try {\r\n // addCommand = eval(a.displayIf);\r\n // } catch (error) {\r\n // //\r\n // }\r\n // }\r\n // if (addCommand && !this.headers.some((element) => element.text === a.text)) {\r\n // this.headers.push({\r\n // text: a.text,\r\n // value: \"actions\",\r\n // sortable: false,\r\n // groupable: false,\r\n // });\r\n // }\r\n // });\r\n // }\r\n if (\r\n this.expandable &&\r\n !this.headers.filter(h => {\r\n return h.value == \"data-table-expand\";\r\n }).length\r\n ) {\r\n this.headers.push({\r\n text: \"\",\r\n value: \"data-table-expand\",\r\n sortable: false,\r\n groupable: false\r\n });\r\n }\r\n\r\n if (this.isGoToButton) {\r\n this.headers.push({\r\n text: \"GoTo\",\r\n value: \"goto\",\r\n sortable: false,\r\n groupable: false\r\n });\r\n }\r\n var parentModel = this.parentModel;\r\n var formModel = this.formModel;\r\n var par = fun.getParentByProperty(this, this.parentProperty);\r\n var splitHeader = [];\r\n var splitedHeader = null;\r\n var splitIndex = -1;\r\n that.headers.forEach((h, i) => {\r\n if (\r\n h.value != \"data-table-expand\" &&\r\n h.value &&\r\n h.value != \"actions\"\r\n ) {\r\n h.text = h.text || fun.capitalize(h.value);\r\n }\r\n var schema = that.schema.properties\r\n ? that.schema\r\n : that.data_object.schema;\r\n try {\r\n h.hidden =\r\n (schema.properties[h.value] &&\r\n schema.properties[h.value].hideInTable) ||\r\n (schema.properties[h.value].hideInTableFn &&\r\n eval(schema.properties[h.value].hideInTableFn));\r\n } catch (error) {\r\n // console.log(\"hide in table error\", h.value);\r\n // h.hidden = true;\r\n //\r\n }\r\n\r\n try {\r\n h.noCustomer = schema.properties[h.value].noCustomer;\r\n } catch (error) {\r\n //\r\n }\r\n try {\r\n if (h.text.split(\";\").length > 1) {\r\n splitHeader = h.text.split(\";\");\r\n splitedHeader = fun.clone(h);\r\n splitIndex = i;\r\n }\r\n } catch (error) {\r\n //\r\n }\r\n\r\n // if (h.filter) {\r\n // h.filter = eval(h.filter);\r\n // }\r\n });\r\n\r\n that.computedHeaders = this.headers.filter(function(header) {\r\n if (!that.columnTool) {\r\n header.show = true;\r\n }\r\n\r\n return (\r\n (!that.$root.customerId || !header.noCustomer) &&\r\n (header != \"_id\",\r\n (header.value != \"_id\" &&\r\n header.value != \"_object_id\" &&\r\n !header.hidden &&\r\n (!that.fields_excluded ||\r\n !that.fields_excluded.includes(header.value)) &&\r\n (!that.fields_included ||\r\n that.fields_included.includes(header.value))) ||\r\n header.value == \"actions\" ||\r\n header.value == \"data-table-expand\")\r\n );\r\n });\r\n that.originalHeaders = fun.clone(that.computedHeaders);\r\n that.mobileHeaders = fun.clone(that.computedHeaders);\r\n that.checkHiddenHeaders();\r\n try {\r\n this.getColumns();\r\n } catch (error) {\r\n //\r\n }\r\n // this.computedHeaders.forEach((c) => {\r\n // c.show = true;\r\n // });\r\n console.log(that.computedHeaders);\r\n } else {\r\n return [];\r\n }\r\n },\r\n countVisibleRows() {\r\n if (this.$refs.dTable) {\r\n var rows = this.$refs.dTable.$el\r\n .getElementsByTagName(\"table\")[0]\r\n .getElementsByTagName(\"tr\");\r\n var cnt = 0;\r\n rows.forEach(r => {\r\n if (!r.className.includes(\"v-row-group__header\")) {\r\n cnt += 1;\r\n }\r\n });\r\n return cnt - 1;\r\n }\r\n },\r\n deleteSelected() {\r\n var that = this;\r\n var data = {};\r\n var ids = [];\r\n var id = this.deleteId || \"_id\";\r\n this.selected.forEach(function(d) {\r\n if (d[id]) {\r\n ids.push(d[id]);\r\n that.update.delete.push(d[id]);\r\n }\r\n });\r\n\r\n data.object_name =\r\n this.data_object.object_name_to_update || this.data_object.object_name;\r\n if (data.object_name && data.object_name.startsWith(\"v_\")) {\r\n data.object_name = data.object_name.replace(\"v_\", \"\");\r\n }\r\n data.delete_object_name = this.data_object.delete_object_name;\r\n\r\n data.db_name = this.data_object.db_name;\r\n data.parent_object = this.data_object.parent_object;\r\n data.ids = ids;\r\n data.id_name = id;\r\n data.additional_delete_objects = this.data_object.additional_delete_objects;\r\n\r\n this.$root.$confirm\r\n .open(\"Delete\", \"Confirm deleting \" + ids.length + \" record(s)?\", {\r\n color: \"red\"\r\n })\r\n .then(confirm => {\r\n if (confirm) {\r\n that.data_object.deleted = that.selected;\r\n that.selected.forEach(function(s) {\r\n that.table.forEach(function(r, i) {\r\n if (r[id] == s[id] || !r[id]) {\r\n that.table.splice(i, 1);\r\n }\r\n });\r\n that.originalRecords.forEach(function(r, i) {\r\n if (r[id] == s[id] || !r[id]) {\r\n that.originalRecords.splice(i, 1);\r\n }\r\n });\r\n });\r\n that.setTotals();\r\n that.$root.$emit(\"tableChanged\", that);\r\n if (\r\n (that.getFreshData && !that.data_object.parent_object) ||\r\n that.dList ||\r\n that.data_object.object_name_to_update\r\n ) {\r\n axios\r\n .post(this.serverURL + \"/delete_records\", data, {\r\n withCredentials: true\r\n })\r\n .then(response => {\r\n that.successMessage = response.data;\r\n that.$root.$emit(\"itemsDeleted\", that);\r\n\r\n that.selected = [];\r\n that.listKey = !that.listKey;\r\n });\r\n } else {\r\n if (that.alwaysUpdate) {\r\n that.submit({\r\n delete: true\r\n });\r\n } else {\r\n that.$emit(\"input\", that.originalRecords);\r\n that.$root.$emit(\"itemsDeleted\", that);\r\n\r\n if (this.editedItem) {\r\n this.blankItem(true);\r\n }\r\n // if (this.tableInsertable) {\r\n // this.blankRow();\r\n // }\r\n }\r\n }\r\n }\r\n this.selectDelete = false;\r\n });\r\n },\r\n highlightClickedRow(value) {\r\n const tr = value.target.parentNode;\r\n tr.classList.add(\"highlight\");\r\n },\r\n expandDataObject(item) {\r\n var data_object = {\r\n model: item,\r\n parentModel: this.parentModel,\r\n parModel: this.model,\r\n formModel: this.formModel,\r\n parObject: this.parObject,\r\n parentObject: this.parentObject,\r\n // data_object: this.data_object,\r\n onValueChange: this.onValueChange,\r\n schema: this.data_object\r\n ? this.data_object.schema\r\n : this.getDataObjectFromParent(item),\r\n isExpandRow: true\r\n };\r\n return data_object;\r\n },\r\n getDataObjectFromParent(item) {\r\n var dataObject = this.expandedObjects;\r\n console.log(this.data_object);\r\n },\r\n expandAll() {\r\n if (this.expandable) {\r\n if (!this.allTableExpanded) {\r\n this.expanded = this.table;\r\n this.allTableExpanded = true;\r\n } else {\r\n this.expanded = [];\r\n this.allTableExpanded = false;\r\n }\r\n\r\n // for (let i = 0; i < this.table.length; i += 1) {\r\n // const item = this.table[i];\r\n // this.$set(this.$refs.dTable.expanded, item._id, true);\r\n // }\r\n }\r\n },\r\n\r\n getObject() {\r\n return this;\r\n },\r\n expandRows() {\r\n console.log(this.$refs);\r\n // this.$refs.expandIcon[0].click();\r\n },\r\n refresh() {\r\n // this.$forceUpdate();\r\n this.tableMount();\r\n },\r\n uploadExcel() {\r\n this.upload = !this.upload;\r\n },\r\n\r\n downloadExcel() {\r\n this.errorMessage = \"\";\r\n var that = this;\r\n var data = {\r\n portal_id: \"portal_\" + this.$root.portal_id,\r\n objectName: this.data_object.object_name,\r\n record_id: fun.guid(),\r\n filename: this.data_object.object_name,\r\n // html: html,\r\n host: `${location.protocol}//${location.hostname}:${location.port}`,\r\n // images: d.images,\r\n excel: true,\r\n data: this.table\r\n // headers: this.headers,\r\n };\r\n this.loading = true;\r\n try {\r\n axios\r\n .post(this.serverURL + \"/create_pdf\", data)\r\n .then(response => {\r\n // console.log(response.data);\r\n const url = response.data;\r\n // window.location.href = url;\r\n this.loading = false;\r\n this.xllink = url;\r\n window.open(url, \"_blank\");\r\n // window.open(url, \"_blank\");\r\n })\r\n .catch(function(error) {\r\n console.log(error);\r\n that.errorMessage = error.message;\r\n that.loading = false;\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n getForm(v, itemName) {\r\n if (v.$refs && v.$refs[\"form\"]) {\r\n this.currentForm = v.$refs[\"form\"];\r\n } else {\r\n if (v.$refs && v.$refs[itemName]) {\r\n v.$refs[itemName].forEach(f => {\r\n if (f.$refs[\"form\"]) {\r\n this.currentForm = f.$refs[\"form\"];\r\n } else {\r\n if (f.$refs && f.$refs[itemName].length) {\r\n f.$refs[itemName].forEach(m => {\r\n if (m.$refs) {\r\n this.getForm(m, itemName);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n },\r\n emitDialogSave(item, itemName) {\r\n var formReady = true;\r\n var that = this;\r\n var d = itemName + item._id;\r\n if (itemName) {\r\n this.getForm(this, itemName);\r\n if (this.currentForm) {\r\n formReady = this.currentForm.validate();\r\n }\r\n\r\n if (!formReady) {\r\n return false;\r\n }\r\n }\r\n\r\n this.update.update.push(item);\r\n\r\n // if (this.filterTabs) {\r\n // this.model = fun.clone(this.originalRecords);\r\n // this.model.forEach((m) => {\r\n // if (m._id == item._id) {\r\n // m = item;\r\n // }\r\n // });\r\n // }\r\n\r\n this.$root.$emit(\"tableItemChanged\", {\r\n tbl: that,\r\n item: item,\r\n itemName: itemName\r\n });\r\n\r\n this.getCalculatedFields();\r\n var saveFunction = this.getSaveFunction(itemName);\r\n if (!saveFunction) {\r\n this.$refs[d][0].save();\r\n if (this.alwaysUpdate) {\r\n this.submit();\r\n }\r\n return item[itemName];\r\n } else {\r\n this.$root.$emit(\"saveFunction\", {\r\n tbl: this,\r\n item: item,\r\n editor: this.$refs[d][0]\r\n });\r\n // console.log(saveFunction);\r\n }\r\n },\r\n disableParentEdit(disable, update) {\r\n if (this.k) {\r\n var parent = fun.getParentsByProperty(this.$parent, \"childEdited\");\r\n if (parent.length) {\r\n parent[0].childEdited = disable;\r\n this.parentModel = this.formModel;\r\n if (update) {\r\n parent[0].save(this.parentModel);\r\n }\r\n }\r\n }\r\n },\r\n editCurrentRecord(item, addNew) {\r\n // if (this.formModel) {\r\n // this.childEdited = true;\r\n // }\r\n if (this.addRecordWithLink) {\r\n this.myLinkClick(this.addRecordWithLink);\r\n }\r\n this.editedItem = item;\r\n this.errorMessage = \"\";\r\n this.dialog = true;\r\n this.$root.$emit(\"tableEditRecord\", {\r\n tbl: this,\r\n rec: item\r\n });\r\n this.disableParentEdit(true);\r\n this.isEditedNew = !item;\r\n this.editMode = true;\r\n\r\n if (!item) {\r\n this.dObject.model = fun.clone(this.defaultModel);\r\n // this.isEditedNew = true;\r\n // item = this.addRow();\r\n } else {\r\n this.dObject.model = item;\r\n }\r\n\r\n // if (item) {\r\n\r\n var editExist = this.editedTabs.filter(e => {\r\n return item && e.id == item._id;\r\n });\r\n // if (!addNew) {\r\n if (!editExist || !editExist.length) {\r\n this.initEdit(item, true);\r\n var text = \"\";\r\n if (this.editedItemTitle) {\r\n this.editedItemTitle.forEach(t => {\r\n text += fun.deepFind(item, t) + \" \";\r\n });\r\n if (!text || text.toString().includes(\"undefined\")) {\r\n text = \"New \" + this.tableName;\r\n }\r\n //\r\n } else if (item) {\r\n text =\r\n Object.keys(item)[0] != \"_id\"\r\n ? item[Object.keys(item)[0]]\r\n : item[Object.keys(item)[1]];\r\n }\r\n if (text && typeof text != \"object\") {\r\n text = text.toString().trim();\r\n } else {\r\n text = \"\";\r\n }\r\n this.editedTabs.push({\r\n text: text,\r\n icon: item ? \"mdi-pencil\" : \"mdi-plus\",\r\n id: item ? item._id : \"\",\r\n item: item || {}\r\n });\r\n this.edited = this.editedTabs.length;\r\n this.editTitle = text;\r\n } else {\r\n item = editExist[0].item;\r\n this.dObject.model = item;\r\n this.formKey = !this.formKey;\r\n }\r\n // }\r\n // } else {\r\n // var id = fun.guid();\r\n // item = fun.clone(this.defaultModel) || {};\r\n // item._id = id;\r\n // this.initEdit();\r\n // this.dObject.model = item;\r\n // this.editedTabs.push({\r\n // text: this.addButtonCaption,\r\n // icon: \"mdi-new-box\",\r\n // // id: item._id,\r\n // // item: item,\r\n // });\r\n // this.edited = this.editedTabs.length;\r\n // }\r\n return this.editedTabs;\r\n },\r\n bodySlots() {\r\n return this.coloredFields;\r\n },\r\n toggleAllGroups() {\r\n var that = this;\r\n Object.keys(this.$refs).forEach(k => {\r\n //console.log(this.$refs[k])\r\n if (k == \"group\") {\r\n that.$refs[k].$el.click();\r\n }\r\n });\r\n },\r\n filterData(f) {\r\n this.table = this.originalRecords;\r\n this.table = this.table.filter(r => {\r\n try {\r\n return f(r);\r\n } catch (error) {\r\n return true;\r\n }\r\n });\r\n },\r\n doTabFilter() {\r\n if (!this.noTabSort) {\r\n fun.sortArrayOfObjectsByProperties(this.filteredTabItems, [\"value\"]);\r\n }\r\n var that = this;\r\n var curFilter = this.filteredTabItems[this.currentFilter];\r\n this.editedTabs = [];\r\n this.edited = null;\r\n // if (!this.hideAllTabFilter) {\r\n // curFilter = this.filteredTabItems[this.currentFilter - 1];\r\n // }\r\n this.tabFilter = curFilter;\r\n var getFilterValue = function(r) {\r\n var value = r[curFilter.name];\r\n if (curFilter.filterProperty) {\r\n return (\r\n r[curFilter.name][curFilter.filterProperty]\r\n .toString()\r\n .toLowerCase() == curFilter.value.toString().toLowerCase()\r\n );\r\n } else if (typeof curFilter.value == \"object\") {\r\n return (\r\n JSON.stringify(r[curFilter.name]) == JSON.stringify(curFilter.value)\r\n );\r\n } else if (curFilter.notEmpty) {\r\n return r[curFilter.name];\r\n } else if (Array.isArray(r[curFilter.name])) {\r\n return r[curFilter.name].includes(curFilter.value);\r\n } else {\r\n var filterValue = curFilter.value;\r\n if (typeof filterValue == \"string\") {\r\n filterValue = filterValue.toString().toLowerCase();\r\n } else {\r\n return r[curFilter.name] == curFilter.value;\r\n }\r\n if (!filterValue.startsWith(\"!\")) {\r\n return (\r\n r[curFilter.name].toString().toLowerCase() ==\r\n curFilter.value.toString().toLowerCase()\r\n );\r\n } else {\r\n return (\r\n r[curFilter.name].toString().toLowerCase() !=\r\n curFilter.value\r\n .toString()\r\n .toLowerCase()\r\n .replace(\"!\", \"\")\r\n );\r\n }\r\n }\r\n };\r\n\r\n this.table = this.originalRecords.filter(r => {\r\n if (!r.active) {\r\n // console.log(\"inactive\");\r\n }\r\n return curFilter && curFilter.name\r\n ? (curFilter.empty && !r[curFilter.name]) ||\r\n ((r[curFilter.name] || r[curFilter.name] == false) &&\r\n (curFilter.value || curFilter.value == false) &&\r\n getFilterValue(r))\r\n : true;\r\n });\r\n // this.computedHeaders = fun.clone(this.originalHeaders);\r\n if (curFilter && curFilter.options) {\r\n curFilter.options.forEach(h => {\r\n if (h.hideHeaders) {\r\n this.computedHeaders = this.computedHeaders.filter(c => {\r\n return !h.hideHeaders.includes(c.value);\r\n });\r\n }\r\n if (h.tableInsertable == false) {\r\n //\r\n\r\n that.hasSearch = false;\r\n\r\n that.hideTopBar = true;\r\n }\r\n });\r\n }\r\n\r\n if (curFilter && curFilter.renameHeaders) {\r\n curFilter.renameHeaders.forEach(h => {\r\n var header = Object.keys(h)[0];\r\n this.computedHeaders.forEach(c => {\r\n if (c.value == header) {\r\n c.text = h[header];\r\n }\r\n });\r\n });\r\n }\r\n this.checkTabOptions();\r\n // this.computedHeaders.splice(1, 1);\r\n return curFilter;\r\n },\r\n log(e) {\r\n console.log(e);\r\n },\r\n dragstart(header) {\r\n this.draggedHeader = header;\r\n },\r\n drop(targetHeader) {\r\n if (!this.draggedHeader) return;\r\n const fromIndex = this.headers.indexOf(this.draggedHeader);\r\n const toIndex = this.headers.indexOf(targetHeader);\r\n this.headers.splice(fromIndex, 1);\r\n this.headers.splice(toIndex, 0, this.draggedHeader);\r\n this.draggedHeader = null;\r\n this.saveColumnOrder();\r\n },\r\n toggleColumn(header) {\r\n header.hidden = !header.hidden;\r\n this.saveColumnOrder();\r\n },\r\n saveColumnOrder() {\r\n // Save the updated column order and hidden state to your MongoDB database\r\n // You can use either the MongoDB native driver or an ORM like Mongoose to interact with your database\r\n },\r\n updateFilter() {\r\n var that = this;\r\n var curFilter = this.doTabFilter();\r\n this.initEdited();\r\n\r\n this.autoAssign();\r\n if (this.defaultModel) {\r\n this.dModel = this.defaultModel;\r\n }\r\n if (curFilter) {\r\n if (!this.serverPagination) {\r\n this.dModel[curFilter.name] = curFilter.value;\r\n } else {\r\n console.log(\"do server search\");\r\n if (this.initialQry) {\r\n this.tabQry = {};\r\n this.itemsCount = 0;\r\n if (curFilter.valueFn) {\r\n this.tabQry = eval(curFilter.valueFn);\r\n } else {\r\n this.tabQry[curFilter.name] = curFilter.value;\r\n }\r\n\r\n // this.initialQry.$and.push(tabQry);\r\n this.loadFromDb();\r\n }\r\n }\r\n }\r\n },\r\n applyCustomQry(id) {\r\n var customQry = this.additionalModel.custom_qry.find(c => {\r\n return c._id == id;\r\n });\r\n if (customQry) {\r\n this.qryExplanation = customQry.description;\r\n this.assistantQry = customQry.qry;\r\n this.itemsCount = 0;\r\n this.loadFromDb();\r\n }\r\n },\r\n applyFilter(e) {\r\n console.log(e);\r\n var filterIndex = this.filteredTabItems.findIndex(\r\n obj => obj && obj.value === e\r\n );\r\n // if (this.hasDefaultTab) {\r\n // filterIndex += 1;\r\n // }\r\n this.currentFilter = filterIndex;\r\n if (this.currentFilter == -1) {\r\n this.tabQry = null;\r\n this.itemsCount = 0;\r\n if (this.doServerPagination) {\r\n this.loadFromDb();\r\n }\r\n }\r\n },\r\n applyFilterOnEnter(event) {\r\n if (event.key === \"Enter\") {\r\n this.applyFilter();\r\n }\r\n },\r\n checkTabOptions() {\r\n // if (!this.filterTabs) {\r\n // return;\r\n // }\r\n var that = this;\r\n this.keepHeaders = false;\r\n // var curTab = this.filterTabs[this.currentFilter];\r\n if (this.tabFilter && this.tabFilter.options) {\r\n this.tabFilter.options.forEach(o => {\r\n var key = Object.keys(o)[0];\r\n if (key == \"showHeaders\") {\r\n if (!Array.isArray(o[key])) {\r\n o[key] = [o[key]];\r\n }\r\n o[key].forEach(opt => {\r\n if (that.computedHeaders[opt]) {\r\n that.computedHeaders[opt].hidden = false;\r\n that.computedHeaders[opt].show = true;\r\n }\r\n });\r\n this.keepHeaders = true;\r\n } else if (key == \"hideHeaders\") {\r\n if (!Array.isArray(o[key])) {\r\n o[key] = [o[key]];\r\n }\r\n o[key].forEach(opt => {\r\n if (that.computedHeaders[opt]) {\r\n that.computedHeaders[opt].hidden = true;\r\n that.computedHeaders[opt].show = false;\r\n }\r\n });\r\n this.keepHeaders = true;\r\n } else {\r\n that[key] = o[key];\r\n }\r\n });\r\n\r\n that.computedHeaders[that.computedHeaders.length - 1].show =\r\n that.tableEditRow;\r\n } else {\r\n that.checkHiddenHeaders();\r\n }\r\n },\r\n checkHiddenHeaders() {\r\n var that = this;\r\n if (\r\n that.initialHideHeaders &&\r\n ((!that.hideAllTabFilter && that.currentFilter) ||\r\n that.hideAllTabFilter)\r\n ) {\r\n that.initialHideHeaders.forEach(opt => {\r\n that.computedHeaders[opt].show = false;\r\n });\r\n }\r\n },\r\n updateDisablePagination() {\r\n this.tableKey = !this.tableKey;\r\n },\r\n // sortTabItems() {\r\n // this.filterItems = this.filterItems.sort((a, b) =>\r\n // a.caption.localeCompare(b.caption)\r\n // );\r\n // },\r\n updateAdditionalTabs(t) {\r\n if (!this.additionalTabs) {\r\n this.additionalTabs = {};\r\n }\r\n if (t) {\r\n this.additionalTabs = {\r\n ...this.additionalTabs,\r\n ...t\r\n };\r\n }\r\n\r\n // if (this.additionalTabs) {\r\n Object.keys(this.additionalTabs).forEach(k => {\r\n if (\r\n !this.filterItems.some(f => {\r\n return f.value == k;\r\n })\r\n ) {\r\n this.filterItems.push({\r\n caption: this.capitalize(k),\r\n // name: this.filterItems[0].name,\r\n value: k,\r\n filter: this.additionalTabs[k]\r\n });\r\n }\r\n });\r\n // }\r\n },\r\n updateItemsPerPage() {\r\n // this.tableKey = !this.tableKey;\r\n this.itemsPerPageChanged = true;\r\n this.serverItemsLength = -1;\r\n // this.serverItemsLength = parseInt(this.itemsPerPageEdited);\r\n // this.itemsPerPageEdited = parseInt(this.itemsPerPageEdited, 10);\r\n //\r\n this.pageStart = 1;\r\n this.pageStop = this.itemsPerPageEdited;\r\n this.itemsLength = this.table.length;\r\n if (this.itemsPerPageEdited > this.table.length) {\r\n this.serverItemsLength = this.itemsPerPageEdited;\r\n this.pageStop = this.table.length;\r\n // } else {\r\n // this.serverItemsLength = parseInt(this.itemsPerPageEdited);\r\n }\r\n // this.itemsPerPageChanged = false;\r\n\r\n // this.itemsPerPageEdited > this.table.length\r\n // ? this.table.length\r\n // : this.itemsPerPageEdited;\r\n // this.tableMount();\r\n // this.$refs.dTable.options.page = 1;\r\n // this.tableKey = !this.tableKey;\r\n // this.getData();\r\n // this.tableMount();\r\n },\r\n updateOriginalRecords() {\r\n var that = this;\r\n let tableIds = this.table.map(record => record._id);\r\n if (!tableIds) {\r\n return;\r\n }\r\n let remainingRecords = this.originalRecords.filter(\r\n record => !tableIds.includes(record._id)\r\n );\r\n\r\n // Removed records\r\n this.originalRecords = remainingRecords.concat(this.table);\r\n\r\n // this.originalRecords = this.originalRecords.filter(record => !tableIds.includes(record.id));\r\n\r\n // this.table.forEach((record) => {\r\n // var origRec = that.originalRecords.filter((r) => {\r\n // return r._id == record._id;\r\n // })[0];\r\n // // let index = that.originalRecords.findIndex((r) => r.id === record.id);\r\n\r\n // // if (index !== -1) {\r\n // // that.originalRecords[index] = record;\r\n // // }\r\n // if (origRec) {\r\n // origRec = record;\r\n // }\r\n // });\r\n },\r\n virtualScroll() {\r\n // const table = this.$refs.dTable.$el.querySelector(\r\n // \".v-data-table__wrapper\"\r\n // );\r\n // const outerScroll = this.$refs.outerScroll;\r\n // const innerScroll = outerScroll.querySelector(\".inner-scroll\");\r\n //data-table-wrap\r\n const table = document.getElementsByClassName(\"v-data-table__wrapper\")[0];\r\n const tableWrap = document.getElementsByClassName(\"data-table-wrap\")[0];\r\n // if (\r\n // tableWrap &&\r\n // !this.$root.isMobile &&\r\n // !this.disablePagination &&\r\n // !this.isFullScreen\r\n // ) {\r\n // tableWrap.style.maxHeight = `${screen.height -\r\n // table.offsetTop -\r\n // 450}px`;\r\n // }\r\n\r\n // Set the width of the inner scroll element to match the table's scroll width\r\n // innerScroll.style.width = `${table.scrollWidth}px`;\r\n\r\n // Event listener for table scrolling\r\n // table.addEventListener(\"scroll\", () => {\r\n // outerScroll.scrollLeft = table.scrollLeft;\r\n // });\r\n\r\n // // Event listener for outer scrolling\r\n // outerScroll.addEventListener(\"scroll\", () => {\r\n // table.scrollLeft = outerScroll.scrollLeft;\r\n // });\r\n },\r\n addDefaultFilter() {\r\n var defaultFilter =\r\n this.defaultTabCaption || \"All \" + fun.capitalize(this.tableName);\r\n if (\r\n !this.hasDefaultTab\r\n // &&\r\n // !this.filterItems[0].value.toLowerCase().startsWith(\"all \") &&\r\n // !this.filterItems[0].value.toLowerCase().startsWith(\"add \")\r\n ) {\r\n this.filterItems.unshift({\r\n caption: defaultFilter,\r\n value: defaultFilter\r\n });\r\n }\r\n },\r\n addDefaultTab() {\r\n if (!this.hideAllTabFilter && this.filterItems.length > 1) {\r\n // var defaultFilter =\r\n // this.defaultTabCaption || \"All \" + fun.capitalize(this.tableName);\r\n // if (\r\n // !this.hasDefaultTab\r\n // // &&\r\n // // !this.filterItems[0].value.toLowerCase().startsWith(\"all \") &&\r\n // // !this.filterItems[0].value.toLowerCase().startsWith(\"add \")\r\n // ) {\r\n // this.filterItems.unshift({\r\n // caption: defaultFilter,\r\n // value: defaultFilter,\r\n // });\r\n // }\r\n fun.sortObjects(this.filterItems, \"value\");\r\n this.addDefaultFilter();\r\n this.hasDefaultTab = 1;\r\n }\r\n },\r\n handleGroupDescChange(f) {\r\n console.log(f);\r\n },\r\n getTableTop() {\r\n if (this.$refs[\"dTable\"]) {\r\n return this.$refs[\"dTable\"].getBoundingClientRect().top;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n },\r\n directives: {\r\n draggable: {\r\n bind(el, binding, vnode) {\r\n var that = this;\r\n const options = {\r\n animation: 150,\r\n onUpdate: function(event) {\r\n vnode.child.$emit(\"sorted\", event);\r\n vnode.child.$root.$emit(\"rowReordered\", vnode.child);\r\n },\r\n handle: \".drag-handle\"\r\n };\r\n if (vnode.context.isDraggable) {\r\n Sortable.create(el.getElementsByTagName(\"tbody\")[0], options);\r\n }\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n var that = this;\r\n this.updateHeight();\r\n window.addEventListener(\"resize\", this.updateHeight);\r\n this.initEdited();\r\n this.doServerPagination = this.serverPagination;\r\n if (this.data_object) {\r\n this.initialQry = fun.clone(this.data_object.qry);\r\n }\r\n\r\n // this.remoteSearchFields.join(\", \") +\r\n if (this.remoteSearchFields && this.minSearchLength) {\r\n var searchFields = [];\r\n this.remoteSearchFields.forEach(f => {\r\n searchFields.push(fun.capitalize(f));\r\n });\r\n this.searchLabel =\r\n \"First \" +\r\n this.minSearchLength +\r\n \" char of \" +\r\n searchFields.join(\" or \");\r\n }\r\n this.breakpoint = this.mobileBreakpoint || 600;\r\n if (this.$vuetify.breakpoint.smAndDown && !this.mobileBreakpoint) {\r\n this.breakpoint = 600;\r\n }\r\n\r\n this.activeTab = this.$root.activeTab;\r\n document.arrive(\"input[k='\" + this.focusOnInsert + \"']\", a => {\r\n if (a && that.insertMode) {\r\n a.click();\r\n that.insertMode = false;\r\n }\r\n });\r\n document.arrive(\".v-data-table\", t => {\r\n if (t) {\r\n that.virtualScroll();\r\n }\r\n if (this.breakpoint && this.$root.isMobile) {\r\n document\r\n .getElementsByClassName(\"v-data-table\")[0]\r\n .classList.add(\"mobile-list\");\r\n }\r\n });\r\n this.tableMount();\r\n var specialFields = [\r\n ...(this.dialogFields || []),\r\n ...(this.coloredFields || [])\r\n ];\r\n specialFields.forEach(f => {\r\n if (typeof f == \"string\") {\r\n this.specialFields.push({\r\n model: f\r\n });\r\n } else {\r\n this.specialFields.push(f);\r\n }\r\n });\r\n if (this.getItems) {\r\n this.$root.$on(\"get_menu_items\", function(r) {\r\n // if (that._uid != that.$root.shipmentUid) {\r\n // return;\r\n // }\r\n that.menuItems = r.items;\r\n that.menuButtonKey = !that.menuButtonKey;\r\n });\r\n return;\r\n }\r\n // this.virtualScroll()\r\n },\r\n activated() {\r\n // this.initEdited();\r\n },\r\n watch: {\r\n showAdvancedSearch() {\r\n if (!this.showAdvancedSearch) {\r\n this.searchModel = {};\r\n }\r\n },\r\n // vModel: {\r\n // handler: function(newValue, oldValue) {\r\n // console.log(newValue);\r\n // },\r\n // },\r\n\r\n edited() {\r\n this.$root.$emit(\"edited\", this);\r\n // if (this.edited != null) {\r\n // this.delBtnKey = !this.delBtnKey;\r\n // }\r\n //\r\n },\r\n isFullScreen() {\r\n this.updateHeight();\r\n },\r\n searchTabQuery() {\r\n if (!this.searchTabQuery) {\r\n this.currentFilter = 0;\r\n }\r\n },\r\n\r\n searchModel: {\r\n handler: function(newValue, oldValue) {\r\n var that = this;\r\n\r\n that.doTabFilter();\r\n if (this.searchModel) {\r\n Object.keys(this.searchModel).forEach(k => {\r\n if (this.searchModel[k] && this.searchModel[k].length) {\r\n Object.keys(this.schema.properties).forEach(h => {\r\n if (h == k) {\r\n if (this.schema.properties[h].filter) {\r\n // console.log(that.table);\r\n // console.log(this.schema.properties[h].filter);\r\n\r\n that.table = that.table.filter(r => {\r\n try {\r\n var rec = r[h];\r\n if (that.schema.properties[h].template) {\r\n try {\r\n rec = eval(that.schema.properties[h].template);\r\n } catch (error) {\r\n //\r\n }\r\n }\r\n var v = newValue[h];\r\n var includes = function() {\r\n return rec.includes(v);\r\n };\r\n var inArray = function() {\r\n if (v.length) {\r\n return v\r\n .toString()\r\n .toLowerCase()\r\n .split(\",\")\r\n .includes(rec.toString().toLowerCase());\r\n } else {\r\n return true;\r\n }\r\n };\r\n var range = function() {\r\n return rec >= v[0] && rec <= v[1];\r\n };\r\n var dayRangeFilter = function() {\r\n var range = v.split(\"-\");\r\n var minDate = new Date(range[0]);\r\n var maxDate = null;\r\n if (range[1].toString().trim()) {\r\n maxDate = new Date(range[1]);\r\n }\r\n var dates = rec.split(\"-\");\r\n\r\n var dMin = new Date(dates[0]);\r\n\r\n var dMax = null;\r\n if (dates[1] && dates[1].toString().trim()) {\r\n dMax = new Date(dates[1]);\r\n }\r\n if (minDate && maxDate) {\r\n if (dMin && dMax) {\r\n return dMin <= maxDate && dMax >= minDate;\r\n } else {\r\n return dMin >= minDate && dMin <= maxDate;\r\n }\r\n } else {\r\n if (dMin && dMax) {\r\n return dMin >= minDate && dMax <= minDate;\r\n } else {\r\n return dMin >= minDate;\r\n }\r\n }\r\n };\r\n var isString = !that.schema.properties[h][\"x-display\"];\r\n if (rec && that.schema.properties[h].filter && v) {\r\n if (isString) {\r\n rec = rec.toString().toLowerCase();\r\n }\r\n\r\n var include = eval(\r\n that.schema.properties[h].filter + \"()\"\r\n );\r\n // console.log(include);\r\n return include;\r\n } else {\r\n return false;\r\n }\r\n } catch (error) {\r\n console.log(\"error search\", error);\r\n return false;\r\n }\r\n });\r\n // console.log(that.table);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n deep: true\r\n },\r\n table: {\r\n handler: function(newValue, oldValue) {\r\n if (oldValue.length && !this.filterChanged) {\r\n this.updateOriginalRecords();\r\n this.$emit(\"input\", this.originalRecords);\r\n this.$root.$emit(\"tableChanged\", this);\r\n if (!this.skipRecalculation) {\r\n this.$root.$emit(\"recalculateFields\", this);\r\n }\r\n }\r\n\r\n this.filterChanged = false;\r\n // console.log(\"totals\", this.tableTotal);\r\n },\r\n deep: true\r\n // immediate: true,\r\n },\r\n update: {\r\n handler: function(newValue, oldValue) {\r\n // if (oldValue.length) {\r\n this.$root.$emit(\"updateChanged\", this);\r\n // }\r\n },\r\n deep: true\r\n // immediate: true,\r\n },\r\n selected: function(r) {\r\n // console.log(this.selected);\r\n this.$root.$emit(\"tableSelectionChanged\", this);\r\n },\r\n search: function(r) {\r\n if (this.remoteSearch || this.doServerPagination) {\r\n this.itemsCount = 0;\r\n if (\r\n (!this.search || this.searchAfterCompleted) &&\r\n !this.doServerPagination\r\n ) {\r\n // if (this.itemsCount <= this.table.length) {\r\n this.tableReady = false;\r\n\r\n return;\r\n // }\r\n }\r\n if (!this.search || this.search.length >= this.minSearchLength) {\r\n this.tableReady = true;\r\n this.loadFromDb();\r\n } else {\r\n if (!this.doServerPagination || this.maxRecords) {\r\n return;\r\n } else {\r\n if (this.search && this.search.length >= this.minSearchLength) {\r\n this.buildSearchQuery();\r\n this.loadFromDb();\r\n } else if (!this.search) {\r\n this.tableMount();\r\n }\r\n }\r\n }\r\n }\r\n },\r\n currentFilter: {\r\n handler: function(newValue, oldValue) {\r\n // if (this.additionalTabs) {\r\n var ind = this.hideAllTabFilter ? 0 : 0;\r\n var tab = this.filteredTabItems[newValue - ind];\r\n if (this.additionalTabs && tab) {\r\n this.searchModel = tab.filter;\r\n //\r\n }\r\n // }\r\n var that = this;\r\n if (!this.currentFilter) {\r\n this.tabKey = !this.tabKey;\r\n }\r\n this.updateFilter();\r\n this.$root.$emit(\"tableFilterChanged\", this);\r\n // this.$root.$emit(\"recalculateFields\", this);\r\n this.filterChanged = true;\r\n this.filterComboKey = !this.filterComboKey;\r\n // this.getColumns();\r\n this.checkTabOptions();\r\n this.checkHiddenHeaders();\r\n },\r\n deep: true\r\n },\r\n dialog: function() {\r\n // console.log(this.dialog);\r\n if (this.dialog && this.isNew) {\r\n this.resetModel();\r\n }\r\n // this.formKey = !this.formKey;\r\n },\r\n\r\n insertedRow: {\r\n handler: function(newValue, oldValue) {\r\n console.log(newValue, oldValue);\r\n\r\n if (oldValue && oldValue._id && !newValue._id) {\r\n return;\r\n }\r\n\r\n if (this.tableInsertable && oldValue) {\r\n var rowChanged = !fun.objectEqual(newValue, this.newRow, this._id);\r\n this.blankRow(rowChanged);\r\n }\r\n },\r\n deep: true\r\n },\r\n\r\n doSubmit: function() {\r\n this.submit();\r\n },\r\n searchInput: function(input) {\r\n console.log(input);\r\n },\r\n originalRecords: {\r\n handler: function(newValue, oldValue) {\r\n // console.log(this.originalRecords);\r\n // this.$root.$emit()\r\n }\r\n // deep: true,\r\n },\r\n formModel: {\r\n handler: function(newValue, oldValue) {\r\n // console.log(this.formModel);\r\n if (this.refreshHeadersOnFormChange && !this.keepHeaders) {\r\n this.filterHeaders();\r\n }\r\n },\r\n deep: true\r\n },\r\n page: function() {\r\n console.log(this.page);\r\n }\r\n },\r\n computed: {\r\n safeToolBarControls() {\r\n // Check if toolBarControls is truthy and an array; return it or an empty array\r\n return this.toolBarControls\r\n ? this.toolBarControls.filter(\r\n c =>\r\n !c.notParent ||\r\n (this.parentObject && !this.parentObject[c.notParent])\r\n ) || []\r\n : [];\r\n //toolBarItemsExcluded\r\n },\r\n\r\n filteredTabItems() {\r\n // this.filterItems.concat(Object.keys(this.additionalTabs));\r\n // this.sortTabItems();\r\n\r\n this.updateAdditionalTabs();\r\n this.addDefaultTab();\r\n\r\n return this.filterItems.filter(\r\n tab =>\r\n !this.searchTabQuery ||\r\n tab.value.toLowerCase().includes(this.searchTabQuery.toLowerCase())\r\n );\r\n },\r\n tableTotal() {\r\n var tot = [];\r\n if (this.totalFields) {\r\n this.totalFields.forEach(f => {\r\n tot.push({\r\n field: f,\r\n total: fun.sumOf(this.table, f)\r\n });\r\n\r\n //\r\n });\r\n }\r\n return tot;\r\n },\r\n tblStyle() {\r\n var width = screen.width;\r\n if (this.$vuetify.breakpoint.smAndDown) {\r\n return \"width:\" + width - 20 + \"px; overflow:auto; \";\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n filteredHeaders() {\r\n return this.$vuetify.breakpoint.smAndDown\r\n ? this.computedHeaders.filter(header =>\r\n this.mobileHeaders.includes(header.value)\r\n )\r\n : this.computedHeaders;\r\n },\r\n filteredItems() {\r\n // var tableItems = fun.clone(this.table);\r\n // tableItems.forEach((t) => {\r\n // Object.keys(t).forEach((k) => {\r\n // t[k] = this.getTemplate(t, { name: k }) || t[k];\r\n // });\r\n // });\r\n\r\n if (this.$vuetify.breakpoint.smAndDown) {\r\n return this.table.filter(item => {\r\n return this.mobileHeaders.some(header => {\r\n const value = item[header.value];\r\n return value !== null && value !== undefined && value !== \"\";\r\n });\r\n });\r\n } else {\r\n return this.table;\r\n }\r\n },\r\n // computedTable() {\r\n // if (this.tabFilter) {\r\n // var curFilter = this.tabFilter;\r\n // var table = this.originalRecords.filter((r) => {\r\n // return curFilter && curFilter.name\r\n // ? r[curFilter.name] &&\r\n // curFilter.value &&\r\n // r[curFilter.name].toString().toLowerCase() ==\r\n // curFilter.value.toLowerCase()\r\n // : true;\r\n // });\r\n // return table;\r\n // } else {\r\n // return this.table;\r\n // }\r\n // },\r\n searchTrigger() {\r\n return this.searchLen &&\r\n this.search &&\r\n this.search.length >= this.searchLen\r\n ? this.search\r\n : \"\";\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style>\r\n/* .pager {\r\n cursor: pointer;\r\n} */\r\n.edit-bar {\r\n position: absolute;\r\n bottom: 20px;\r\n right: 0;\r\n}\r\n\r\n.table-toolbar,\r\n.table-toolbar div {\r\n background-color: transparent !important;\r\n}\r\n\r\n.table-title {\r\n font-weight: normal;\r\n}\r\n\r\n.top-table-header {\r\n /* position: fixed; */\r\n}\r\n\r\n.filter-tabs {\r\n position: relative;\r\n}\r\n\r\n.filter-tabs .v-item-group {\r\n /* left: 100px; */\r\n /* position: absolute; */\r\n}\r\n\r\n.tab-search {\r\n position: absolute;\r\n left: -8px;\r\n top: -10px;\r\n}\r\n\r\n.per-page-width {\r\n width: 100px;\r\n}\r\n\r\n.bootom-bar {\r\n width: 100lvh;\r\n}\r\n\r\n.fixed-footer {\r\n position: fixed;\r\n bottom: 0;\r\n left: 400px;\r\n}\r\n\r\n.row-pointer {\r\n /* padding: 10px; */\r\n}\r\n\r\n.hidden-row {\r\n display: none;\r\n}\r\n\r\n.v-data-table__wrapper {\r\n width: initial !important;\r\n overflow: initial !important;\r\n}\r\n\r\n.v-data-table__wrapper tr {\r\n position: relative !important;\r\n}\r\n\r\n/* thead,\r\ntbody tr {\r\n display: table;\r\n width: 100%;\r\n} */\r\n.data-table-wrap {\r\n max-height: 66vh;\r\n /* max-height: 48vh !important; */\r\n overflow-x: auto;\r\n overflow-y: auto;\r\n}\r\n\r\n.full-screen .data-table-wrap {\r\n max-height: 78vh !important;\r\n height: 78vh !important;\r\n overflow-y: initial !important;\r\n z-index: 3;\r\n}\r\n\r\n.full-screen .v-data-table__wrapper {\r\n height: initial !important;\r\n}\r\n\r\n.data-table-wrap-no-hor {\r\n overflow-y: auto;\r\n /* max-height: 65vh !important; */\r\n}\r\n\r\n.outer-scroll {\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n /* width: 200%; */\r\n\r\n height: 20px;\r\n /* Height of the virtual scroll bar */\r\n}\r\n\r\n.inner-scroll {\r\n height: 100%;\r\n\r\n /* background-color: #3a3737; */\r\n}\r\n\r\n.theme--light .inner-scroll {\r\n background-color: white;\r\n}\r\n\r\n.theme--dark .inner-scroll {\r\n background-color: #121212;\r\n}\r\n\r\n.edit-dialog-wrapper {\r\n left: var(--edit-dialog-left) !important;\r\n width: var(--edit-dialog-width);\r\n}\r\n\r\n.v-data-table tr {\r\n height: 60px !important;\r\n}\r\n\r\n.column-list {\r\n height: 400px;\r\n overflow: auto;\r\n}\r\n\r\n.custom-badge-position .v-badge__badge {\r\n transform: scale(0.9) translate(-10px, 10px);\r\n /* Adjust positioning */\r\n}\r\n\r\n.top {\r\n z-index: 100;\r\n}\r\n\r\n.grid-list {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 16px;\r\n border: 2px dashed #ccc;\r\n padding: 16px;\r\n border-radius: 8px;\r\n}\r\n\r\n.grid-item {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 5px;\r\n width: 200px;\r\n height: 300px;\r\n border: 1px solid #ccc;\r\n border-radius: 8px;\r\n background-color: #f9f9f9;\r\n cursor: grab;\r\n transition: background-color 0.2s, transform 0.2s;\r\n}\r\n\r\n.grid-item:active {\r\n cursor: grabbing;\r\n}\r\n\r\n.grid-item:hover {\r\n background-color: #e0e0e0;\r\n transform: scale(1.05);\r\n}\r\n\r\n.item-content {\r\n text-align: center;\r\n font-size: 16px;\r\n font-weight: bold;\r\n}\r\n\r\n.drop-zone {\r\n min-height: 50px;\r\n /* display: flex; */\r\n /* align-items: center; */\r\n /* justify-content: center; */\r\n border: 2px dashed #aaa;\r\n /* background-color: #e0e0e0; */\r\n margin-top: 10px;\r\n cursor: pointer;\r\n transition: background-color 0.2s ease;\r\n}\r\n\r\n.drop-zone:hover {\r\n background-color: #e0e0e0;\r\n /* Change color on hover to show it's a drop target */\r\n}\r\n\r\n.chip-text {\r\n /* background-color: white; */\r\n color: white;\r\n font-weight: 600;\r\n /* color: black; */\r\n padding: 2px;\r\n cursor: pointer;\r\n min-width: 50px;\r\n /* border-radius: 5px; */\r\n}\r\n\r\n.horizontal-list {\r\n display: flex;\r\n flex-direction: row;\r\n gap: 16px;\r\n /* Add space between items */\r\n}\r\n\r\n.horizontal-item {\r\n width: 100px;\r\n /* Set a fixed width for list items */\r\n text-align: center;\r\n border: 1px solid #ccc;\r\n /* Optional: Add a border for visibility */\r\n border-radius: 4px;\r\n cursor: grab;\r\n}\r\n\r\n.horizontal-item:active {\r\n cursor: grabbing;\r\n}\r\n.search-menu {\r\n height: 30px !important;\r\n display: flex;\r\n flex-direction: column; /* Stack items vertically */\r\n align-items: flex-start; /* Align items to the top */\r\n justify-content: flex-start; /* Ensure no unwanted spacing */\r\n}\r\n\r\n.bottom-bar .v-toolbar__content {\r\n width: 100% !important;\r\n padding: 0 !important;\r\n /* margin-left: -20px !important; */\r\n}\r\n\r\n.card-actions {\r\n position: fixed;\r\n bottom: 0;\r\n right: 30%;\r\n width: calc(100% -15px);\r\n z-index: 100;\r\n}\r\n\r\n.v-data-table__selected {\r\n background-color: rgba(255, 255, 0, 0.363) !important;\r\n /* color: white !important; */\r\n font-weight: bold !important;\r\n}\r\n.v-dialog {\r\n overflow-x: hidden !important;\r\n}\r\n.v-tab {\r\n /* background-color: white; */\r\n margin: 1px !important;\r\n}\r\n\r\n.colored .text-start {\r\n color: white;\r\n max-height: 30px !important;\r\n}\r\n\r\n.colored a {\r\n color: white;\r\n}\r\n\r\n.editable a {\r\n color: white;\r\n}\r\n.v-data-table-header {\r\n z-index: 3 !important;\r\n}\r\n\r\n.v-data-table-header th {\r\n /* text-transform: uppercase !important; */\r\n font-size: 16px !important;\r\n z-index: 3 !important;\r\n}\r\n\r\n.expanded-item {\r\n background-color: gray;\r\n}\r\n\r\n@media only screen and (min-height: 600px) {\r\n /* .special-button {\r\n padding-top: 36px !important;\r\n } */\r\n .edited-form {\r\n height: 55vh;\r\n overflow: auto;\r\n position: relative;\r\n }\r\n .theme--light .v-data-table-header th {\r\n z-index: 0 !important;\r\n background-color: #666669 !important;\r\n color: white !important;\r\n }\r\n\r\n .theme--dark .v-data-table-header th {\r\n background-color: #f5f5f5 !important;\r\n color: black !important;\r\n }\r\n}\r\n\r\n@media only screen and (max-width: 450px) {\r\n .search-menu {\r\n max-width: 300px;\r\n margin-left: 10px;\r\n }\r\n\r\n .full-width {\r\n width: 100%;\r\n }\r\n\r\n .draggable-item {\r\n margin-top: 10px;\r\n padding: 10px;\r\n background-color: rgba(212, 219, 212, 0.843);\r\n border: 2px solid #7f7a7a;\r\n cursor: grab;\r\n transition: background-color 0.2s ease;\r\n }\r\n\r\n .draggable-item:active {\r\n cursor: grabbing;\r\n }\r\n\r\n .v-data-table__mobile-row__header {\r\n font-weight: normal;\r\n white-space: nowrap;\r\n /* margin-top: 16px;\r\n margin-bottom: 16px; */\r\n }\r\n\r\n .v-data-table__mobile-row {\r\n margin-top: 12px;\r\n margin-bottom: 12px;\r\n }\r\n\r\n .v-small-dialog__activator__content {\r\n color: blue;\r\n text-decoration: underline;\r\n font-weight: bold;\r\n }\r\n\r\n .v-data-table.mobile-list {\r\n overflow-x: hidden !important;\r\n }\r\n\r\n .v-btn__content,\r\n .v-tab,\r\n .active-tab {\r\n font-size: small !important;\r\n }\r\n\r\n .pager {\r\n font-size: small;\r\n white-space: nowrap;\r\n }\r\n\r\n .v-data-table__mobile-row:not(:has(.v-data-table__mobile-row__cell:not(:empty))) {\r\n display: none;\r\n }\r\n\r\n table {\r\n border-collapse: collapse !important;\r\n }\r\n\r\n .v-data-table__mobile-row .v-chip.v-chip--outlined {\r\n border: none !important;\r\n margin: 0 !important;\r\n padding: 0 !important;\r\n }\r\n\r\n .v-data-table__mobile-row {\r\n min-height: 0px !important;\r\n }\r\n\r\n .v-data-table__mobile-row:first-child {\r\n border-top: 1px solid #3a3737 !important;\r\n padding-top: 10px !important;\r\n /* background-color: #ccc !important; */\r\n }\r\n\r\n .header-toolbar {\r\n /* width: 100%;\r\n /* position: fixed; */\r\n /* z-index: 100; */\r\n top: 0;\r\n left: -25px;\r\n }\r\n\r\n .bottom-toolbar {\r\n width: 100%;\r\n position: absolute;\r\n /* z-index: 100; */\r\n bottom: 0;\r\n right: 0;\r\n }\r\n\r\n .special-button {\r\n /* padding-left: 40px !important */\r\n }\r\n\r\n .v-data-table .v-tab {\r\n /* color: white !important; */\r\n margin: 5px !important;\r\n border-top-right-radius: 5px;\r\n border-top-left-radius: 5px;\r\n font-size: 10px;\r\n padding: 2px;\r\n height: 30px;\r\n }\r\n\r\n .v-tabs--grow {\r\n width: 100% !important;\r\n }\r\n\r\n .v-tab.active-tab {\r\n /* color: yellow !important; */\r\n /* font-weight: bold !important;*/\r\n\r\n /*text-decoration-color: blue !important; */\r\n font-size: 14px !important;\r\n\r\n /* box-shadow: 3px !important; */\r\n }\r\n\r\n .v-slide-group__prev,\r\n .v-slide-group__next {\r\n padding: 2px;\r\n margin: -5px;\r\n }\r\n\r\n .tablist {\r\n margin: 1px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table copy.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table copy.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"parentContainer\"},[_c('div',{attrs:{\"hidden\":\"\"}},[_c('v-take-photo')],1),(!_vm.hideTitle)?_c('h3',[_vm._v(_vm._s(_vm.table_title || _vm.tableHeader))]):_vm._e(),(_vm.filterItems.length && _vm.filterItems.length > 1 && !_vm.noTabs && _vm.useTabs)?_c('v-tabs',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hideFilterTabs),expression:\"!hideFilterTabs\"}],key:_vm.tabKey,staticClass:\"mt-2 filter-tabs\",attrs:{\"active-class\":\"active-tab\",\"continuous\":\"\",\"grow\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.currentFilter),callback:function ($$v) {_vm.currentFilter=$$v},expression:\"currentFilter\"}},_vm._l((_vm.filteredTabItems),function(item){return _c('v-tab',{key:item.caption},[_vm._v(\" \"+_vm._s(item.caption)+\" \")])}),1):_vm._e(),_c('div',{class:{ 'full-screen': _vm.isFullScreen }},[_c('div',{staticClass:\"top-bar\"},[(!_vm.edited && _vm.getTotal && !_vm.data_object.hideTotal)?_c(_vm.$vuetify.breakpoint.smAndDown ? 'div' : 'v-toolbar',{tag:\"v-component\",class:{\n 'ml-n0 mr-n0 mb-4': _vm.$vuetify.breakpoint.smAndDown,\n 'ml-0 mb-0 mr-0': _vm.$vuetify.breakpoint.mdAndUp\n },attrs:{\"flat\":\"\"}},[(\n (!_vm.edited && !_vm.dList && !_vm.hideTitle && _vm.table_title) || _vm.table_title\n )?_c('v-spacer'):_vm._e(),(\n !_vm.edited && _vm.filterItems && _vm.filterItems.length && _vm.showFilterCombo\n )?_c('v-spacer'):_vm._e(),(!_vm.edited && _vm.getTotal && !_vm.data_object.hideTotal && !_vm.dExcel)?_c('v-spacer'):_vm._e(),(!_vm.edited && _vm.getTotal && !_vm.data_object.hideTotal)?_c('v-chip',{ref:\"total\",staticClass:\"mt-n2\",attrs:{\"elevation-4\":\"\"}},[_vm._v(\" \"+_vm._s(!_vm.totals ? \"\" : _vm.totals.total.text)+\" \")]):_vm._e()],1):_vm._e(),((!_vm.hideTopBar || !_vm.noDelete || _vm.addButtonCaption) && !_vm.hideControls)?_c('v-toolbar',{key:_vm.toolbarKey,staticClass:\"table-toolbar\",attrs:{\"flat\":\"\"}},[(!_vm.edited && !_vm.noDelete && _vm.selectDelete)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-btn',_vm._g({class:_vm.dExcel ? \"ml-2\" : \"ml-2\",attrs:{\"icon\":\"\",\"disabled\":!_vm.selected.length},on:{\"click\":_vm.deleteSelected}},on),[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"mdi-delete-sweep\")])],1)]}}],null,false,3169398473)},[_c('span',[_vm._v(\"Delete Selected\")])]):_vm._e(),(\n !_vm.edited && !_vm.noDelete && !_vm.readonly && _vm.tableReady && _vm.table.length\n )?_c('v-btn',_vm._g({key:_vm.delBtnKey,staticClass:\"ml-2\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.selectDelete = !_vm.selectDelete;\n _vm.selected = [];}}},_vm.on),[(!_vm.selectDelete)?_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\"mdi-minus-circle\")]):_vm._e(),(_vm.selectDelete)?_c('v-icon',[_vm._v(\"mdi-cancel\")]):_vm._e()],1):_vm._e(),(\n _vm.addButtonCaption &&\n !_vm.tableInsertable &&\n !_vm.edited &&\n !_vm.readonly &&\n !_vm.addMenuButton\n )?_c('v-btn',{staticClass:\"ma-0\",attrs:{\"color\":\"info\",\"text\":\"\"},on:{\"click\":function($event){return _vm.editCurrentRecord()}}},[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-plus-circle\")])],1):_vm._e(),(_vm.noAddOnAllTab && !_vm.currentFilter)?_c('div',[_vm._v(\" Please \"+_vm._s(_vm.filterComboLabel)+\" to Add Record \")]):_vm._e(),_c('v-spacer'),(\n (_vm.hasSearch && _vm.table.length) ||\n _vm.search ||\n _vm.remoteSearch ||\n (_vm.searchModel && Object.keys(_vm.searchModel).length)\n )?_c('v-menu',{attrs:{\"close-on-content-click\":false,\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){return [_c('v-text-field',{attrs:{\"hide-details\":\"\",\"prepend-inner-icon\":\"mdi-magnify\",\"append-icon\":_vm.hasAdvancedSearch\n ? 'mdi-clipboard-text-search'\n : _vm.searchAfterCompleted && _vm.search\n ? 'mdi-account-search'\n : '',\"label\":\"Search\",\"clearable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }_vm.searchAfterCompleted\n ? _vm.doSearch()\n : (_vm.searchMenuModel = !_vm.searchMenuModel)},\"click:append\":function($event){_vm.searchAfterCompleted\n ? _vm.doSearch()\n : (_vm.searchMenuModel = !_vm.searchMenuModel)}},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})]}}],null,false,1212712761),model:{value:(_vm.searchMenuModel),callback:function ($$v) {_vm.searchMenuModel=$$v},expression:\"searchMenuModel\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('h2',{staticClass:\"d-flex justify-center\"},[_vm._v(\"Advanced Filter/Search\")])]),(_vm.hasAdvancedSearch)?_c('v-list',{key:_vm.searchModelKey,staticStyle:{\"max-height\":\"50vh\",\"overflow-y\":\"auto\"}},_vm._l((_vm.computedHeaders),function(h,i){return _c('v-list-item',{key:i},[_c('v-row',[_c('v-col',{staticClass:\"ma-2\"},[_c('label',[_vm._v(_vm._s(_vm.capitalize(h.value))+\":\")])]),_c('v-col',[_c('div',{staticStyle:{\"width\":\"300px\"}},[_c('v-form-component',{ref:h.value,refInFor:true,attrs:{\"name\":h.value,\"label\":h.text,\"schema\":_vm.getSchema({ name: h.value }),\"k\":h.value,\"model\":_vm.searchModel,\"hasParent\":_vm.hasParent}})],1)])],1)],1)}),1):_vm._e(),_c('v-toolbar',[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.clearSearch()}}},[_vm._v(\"Clear Filter\")]),_c('v-spacer'),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"ma-2\",attrs:{\"color\":\"info\"}},on),[_vm._v(\" Save Filter \")])]}}],null,false,645733370),model:{value:(_vm.saveFilterMenu),callback:function ($$v) {_vm.saveFilterMenu=$$v},expression:\"saveFilterMenu\"}},[_c('v-toolbar',[_c('v-text-field',{attrs:{\"label\":\"Filter Name\"},model:{value:(_vm.filterName),callback:function ($$v) {_vm.filterName=$$v},expression:\"filterName\"}}),_c('v-btn',{staticClass:\"ma-2\",attrs:{\"text\":\"\",\"color\":\"info\"},on:{\"click\":function($event){return _vm.saveFilter()}}},[_vm._v(\" Save Filter \")])],1)],1)],1)],1):_vm._e(),(_vm.hasAssistant)?_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.buildCustomQueryPrompt}},[_c('v-icon',[_vm._v(\" mdi-database-search \")]),(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-span',[_vm._v(\"Build Custom Search\")]):_vm._e()],1):_vm._e(),(_vm.hasAssistant && _vm.assistantQry)?_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.resetAssistantQry}},[_c('v-icon',[_vm._v(\" mdi-close \")]),(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-span',[_vm._v(\"Reset Custom Search\")]):_vm._e()],1):_vm._e(),_c('v-spacer'),(_vm.expandable)?_c('v-btn',{attrs:{\"text\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.expandAll()}}},[(!_vm.allTableExpanded)?_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-expand-all\")]):_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-collapse-all\")])],1):_vm._e(),(\n !_vm.edited &&\n (_vm.hasSearch ||\n (_vm.filteredTabItems.length &&\n _vm.filteredTabItems.length > 1 &&\n !_vm.noTabs)) &&\n !_vm.useTabs & !_vm.$root.isMobile &&\n _vm.filteredTabItems.length &&\n _vm.filteredTabItems.length > 1 &&\n !_vm.noTabs\n )?_c('v-autocomplete',{staticClass:\"mt-5 pa-2\",attrs:{\"clearable\":\"\",\"items\":_vm.filteredTabItems,\"item-text\":\"caption\",\"item-value\":\"value\",\"label\":_vm.filterComboLabel || 'Filter'},on:{\"change\":_vm.applyFilter,\"keydown\":_vm.applyFilterOnEnter}}):_vm._e(),(_vm.additionalModel && _vm.additionalModel.custom_qry)?_c('v-autocomplete',{staticClass:\"mt-5 pa-2\",attrs:{\"clearable\":\"\",\"items\":_vm.additionalModel.custom_qry,\"item-text\":\"caption\",\"item-value\":\"_id\",\"label\":\"Custom Query\"},on:{\"change\":_vm.applyCustomQry},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\n var item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.caption)+\" \"),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteCustomQry(item, _vm.index)}}},[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"mdi-delete\")])],1)]}}],null,false,531951680)}):_vm._e(),(\n _vm.addMenuButton &&\n !_vm.readonly &&\n (!_vm.noAddOnAllTab || (_vm.noAddOnAllTab && _vm.currentFilter))\n )?_c('v-menu-button',_vm._b({key:_vm.menuButtonKey,attrs:{\"title\":_vm.addButtonCaption,\"apply\":_vm.applyRow,\"reset\":_vm.resetNewRow,\"menuOpen\":_vm.menuOpen,\"icon\":\"mdi-plus-circle\",\"modal\":true,\"text\":true,\"color\":\"info\",\"menuItemClick\":_vm.addRowFromButton,\"hasSearch\":true,\"getItems\":_vm.getItems,\"menuItems\":_vm.menuItems,\"formModel\":_vm.formModel,\"editableFields\":_vm.getEditableFields(),\"table\":this,\"capitalizeText\":true}},'v-menu-button',_vm.getAddButton(),false)):_vm._e(),(_vm.tableInsertable && !_vm.addMenuButton)?_c('v-btn',_vm._g({staticClass:\"ma-1\",attrs:{\"text\":\"\",\"color\":\"info\"},on:{\"click\":function($event){return _vm.addRow()}}},_vm.on),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-plus-circle\")]),_c('div',[_vm._v(_vm._s(_vm.addButtonCaption || \"Add Record\"))])],1):_vm._e(),(\n _vm.tableInsertable &&\n !_vm.edited &&\n !_vm.readonly &&\n _vm.table.length &&\n _vm.table[0]._id == _vm.newRowId\n )?_c('v-toolbar',{staticClass:\"table-toolbar\",attrs:{\"flat\":\"\"}},[(_vm.table.length && _vm.table[0]._id == _vm.newRowId)?_c('v-btn',{staticClass:\"ma-1\",attrs:{\"icon\":\"\"}},[_c('v-icon',{attrs:{\"color\":\"success\"},on:{\"click\":function($event){return _vm.applyRow()}}},[_vm._v(\" mdi-checkbox-marked-circle \")])],1):_vm._e(),(_vm.table.length && _vm.table[0]._id == _vm.newRowId)?_c('v-btn',{staticClass:\"ma-1\",attrs:{\"icon\":\"\",\"color\":\"warning\"}},[_c('v-icon',{on:{\"click\":function($event){return _vm.resetNewRow()}}},[_vm._v(\"mdi-cancel\")])],1):_vm._e()],1):_vm._e(),_c('v-spacer'),(_vm.showAdvancedSearch)?_c('v-btn',{staticClass:\"ma-1\",attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.showAdvancedSearch = !_vm.showAdvancedSearch}}},[_c('v-icon',{attrs:{\"color\":\"info\"}},[_vm._v(\"mdi-filter-remove\")])],1):_vm._e(),_c('v-spacer'),(_vm.xllink)?_c('a',{attrs:{\"target\":\"_blank\",\"href\":_vm.xllink}},[_vm._v(\"Download Excel\")]):_vm._e(),(\n !_vm.$root.isMobile &&\n !_vm.edited &&\n !_vm.dExcel &&\n _vm.toolBarControls &&\n !_vm.hideControls &&\n !_vm.noToolBar &&\n _vm.tableReady &&\n !_vm.readonly\n )?_c('v-toolbar',{key:_vm.toolBarKey,staticClass:\"table-toolbar\",attrs:{\"flat\":\"\"}},[(_vm.toolbarRight && _vm.$vuetify.breakpoint.mdAndUp)?_c('v-spacer'):_vm._e(),_vm._l(((_vm.safeToolBarControls || []).filter(function (t) {\n return _vm.$root.customerId\n ? t['v-bind'] && !t['v-bind'].noCustomer\n : !t.hidden;\n })),function(c,i){return _c('v-list-item',{key:i},[(\n c.default &&\n !_vm.$root.isMobile &&\n !_vm.$root.isTablet &&\n c['v-bind'] &&\n c[\"comp\"] == 'v-btn' &&\n !c['v-bind'].hidden &&\n !c.hidden &&\n !_vm.hideCtl(c)\n )?_c('v-btn',{class:c['v-bind'].class,attrs:{\"small\":true,\"color\":c['v-bind'].color,\"text\":c['v-bind'].text,\"loading\":_vm.customBtnLoading},on:{\"click\":function($event){return _vm.customBtnClick(c)}}},[(c['v-bind'] && c['v-bind'].icon)?_c('v-icon',{class:_vm.$vuetify.breakpoint.smAndDown ? 'ma-0' : 'ma-2'},[_vm._v(\" \"+_vm._s(c[\"v-bind\"].icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(c[\"v-bind\"][\"input-value\"])+\" \")],1):(\n c.default &&\n !_vm.edited &&\n c['v-bind'] &&\n !c['v-bind'].hidden &&\n !_vm.hideCtl(c)\n )?_c(c[\"comp\"],_vm._b({ref:c[\"id\"],refInFor:true,tag:\"component\",style:('width:' + c[\"v-bind\"].width),attrs:{\"hidden\":c.hidden,\"small\":\"\",\"id\":c[\"id\"],\"table\":_vm.getObject()}},'component',c[\"v-bind\"],false),[_vm._v(\" \"+_vm._s(c.value)+\" \")]):_vm._e()],1)})],2):_vm._e(),(!_vm.noRefreshButton && _vm.getFreshData && !_vm.edited && _vm.tableReady)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"ma-1\",attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.refreshParent ? _vm.refreshParent() : _vm.refreshTable()}}},on),[_c('v-icon',{class:_vm.$vuetify.breakpoint.smAndDown ? 'ma-0' : 'ma-2'},[_vm._v(\" mdi-reload \")])],1)]}}],null,false,3611342554)},[_c('span',[_vm._v(\"Refresh\")])]):_vm._e(),(!_vm.$root.isMobile)?_c('v-spacer'):_vm._e(),(\n !_vm.$root.isMobile &&\n !_vm.edited &&\n _vm.tableReady &&\n !_vm.hideFooter &&\n !_vm.editDisablePagination &&\n !_vm.disablePagination\n )?_c('v-pager',{key:_vm.pagerKey,attrs:{\"pageStart\":_vm.pageStart,\"pageStop\":_vm.itemsCount > _vm.pageStop ? _vm.pageStop : _vm.itemsCount,\"itemsLength\":_vm.itemsCount,\"navigate\":_vm.navigate,\"page\":_vm.page}}):_vm._e(),(!_vm.edited && !_vm.noAdditionalMenu)?_c('v-menu',{attrs:{\"close-on-content-click\":false,\"close-on-click\":_vm.closeMenuOnClick},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ma-1\",attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,1541385946),model:{value:(_vm.menuModel),callback:function ($$v) {_vm.menuModel=$$v},expression:\"menuModel\"}},[_c('v-toolbar',{staticClass:\"mb-n2\",attrs:{\"flat\":\"\"}},[_c('v-spacer'),_c('v-btnright',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.menuModel = false}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-close\")])],1)],1),_c('v-list',{staticClass:\"mt-n4\"},[(_vm.groupByItemsReady)?_c('v-list-item',[_c('v-autocomplete',{attrs:{\"label\":\"Group By\",\"clearable\":true,\"items\":_vm.captializedGroupByItems()},on:{\"change\":_vm.applyGroupBy}})],1):_vm._e(),(_vm.dExcel)?_c('v-list-item',[_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"right\":\"\"},on:{\"click\":_vm.submit}},_vm.on),[_c('v-icon',[_vm._v(\"mdi-content-save\")]),_vm._v(\" Save Table \")],1)],1):_vm._e(),_c('v-list-item',[_c('v-btn',{attrs:{\"loading\":_vm.loading,\"text\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.downloadExcel()}}},[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-file-excel\")]),_vm._v(\" Download Excel \")],1)],1),(_vm.hasUpload && _vm.tableReady)?_c('v-list-item',[_c('v-btn',_vm._g({attrs:{\"loading\":_vm.loading,\"text\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.uploadExcel()}}},_vm.on),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-auto-upload\")]),_vm._v(\" Upload Excel \")],1)],1):_vm._e(),(_vm.$vuetify.breakpoint.smAndDown)?_c('v-list-item',[_c('v-btn',{attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.toggleBreakpoint()}}},[(_vm.breakpoint && _vm.breakpoint != '0')?_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\" mdi-table-large \")]):_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-view-list\")]),_vm._v(\" \"+_vm._s(_vm.breakpoint ? \"View Table\" : \"View List\")+\" \")],1)],1):_vm._e(),(_vm.tableReady && !_vm.hideFooter && _vm.table.length > 10)?_c('v-list-item',[_c('v-btn',_vm._g({attrs:{\"text\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.editDisablePagination = !_vm.editDisablePagination}}},_vm.on),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-select-all\")]),_vm._v(\" \"+_vm._s(_vm.editDisablePagination ? \"Enable Pagination\" : \"Disable Pagination\")+\" \")],1)],1):_vm._e(),(_vm.columnTool && _vm.tableReady && !_vm.$root.customerId)?_c('v-list-item',[(_vm.columnTool && _vm.tableReady && !_vm.$root.customerId)?_c('v-menu',{attrs:{\"close-on-content-click\":false,\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var onMenu = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"small\":\"\",\"text\":\"\"}},'v-btn',attrs,false),Object.assign({}, onMenu)),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-view-column\")]),_vm._v(\" Choose Columns \")],1)]}}],null,false,773248854)},[_c('v-list',{staticClass:\"column-list\"},[_c('draggable',{staticStyle:{\"width\":\"100%\"},attrs:{\"list\":_vm.computedHeaders}},_vm._l(((_vm.computedHeaders || []).filter(\n function (c) {\n return c.value != 'actions';\n }\n )),function(item,index){return _c('v-list-item',{key:index,staticClass:\"pointer\"},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))]),_c('v-switch',{model:{value:(item.show),callback:function ($$v) {_vm.$set(item, \"show\", $$v)},expression:\"item.show\"}})],1)}),1)],1),_c('v-toolbar',[_c('v-btn',{staticStyle:{},attrs:{\"text\":\"\",\"color\":\"info\"},on:{\"click\":function($event){return _vm.saveColumns()}}},[_vm._v(\" Save Columns \")]),_c('v-btn',{staticStyle:{},attrs:{\"text\":\"\",\"color\":\"warning\"},on:{\"click\":function($event){return _vm.resetColumns()}}},[_vm._v(\" Reset Columns \")])],1)],1):_vm._e()],1):_vm._e(),_c('hr'),_vm._l(((_vm.safeToolBarControls || []).filter(function (t) {\n return (\n (!t.default || _vm.$root.isMobile || _vm.$root.isTablet) &&\n (_vm.$root.customerId\n ? t['v-bind'] && !t['v-bind'].noCustomer\n : !t.hidden)\n );\n })),function(c,i){return _c('v-list-item',{key:i},[(\n (!c.default || _vm.$root.isMobile || _vm.$root.isTablet) &&\n c[\"comp\"] == 'v-btn' &&\n c['v-bind'] &&\n !c['v-bind'].hidden &&\n !c.hidden &&\n !_vm.hideCtl(c)\n )?_c('v-btn',{class:c['v-bind'].class,attrs:{\"small\":true,\"color\":c['v-bind'].color,\"text\":c['v-bind'].text,\"loading\":_vm.customBtnLoading},on:{\"click\":function($event){return _vm.customBtnClick(c)}}},[(c['v-bind'] && c['v-bind'].icon)?_c('v-icon',{class:_vm.$vuetify.breakpoint.smAndDown ? 'ma-2' : 'ma-2'},[_vm._v(\" \"+_vm._s(c[\"v-bind\"].icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(c[\"v-bind\"][\"input-value\"])+\" \")],1):(\n !c.default &&\n !_vm.edited &&\n c['v-bind'] &&\n !c['v-bind'].hidden &&\n !_vm.hideCtl(c)\n )?_c(c[\"comp\"],_vm._b({ref:c[\"id\"],refInFor:true,tag:\"component\",attrs:{\"hidden\":c.hidden,\"small\":\"\",\"id\":c[\"id\"],\"table\":_vm.getObject()}},'component',c[\"v-bind\"],false),[_vm._v(\" \"+_vm._s(c.value)+\" \")]):_vm._e()],1)})],2)],1):_vm._e(),_c('div',{staticClass:\"text-center\"},[(_vm.helpText)?_c('v-dialog',{attrs:{\"width\":\"500\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"ma-1\",attrs:{\"icon\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-help-box\")])],1)]}}],null,false,1154043008),model:{value:(_vm.helpModel),callback:function ($$v) {_vm.helpModel=$$v},expression:\"helpModel\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5 grey lighten-2\"},[_vm._v(\" \"+_vm._s(_vm.helpTitle)+\" \")]),_c('v-card-text',[_vm._v(\" \"+_vm._s(_vm.helpText)+\" \")])],1)],1):_vm._e()],1),void 0,(!_vm.isMobile && !_vm.noFullScreen)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-btn',_vm._g({staticClass:\"ma-2\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.toggleFullScreen}},on),[(!_vm.isFullScreen)?_c('v-icon',[_vm._v(\"mdi-fullscreen\")]):_c('v-icon',{attrs:{\"round\":\"\",\"color\":\"error\"}},[_vm._v(\"mdi-fullscreen-exit\")])],1)]}}],null,false,1699007566)},[_c('span',[_vm._v(\"Toggle Full Screen\")])]):_vm._e()],2):_vm._e()],1),(_vm.upload)?_c('div',[_c('v-upload',{attrs:{\"defaultMessage\":\"Drop here excel file to upload\",\"label\":_vm.uploadFieldsTitle,\"objectName\":_vm.data_object.object_name,\"uploadFields\":_vm.uploadFields}})],1):_vm._e(),(_vm.isEditedNew && _vm.edited)?_c('h3',{staticClass:\"ma-2\"},[_vm._v(\" \"+_vm._s(_vm.addButtonCaption ? _vm.addButtonCaption.replace(\"Add\", \"New\") : \"New Record\")+\" \")]):_vm._e(),(_vm.editedTabs.length)?_c('v-tabs',{key:_vm.editedTabsKey,staticClass:\"mt-2\",attrs:{\"hidden\":_vm.hideEditedTabs || _vm.isEditedNew,\"show-arrows\":\"\",\"grow\":\"\"},model:{value:(_vm.edited),callback:function ($$v) {_vm.edited=$$v},expression:\"edited\"}},[_c('v-tab',{key:\"all_records\"},[_vm._v(\"All \"+_vm._s(_vm.tableName))]),_vm._l((_vm.editedTabs),function(t,i){return _c('v-tab',{key:i,on:{\"click\":function($event){return _vm.getCurrentEditedItem(t)}}},[(t.icon)?_c('v-icon',{staticClass:\"pr-2\"},[_vm._v(_vm._s(t.icon))]):_vm._e(),_vm._v(\" \"+_vm._s(t.text)+\" \"),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.removeTab(i)}}},[_c('v-icon',{attrs:{\"x-small\":\"\"}},[_vm._v(\"mdi-close\")])],1)],1)})],2):_vm._e(),(_vm.edited)?_c('div',{staticClass:\"edited-form\"},[_c('div',{tag:\"v-component\",attrs:{\"fullscreen\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-form-card',_vm._b({key:_vm.formKey,ref:\"form\",attrs:{\"dObject\":_vm.dObject,\"inTable\":true,\"panels\":true,\"noCache\":_vm.noCache,\"hasParent\":_vm.hasParent}},'v-form-card',_vm.schema['v-bind'],false))],1),_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-spacer'),(!_vm.childEdited && _vm.edited)?_c('div',{staticClass:\"edit-bar\",attrs:{\"flat\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.cancelEdit}},[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-cancel\")]),_c('span',[_vm._v(\"Cancel Edit\")])],1),(!_vm.disableSave)?_c('v-btn',{staticClass:\"text-right ma-2\",attrs:{\"text\":\"\",\"right\":\"\",\"color\":\"success\"},on:{\"click\":function($event){return _vm.validateAndSave()}}},[_c('v-icon',{staticClass:\"ma-2\"},[_vm._v(\"mdi-check\")]),_c('span',[_vm._v(\" \"+_vm._s(_vm.saveButtonCaption || \"Save\"))])],1):_vm._e(),(_vm.copyRecords)?_c('v-menu',{attrs:{\"close-on-content-click\":false,\"nudge-width\":200,\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g({attrs:{\"text\":\"\",\"small\":\"\"}},on),[_c('v-icon',[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Duplicate \")],1)]}}],null,false,3572175814),model:{value:(_vm.copyMenu),callback:function ($$v) {_vm.copyMenu=$$v},expression:\"copyMenu\"}},[_c('v-card',{staticClass:\"pa-2\"},[_c('h3',[_vm._v(\"Copy \"+_vm._s(_vm.dObject.model[_vm.copyRecords.field_name]))]),_c('br'),_c('v-label',[_vm._v(\" New \"+_vm._s(_vm.copyRecords.field_name)+\" separated by comma: \")]),_c('v-textarea',{model:{value:(_vm.duplicateValues),callback:function ($$v) {_vm.duplicateValues=$$v},expression:\"duplicateValues\"}}),_c('v-btn',{attrs:{\"color\":\"info\"},on:{\"click\":function($event){return _vm.duplicate()}}},[_vm._v(\"Submit\")])],1)],1):_vm._e(),(_vm.errorMessage != '' && _vm.errorMessage)?_c('v-alert',{attrs:{\"dismissible\":\"\",\"dense\":\"\",\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e()],1):_vm._e()],1)],1):_c('div',{ref:\"tableWrap\",class:_vm.hideScroll\n ? ''\n : _vm.$root.isMobile\n ? ''\n : _vm.noHorizontalScroll\n ? 'data-table-wrap-no-hor'\n : 'data-table-wrap',style:({ height: _vm.wrapHeight, 'max-height': _vm.wrapHeight })},[(!_vm.hideScroll)?_c('div',{ref:\"outerScroll\",staticClass:\"outer-scroll\"},[_c('div',{staticClass:\"inner-scroll\",attrs:{\"refs\":\"innerScroll\"}})]):_vm._e(),(\n !_vm.dList &&\n !_vm.dExcel &&\n Array.isArray(_vm.table) &&\n !_vm.mapDialog &&\n _vm.tableReady &&\n _vm.computedHeaders\n )?_c('v-data-table',{directives:[{name:\"draggable\",rawName:\"v-draggable\"}],key:_vm.tableKey,ref:\"dTable\",staticClass:\"row-pointer elevation-1\",style:(_vm.tblStyle),attrs:{\"items\":_vm.filteredItems,\"headers\":(_vm.computedHeaders || []).filter(function (h) {\n return (\n _vm.table.length &&\n !h.hide &&\n (h.show || h.value == 'actions' || _vm.tableEditRow)\n );\n }),\"group-by\":_vm.groupBy,\"group-key\":_vm.groupBy,\"group-desc\":false,\"item-key\":\"_id\",\"show-select\":(!_vm.noDelete && _vm.selectDelete) ||\n _vm.singleSelect ||\n _vm.select ||\n _vm.isDraggable ||\n _vm.selectSwitch,\"show-expand\":_vm.expandable,\"show-group-by\":_vm.showGroupBy,\"fixed-header\":_vm.fixedHeader,\"height\":_vm.tableHeight,\"disable-pagination\":_vm.editDisablePagination,\"hide-default-footer\":true,\"hide-default-header\":_vm.hideHeader,\"items-per-page\":_vm.itemsPerPageEdited,\"mobile-breakpoint\":_vm.breakpoint,\"options\":_vm.pagination,\"dense\":\"\",\"expand\":_vm.expand,\"expanded\":_vm.expanded,\"transition\":\"slide-y-transition\",\"page\":_vm.page,\"loading\":_vm.loading,\"search\":_vm.searchLen ? _vm.searchTrigger : _vm.search,\"item-class\":_vm.itemClass,\"disable-sort\":_vm.disableSort,\"single-select\":(_vm.singleSelect && !_vm.selectDelete) || (_vm.noDelete && !_vm.select),\"server-items-length\":_vm.serverItemsLength,\"custom-sort\":_vm.customSorting,\"custom-filter\":_vm.customFilter ? _vm.customFiltering : _vm.defaultFilter,\"tableName\":_vm.tableName},on:{\"click:row\":_vm.handleClick,\"pagination\":_vm.onPagination,\"item-selected\":function($event){_vm.itemSelected || null},\"update:options\":function($event){_vm.pagination=$event},\"update:expand\":function($event){_vm.expand=$event},\"update:expanded\":function($event){_vm.expanded=$event},\"sorted\":_vm.saveOrder,\"update:page\":function($event){_vm.page=$event},\"update:sort-by\":_vm.getSortBy,\"update:sort-desc\":_vm.getSortDesc,\"update:group-by\":_vm.getGroupBy,\"update:group-desc\":_vm.handleGroupDescChange},scopedSlots:_vm._u([(_vm.isGoToButton)?{key:\"item.goto\",fn:function(ref){\n var item = ref.item;\nreturn [_c('v-btn',{attrs:{\"small\":\"\",\"elevation\":\"0\"},on:{\"click\":function($event){return _vm.goToButtonAction(item)}}},[_vm._v(\" \"+_vm._s(_vm.goToButtonText)+\" \")])]}}:null,{key:\"body.prepend\",fn:function(){return [(_vm.showAdvancedSearch)?_c('tr',_vm._l((_vm.computedHeaders),function(h,i){return _c('td',{key:i,staticStyle:{\"min-width\":\"150px\",\"padding\":\"0px\"}},[_c('v-form-component',{ref:h.value,refInFor:true,attrs:{\"name\":h.value,\"schema\":_vm.getSchema({ name: h.value }),\"k\":h.value,\"model\":_vm.searchModel,\"hasParent\":_vm.hasParent}})],1)}),0):_vm._e()]},proxy:true},{key:\"top\",fn:function(){return [(_vm.$root.isMobile)?_c('div',{staticClass:\"custom-sort-control mb-n10 mt-n6 pl-4 pt-4\"},[(\n _vm.filteredTabItems.length &&\n _vm.filteredTabItems.length > 1 &&\n !_vm.noTabs &&\n _vm.$root.isMobile\n )?_c('v-select',{staticClass:\"mb-1 mr-1 mt-2\",attrs:{\"clearable\":\"\",\"items\":_vm.filteredTabItems,\"item-text\":\"caption\",\"item-value\":\"value\",\"outlined\":false,\"filled\":\"\",\"label\":_vm.filterComboLabel || 'Filter'},on:{\"change\":_vm.applyFilter}}):_vm._e()],1):_vm._e()]},proxy:true},{key:\"header\",fn:function(props){return (\n props.props.headers.some(function (h) {\n return h['v-bind'] && h['v-bind'].span && !h['v-bind'].noSpan;\n })\n )?[_vm._l(((props.props.headers || []).filter(function (r) {\n return !r['v-bind'] && !r.value == 'actions';\n })),function(h,i){return _c('td',{key:i},[_vm._v(\" \"+_vm._s(h.text)+\" \")])}),_vm._l(((props.props.headers || []).filter(function (r) {\n return r['v-bind'] && r['v-bind'].span;\n })),function(h,i){return _c('td',{key:i,attrs:{\"colspan\":h['v-bind'] ? h['v-bind'].span.headers.length : 1}},[(h['v-bind'])?_c('v-row',{staticClass:\"ma-2 pr-12\"},_vm._l((h['v-bind'].span.headers),function(s,j){return _c('v-col',{key:j},[_c('span',{class:'ml-n' + j * 6},[_vm._v(_vm._s(s))])])}),1):_vm._e()],1)})]:undefined}},{key:\"group.header\",fn:function(props){return [_c('td',{attrs:{\"colspan\":props.headers.length}},[_c('v-btn',{ref:\"group\",staticClass:\"ma-2\",attrs:{\"small\":\"\",\"text\":\"\",\"data-open\":props.isOpen},on:{\"click\":props.toggle}},[(props.isOpen)?_c('v-icon',{ref:'openGroup_' + props.group},[_vm._v(\" mdi-chevron-up \")]):_c('v-icon',{ref:'closeGroup_' + props.group},[_vm._v(\" mdi-chevron-down \")]),_c('h4',[_vm._v(\" \"+_vm._s(_vm.capitalize(_vm.getGroupName(props)))+\" \")])],1),_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({ref:\"removeGroup\",attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":props.remove}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-close\")])],1)]}}],null,true)},[_vm._v(\" Ungroup \")])],1)]}},{key:\"item.data-table-select\",fn:function(item){return [(\n (_vm.selectDelete && !_vm.noDelete) ||\n _vm.select ||\n _vm.singleSelect ||\n _vm.selectSwitch\n )?_c('td',{staticStyle:{\"max-width\":\"25px\",\"overflow\":\"hidden\"}},[(\n (!_vm.droppedObjects || !_vm.sortedDraggedObjects(item).length) &&\n ((item.item._id && !_vm.disabledProperty) ||\n (_vm.disabledValue &&\n item.item[_vm.disabledProperty] !== _vm.disabledValue) ||\n (!_vm.disabledValue && !item.item[_vm.disabledProperty]))\n )?_c('v-checkbox',{staticClass:\"mt-0 mb-n4\",on:{\"change\":function($event){_vm.log(item);\n item.select($event);}},model:{value:(item.isSelected),callback:function ($$v) {_vm.$set(item, \"isSelected\", $$v)},expression:\"item.isSelected\"}}):_vm._e()],1):_vm._e(),(_vm.isDraggable)?_c('td',[_c('v-tooltip',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-icon',_vm._g({staticClass:\"drag-handle\"},on),[_vm._v(\"mdi-drag\")])]}}],null,true)},[_c('span',[_vm._v(\"Drag to reorder\")])])],1):_vm._e(),(_vm.rowIcons)?_c('td',_vm._l((_vm.rowIcons(item)),function(i,j){return _c('span',{key:j},[_c('v-icon',{attrs:{\"color\":i.color}},[_vm._v(_vm._s(i.icon))]),_vm._v(\" \"+_vm._s(i.title)+\" \")],1)}),0):_vm._e()]}},_vm._l((_vm.capitalizable),function(field,i){return {key:[\"item.\" + field],fn:function(props){return [(\n _vm.schema.properties[field] && _vm.schema.properties[field].template\n )?_c('div',{key:i,domProps:{\"innerHTML\":_vm._s(_vm.getTemplate(props.item, { name: field }))}}):(props.item[field] && _vm.schema.properties[field])?_c('div',{key:field},[_vm._v(\" \"+_vm._s(props.item[field] && _vm.schema.properties[field][\"v-bind\"] ? _vm.schema.properties[field][\"v-bind\"] && _vm.schema.properties[field][\"v-bind\"].returnObject ? _vm.schema.properties[field][\"v-bind\"] ? props.item[field][ _vm.schema.properties[field][\"v-bind\"].itemText ] : _vm.capitalize(props.item[field].toString()) : \"\" : \"\")+\" \")]):_vm._e()]}}}),_vm._l((_vm.specialFields),function(slot,i){return {key:(\"item.\" + (slot.model)),fn:function(ref){\n var item = ref.item;\nreturn [(item[slot.model] && _vm.dialogFields)?_c('v-text-dialog',{key:i,attrs:{\"vModel\":item[slot.model],\"width\":slot.width,\"icon\":_vm.getTextDialogIcon(slot, item)}}):_vm._e(),(item[slot.model] && !_vm.dialogFields)?_c('v-alert',{key:i,staticClass:\"ma-2\",attrs:{\"dense\":\"\",\"text\":\"\",\"color\":_vm.$vuetify.theme.dark\n ? _vm.invertColor(\n _vm.getItemColor(\n item[slot.model],\n slot.model,\n item,\n _vm.tableName\n )\n )\n : _vm.getItemColor(item[slot.model], slot.model, item, _vm.tableName)}},[_c('span',{staticStyle:{\"white-space\":\"nowrap\"}},[_vm._v(\" \"+_vm._s(_vm.getChipValue(item, slot.model))+\" \")])]):_vm._e()]}}}),_vm._l((_vm.editable),function(field,i){return {key:[\"item.\" + field.name],fn:function(props){return [(\n !_vm.editRow &&\n ((props.item._id != _vm.newRowId &&\n !_vm.readonly &&\n !field.directEdit &&\n _vm.editedItem &&\n props.item._id &&\n props.item._id != _vm.newRowId) ||\n (!_vm.editedItem &&\n !_vm.readonly &&\n !field.nonUpdatable &&\n !field.directEdit &&\n props.item._id != _vm.newRowId))\n )?_c('v-edit-dialog',{key:field.name + i,ref:field.name + props.item._id,refInFor:true,attrs:{\"save-text\":\"apply\"},on:{\"cancel\":_vm.cancel,\"open\":function($event){return _vm.open(field, props)},\"close\":_vm.close,\"save\":function($event){return _vm.emitDialogSave(props.item, field.name)}},scopedSlots:_vm._u([{key:\"input\",fn:function(){return [_c('v-form-component',{ref:field.name,refInFor:true,attrs:{\"name\":field.name,\"model\":props.item,\"parentModel\":props.item,\"parModel\":_vm.formModel,\"schema\":_vm.getSchema(field, props.item),\"parentSchema\":_vm.parObject || {},\"parentSchemaObject\":_vm.getParentSchema(),\"inLine\":true,\"k\":field.name,\"defaultDataFn\":_vm.defaultDataFn,\"placeholder\":_vm.schema.properties[field.name].title,\"click\":_vm.selectCtl,\"onValueChange\":_vm.onValueChange,\"autofocus\":true,\"dialogOpen\":true,\"hasParent\":_vm.hasParent,\"noCache\":_vm.noCache}}),(_vm.showComponent(field.name, props.item))?_c('v-toolbar',{attrs:{\"flat\":\"\"}},[_c('v-spacer'),(!_vm.schema.properties[field.name].noEditDialogButtons)?_c('v-btn',{attrs:{\"small\":\"\",\"text\":\"\",\"color\":\"info\"},on:{\"click\":function($event){return _vm.emitDialogSave(props.item, field.name)}}},[_vm._v(\" \"+_vm._s(_vm.getSaveTitle(field.name))+\" \")]):_vm._e(),_c('v-btn',{ref:\"cancelBtn\",refInFor:true,attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.closeDialog(field.name + props.item._id)}}},[_vm._v(\" Close \")])],1):_vm._e()]},proxy:true}],null,true),model:{value:(_vm.dialogModel),callback:function ($$v) {_vm.dialogModel=$$v},expression:\"dialogModel\"}},[(\n _vm.schema.properties && _vm.getColor(props, field) == 'underscore'\n )?_c('div',{class:_vm.$vuetify.breakpoint.smAndDown ? '' : _vm.getColor(props, field),domProps:{\"innerHTML\":_vm._s(_vm.getField(props, field))}}):_c('v-chip',{attrs:{\"color\":_vm.getColor(props, field).replace(' editable', '')}},[_c('div',{staticClass:\"chip-text\"},[_vm._v(\" \"+_vm._s(_vm.getField(props, field) || \"\")+\" \")])])],1):_vm._e(),(\n (_vm.editRow && !field.hideTitle) ||\n (_vm.readonly &&\n _vm.schema.properties &&\n _vm.getColor(props, field) == 'underscore')\n )?_c('div',{key:field.name + i,class:_vm.$vuetify.breakpoint.smAndDown\n ? ''\n : _vm.editRow\n ? ''\n : _vm.getColor(props, field),domProps:{\"innerHTML\":_vm._s(_vm.getField(props, field))}}):_vm._e(),_c('div',{key:i,class:_vm.$vuetify.breakpoint.mdAndUp ? 'mb-2 ml-n6' : 'mb-3 ml-2',style:(_vm.$vuetify.breakpoint.mdAndUp && _vm.getSchema(field)[field.name]\n ? 'width:' + _vm.getSchema(field)[field.name].width + 'px'\n : '')},[(\n _vm.disabledProperty &&\n props.item[_vm.disabledProperty] == _vm.disabledValue &&\n field.name == _vm.disabledProperty\n )?_c('div',{staticStyle:{\"width\":\"100px\"}},[_vm._v(\" \"+_vm._s(_vm.capitalize(props.item[_vm.disabledProperty]))+\" \")]):_vm._e(),(\n _vm.schema.properties[field.name] &&\n _vm.schema.properties[field.name].template &&\n !_vm.editable.includes(field)\n )?_c('div',{staticClass:\"mb-n7 mt-n2 pa-0\"},[_vm._v(\" \"+_vm._s(_vm.getTemplate(props.item, field))+\" \")]):_vm._e(),_c('div',{class:_vm.$vuetify.breakpoint.mdAndUp ? '' : ''},[(\n _vm.schema.properties[field.name] &&\n ((_vm.schema.properties[field.name] &&\n !_vm.schema.properties[field.name].template &&\n props.item._id != _vm.newRowId &&\n !_vm.schema.properties[field.name].NoFirstRowEditable &&\n _vm.directEdit &&\n field.directEdit != false &&\n (props.item._id || _vm.tableInsertable) &&\n ((!_vm.disabledProperty && _vm.schema.properties[field.name]) ||\n props.item[_vm.disabledProperty] != _vm.disabledValue)) ||\n (props.item._id == _vm.newRowId &&\n !_vm.schema.properties[field.name].NoFirstRowEditable &&\n _vm.tableInsertable &&\n !field.directEdit) ||\n (!_vm.directEdit && field.directEdit == true))\n )?_c('v-form-component',{ref:field.name,refInFor:true,staticClass:\"mb-n8 mt-n2 pa-0 ml-6\",attrs:{\"mainTab\":_vm.formMainTab,\"name\":field.name,\"model\":props.item,\"parentModel\":props.item,\"parModel\":_vm.formModel,\"schema\":_vm.getSchema(field, props.item),\"parentSchema\":_vm.parObject || {},\"parentSchemaObject\":_vm.getParentSchema(),\"inLine\":true,\"k\":field.name,\"inserted\":_vm.tableInsertable,\"compclass\":'mb-n4 mt-n2 pa-0',\"placeholder\":_vm.schema.properties[field.name].title,\"click\":_vm.selectCtl,\"defaultDataFn\":_vm.defaultDataFn,\"onValueChange\":_vm.onValueChange,\"hasParent\":_vm.hasParent}}):_vm._e()],1)])]}}}),{key:[\"item.\" + _vm.link.field],fn:function(props){return (_vm.link && _vm.link.field)?[_c('router-link',{attrs:{\"to\":{\n name: _vm.link.name + '_' + props.item[_vm.link.field],\n params: { id: props.item[_vm.link.field] }\n }}},[_c('div',{on:{\"click\":function($event){_vm.linkClick ? _vm.linkClick(props.item) : _vm.myLinkClick(props.item)}}},[_vm._v(\" \"+_vm._s(props.item[_vm.link.field])+\" \")])])]:undefined}},{key:\"item.actions\",fn:function(props){return (_vm.tableEditRow || _vm.actionCommand)?[_c('v-toolbar',{staticStyle:{\"background-color\":\"transparent\"},attrs:{\"flat\":\"\"}},[_c('v-spacer'),(_vm.tableEditRow)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.editCurrentRecord(props.item)}}},[_c('v-icon',[_vm._v(\"mdi-pencil\")])],1):_vm._e(),_vm._l((_vm.editControls),function(c,i){return _c(c[\"comp\"],_vm._b({key:i,ref:c[\"id\"],refInFor:true,tag:\"component\",staticClass:\"ml-0\",attrs:{\"small\":\"\",\"id\":c[\"id\"],\"formModel\":props.item}},'component',c[\"v-bind\"],false))}),_vm._l((_vm.actionCommand),function(c,i){return _c('v-tooltip',{key:i,attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('v-badge',{staticClass:\"custom-badge-position\",attrs:{\"bordered\":\"\",\"content\":props.item[c.badge],\"value\":props.item[c.badge] ? true : false,\"color\":\"error\",\"overlap\":\"\"}},[_c('v-btn',_vm._g({attrs:{\"color\":c.color,\"icon\":\"\"},on:{\"click\":function($event){c.action\n ? c.action(props.item)\n : _vm.customAction(props.item, c.actionName)}}},on),[(c.icon)?_c('v-icon',[_vm._v(_vm._s(c.icon))]):_vm._e(),(c.commandText)?_c('div',[_vm._v(\" \"+_vm._s(c.commandText(props.item))+\" \")]):_vm._e()],1)],1)]}}],null,true)},[_vm._v(\" \"+_vm._s(c.text)+\" \")])})],2)]:undefined}},{key:\"item.data-table-expand\",fn:function(ref){\n var item = ref.item;\n var expand = ref.expand;\n var isExpanded = ref.isExpanded;\nreturn [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [(item._id)?_c('v-icon',_vm._g({ref:\"expandIcon\",on:{\"click\":function($event){expand(!isExpanded);\n _vm.doExpand(item, isExpanded);}}},on),[_vm._v(\" \"+_vm._s(isExpanded ? \"mdi-arrow-up-drop-circle-outline\" : \"mdi-arrow-down-drop-circle-outline\")+\" \")]):_vm._e()]}}],null,true)},[_c('span',[_vm._v(\"More Detail\")])])]}},{key:\"expanded-item\",fn:function(ref){\n var headers = ref.headers;\n var item = ref.item;\nreturn [_c('td',{staticClass:\"ma-0 pa-0\",staticStyle:{\"height\":\"auto\",\"overflow\":\"hidden\"},attrs:{\"colspan\":headers.length}},[_c('v-container',[_c('v-row',{key:_vm.dropKey,staticClass:\"drop-zone\",attrs:{\"align\":\"start\",\"justify\":\"start\"}},_vm._l((_vm.sortedDraggedObjects(item)),function(d,i){return _c('v-col',{key:d._id,attrs:{\"draggable\":true},on:{\"dragover\":function($event){$event.preventDefault();return _vm.onDragOver($event, i)},\"dragstart\":function($event){return _vm.onDragStart(d, i)},\"drop\":function($event){return _vm.onDropItem(item, i)}}},[_c('v-card',{domProps:{\"innerHTML\":_vm._s(\n _vm.droppedObjectTemplate ? _vm.droppedObjectTemplate(d, i) : ''\n )}})],1)}),1)],1)],1)]}},(_vm.$root.isMobile && _vm.mobileViewTemplate && _vm.breakpoint)?{key:\"item\",fn:function(ref){\n var item = ref.item;\n var index = ref.index;\nreturn [_c('v-mobile-view-table-template',{attrs:{\"tableName\":_vm.tableName,\"item\":item,\"index\":index,\"getItemColor\":_vm.getItemColor ? _vm.getItemColor : null,\"editCurrentRecord\":_vm.editCurrentRecord,\"linkClick\":_vm.linkClick,\"getTemplate\":_vm.getTemplate,\"parentObject\":_vm.parentObject}})]}}:null],null,true),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_c('template',{slot:\"footer\"},[(_vm.totalFields)?_c('hr'):_vm._e(),(_vm.totalFields)?_c('table',{staticClass:\"v-data-table mt-2\",staticStyle:{\"width\":\"100%\"}},[_c('tr',_vm._l((_vm.filteredHeaders),function(header,j){return _c('td',{key:j,attrs:{\"align\":\"right\"}},_vm._l((_vm.tableTotal),function(f,i){return _c('span',{key:i},[_c('strong',[(_vm.tableTotal[i]['field'] == header.value)?_c('span',{staticClass:\"mr-6\"},[_vm._v(\" \"+_vm._s(parseFloat(_vm.tableTotal[i][\"total\"]).toFixed(2))+\" \")]):_vm._e()])])}),0)}),0)]):_vm._e(),_c('div',{staticClass:\"fixed-footer\"},[_c('tr',[(_vm.editedItem && !_vm.tableInsertable)?_c('td'):_vm._e(),(_vm.editedItem && !_vm.tableInsertable)?_c('td',[_c('v-table-edited-item',{ref:\"edit_combo\",attrs:{\"editedItem\":_vm.editedItem,\"isNew\":_vm.isNew,\"onValueChange\":_vm.onValueChange,\"save\":_vm.save}})],1):_vm._e()]),_c('hr')])])],2):_vm._e()],1),(_vm.dList)?_c('d-list',{key:_vm.listKey,attrs:{\"width\":\"100%\",\"data_object\":_vm.data_object,\"editData\":_vm.editData,\"editRec\":_vm.editRec}}):_vm._e(),(_vm.dExcel)?_c('excel-table',{key:_vm.excelKey,ref:\"excel_table\",staticClass:\"mt-n4\",attrs:{\"table\":_vm.table,\"headers\":_vm.headers,\"data_object\":_vm.data_object,\"columnWidth\":_vm.excelColumnWidth},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}}):_vm._e(),(_vm.successMessage)?_c('v-snackbar',{attrs:{\"timeout\":5000,\"color\":\"success\"},scopedSlots:_vm._u([{key:\"action\",fn:function(ref){\n var attrs = ref.attrs;\nreturn [_c('v-btn',_vm._b({attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.successMessage = false}}},'v-btn',attrs,false),[_vm._v(\" Close \")])]}}],null,false,2702708244),model:{value:(_vm.successMessage),callback:function ($$v) {_vm.successMessage=$$v},expression:\"successMessage\"}},[_vm._v(\" \"+_vm._s(_vm.successMessage)+\" \")]):_vm._e(),(_vm.errorMessage != '' && _vm.errorMessage)?_c('v-alert',{staticClass:\"ma-4\",attrs:{\"timeout\":\"3000\",\"dismissible\":\"\",\"type\":\"error\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e(),(_vm.$root.isMobile)?_c('v-app-bar',{staticClass:\"bottom-bar\",attrs:{\"bottom\":\"\",\"app\":true}},[_c('v-toolbar',{attrs:{\"flat\":\"\"}},[(\n _vm.tableReady &&\n !_vm.hideFooter &&\n _vm.table.length > 10 &&\n !_vm.editDisablePagination &&\n !_vm.disablePagination\n )?_c('v-pager',{attrs:{\"pageStart\":_vm.pageStart,\"pageStop\":_vm.pageStop,\"itemsLength\":_vm.itemsCount,\"navigate\":_vm.navigate,\"page\":_vm.page}}):_vm._e()],1)],1):_vm._e()],1),_c('v-dialog',{staticClass:\"assistant\",attrs:{\"width\":\"600\"},model:{value:(_vm.assistantModel),callback:function ($$v) {_vm.assistantModel=$$v},expression:\"assistantModel\"}},[(_vm.assistantVBind.customInstructions)?_c('v-ai-chat',_vm._b({},'v-ai-chat',_vm.assistantVBind,false)):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table copy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Table copy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Table copy.vue?vue&type=template&id=30847eae&\"\nimport script from \"./Table copy.vue?vue&type=script&lang=js&\"\nexport * from \"./Table copy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Table copy.vue?vue&type=style&index=0&lang=css&\"\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 null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VEditDialog } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VLabel } from 'vuetify/lib/components/VLabel';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VAlert,VAppBar,VAutocomplete,VBadge,VBtn,VCard,VCardText,VCardTitle,VCheckbox,VChip,VCol,VContainer,VDataTable,VDialog,VEditDialog,VIcon,VLabel,VList,VListItem,VListItemTitle,VMenu,VRow,VSelect,VSnackbar,VSpacer,VSwitch,VTab,VTabs,VTextField,VTextarea,VToolbar,VTooltip})\n"],"sourceRoot":""}