mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 08:34:29 +00:00
Merge branch 'master' into feature-40896/kennzeichnung_unruly_person
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
html {
|
||||
font-size: .75em;
|
||||
}
|
||||
@@ -15,8 +15,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {BismeldestichtagTabulatorOptions} from './TabulatorSetup.js';
|
||||
import {BismeldestichtagTabulatorEventHandlers} from './TabulatorSetup.js';
|
||||
import {BismeldestichtagHelper} from './BismeldestichtagHelper.js';
|
||||
|
||||
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
|
||||
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
|
||||
@@ -29,8 +28,60 @@ import Phrasen from '../../plugin/Phrasen.js';
|
||||
const bismeldestichtagApp = Vue.createApp({
|
||||
data: function() {
|
||||
return {
|
||||
bismeldestichtagTabulatorOptions: BismeldestichtagTabulatorOptions,
|
||||
bismeldestichtagTabulatorEventHandlers: BismeldestichtagTabulatorEventHandlers,
|
||||
bismeldestichtagTabulatorOptions: {
|
||||
maxHeight: "100%",
|
||||
minHeight: 50,
|
||||
layout: 'fitColumns',
|
||||
index: 'meldestichtag_id',
|
||||
initialSort:[
|
||||
{column:"meldestichtag", dir:"desc"}
|
||||
],
|
||||
columns: [
|
||||
{title: 'Meldestichtag', field: 'meldestichtag', headerFilter: true, formatter: function(cell){
|
||||
return BismeldestichtagHelper.formatDate(cell.getValue());
|
||||
}
|
||||
},
|
||||
{title: 'Studiensemester', field: 'studiensemester_kurzbz', headerFilter: true, sorter:function(a, b, aRow, bRow, column, dir, sorterParams) {
|
||||
|
||||
//aRow, bRow - the row components for the values being compared
|
||||
let semesterStartA = new Date(aRow.getData().semester_start);
|
||||
let semesterStartB = new Date(bRow.getData().semester_start);
|
||||
|
||||
return semesterStartA - semesterStartB; // difference between studiensemester start dates
|
||||
}
|
||||
},
|
||||
{title: 'Semesterstart',field: 'semester_start', headerFilter: true, visible: false, formatter: function(cell){
|
||||
return BismeldestichtagHelper.formatDate(cell.getValue());
|
||||
}
|
||||
},
|
||||
{title: 'ID', field: 'meldestichtag_id', headerFilter: true, visible: false},
|
||||
{title: 'Insertamum', field: 'insertamum', headerFilter: true, visible: false},
|
||||
{title: 'Insertvon', field: 'insertvon', headerFilter: true, visible: false},
|
||||
{title: 'Löschen', field: 'loeschen', headerFilter: false, formatter:function(cell){
|
||||
return '<button class="btn btn-outline-secondary delete-btn" data-meldestichtag-id="'+cell.getRow().getIndex()+'">'+
|
||||
'<i class="fa fa-xmark"></i>'+
|
||||
'</button>';
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
bismeldestichtagTabulatorEventHandlers: [
|
||||
{
|
||||
event: "rowClick",
|
||||
handler: function(e, row) {
|
||||
if (e.target.nodeName == 'DIV') {
|
||||
let data = row.getData();
|
||||
alert(data.studiensemester_kurzbz + ': ' + BismeldestichtagHelper.formatDate(data.meldestichtag));
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
event: "tableBuilt",
|
||||
handler: () => {
|
||||
this.handlerStudiensemester();
|
||||
}
|
||||
}
|
||||
],
|
||||
meldestichtag: null, // date of Meldestichtag
|
||||
semList: null, // all Studiensemester for dropdown
|
||||
currSem: null, // selected Studiensemester
|
||||
@@ -47,9 +98,6 @@ const bismeldestichtagApp = Vue.createApp({
|
||||
CoreFetchCmpt,
|
||||
"datepicker": VueDatePicker
|
||||
},
|
||||
created() {
|
||||
this.handlerStudiensemester();
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* Define Studiensemester call and method to be executed after the call
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Copyright (C) 2022 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
export const BismeldestichtagHelper = {
|
||||
formatDate: function(date) {
|
||||
return date.replace(/(.*)-(.*)-(.*)/, '$3.$2.$1');
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2022 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const BismeldestichtagTabulatorOptions = {
|
||||
maxHeight: "100%",
|
||||
minHeight: 50,
|
||||
layout: 'fitColumns',
|
||||
index: 'meldestichtag_id',
|
||||
columns: [
|
||||
{title: 'Meldestichtag',field: 'meldestichtag', headerFilter: true, formatter: function(cell){
|
||||
return BismeldestichtagTabulatorHelperFunctions._formatDate(cell.getValue());
|
||||
}
|
||||
},
|
||||
{title: 'Studiensemester', field: 'studiensemester_kurzbz', headerFilter: true, sorter:function(a, b, aRow, bRow, column, dir, sorterParams) {
|
||||
|
||||
//aRow, bRow - the row components for the values being compared
|
||||
let semesterStartA = new Date(aRow.getData().semester_start);
|
||||
let semesterStartB = new Date(bRow.getData().semester_start);
|
||||
|
||||
return semesterStartA - semesterStartB; // difference between studiensemester start dates
|
||||
}
|
||||
},
|
||||
{title: 'Semesterstart',field: 'semester_start', headerFilter: true, visible: false, formatter: function(cell){
|
||||
return BismeldestichtagTabulatorHelperFunctions._formatDate(cell.getValue());
|
||||
}
|
||||
},
|
||||
{title: 'ID', field: 'meldestichtag_id', headerFilter: true, visible: false},
|
||||
{title: 'Insertamum', field: 'insertamum', headerFilter: true, visible: false},
|
||||
{title: 'Insertvon', field: 'insertvon', headerFilter: true, visible: false},
|
||||
{title: 'Löschen', field: 'loeschen', headerFilter: false, formatter:function(cell){
|
||||
return '<button class="btn btn-outline-secondary delete-btn" data-meldestichtag-id="'+cell.getRow().getIndex()+'">'+
|
||||
'<i class="fa fa-xmark"></i>'+
|
||||
'</button>';
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const BismeldestichtagTabulatorEventHandlers = [
|
||||
{
|
||||
event: "rowClick",
|
||||
handler: function(e, row) {
|
||||
if (e.target.nodeName == 'DIV') {
|
||||
let data = row.getData();
|
||||
alert(data.studiensemester_kurzbz + ': ' + BismeldestichtagTabulatorHelperFunctions._formatDate(data.meldestichtag));
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
let BismeldestichtagTabulatorHelperFunctions = {
|
||||
_formatDate: function(date) {
|
||||
return date.replace(/(.*)-(.*)-(.*)/, '$3.$2.$1');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Copyright (C) 2023 fhcomplete.org
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';
|
||||
import {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';
|
||||
import FhcAlert from '../../../plugin/FhcAlert.js';
|
||||
import FhcApi from "../../../plugin/FhcApi.js";
|
||||
import Phrasen from "../../../plugin/Phrasen.js";
|
||||
|
||||
|
||||
const lvTemplatesApp = Vue.createApp({
|
||||
components: {
|
||||
CoreNavigationCmpt,
|
||||
LvTemplateUebersicht
|
||||
}
|
||||
});
|
||||
|
||||
lvTemplatesApp
|
||||
.use(primevue.config.default,{zIndex: {overlay: 9999}})
|
||||
.use(FhcAlert)
|
||||
.use(FhcApi)
|
||||
.use(Phrasen)
|
||||
.mount('#main')
|
||||
@@ -0,0 +1,289 @@
|
||||
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
|
||||
import CoreFormInput from "../../components/Form/Input.js";
|
||||
|
||||
// Fields used to restructure table data for dataTree
|
||||
const idField = 'lehrveranstaltung_id';
|
||||
const parentIdField = 'lehrveranstaltung_template_id';
|
||||
const STUDIENSEMESTER_DROPDOWN_STARTDATE = '2011-01-01';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CoreFilterCmpt,
|
||||
CoreFormInput
|
||||
},
|
||||
data: function() {
|
||||
return {
|
||||
table: null,
|
||||
studiensemester: [],
|
||||
selectedStudiensemester: '',
|
||||
cbDataTreeStartExpanded: false // checkbox expand dataTree or not
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tabulatorOptions() {
|
||||
const fhcValuesLookup = function(cell) {
|
||||
var values = {};
|
||||
const field = cell.getField();
|
||||
const data = cell.getTable().getData();
|
||||
const collectvalues = function(rows, field) {
|
||||
var values = {};
|
||||
var childvalues = {};
|
||||
for(const row of rows) {
|
||||
const rowvalue = (row[field] !== null) ? row[field] : '';
|
||||
values[rowvalue] = rowvalue;
|
||||
if(row['_children'] && row['_children'].length > 0) {
|
||||
childvalues = collectvalues(row['_children'], field);
|
||||
values = {...values, ...childvalues}
|
||||
}
|
||||
}
|
||||
return values;
|
||||
}
|
||||
values = collectvalues(data, field);
|
||||
const vals = Object.keys(values).sort();
|
||||
if(vals.indexOf('') === -1) {
|
||||
vals.unshift('');
|
||||
}
|
||||
return vals;
|
||||
};
|
||||
const fhctreefilter = function(headerValue, rowValue, rowData, filterParams){
|
||||
if (rowData['_children'] && rowData['_children'].length > 0) {
|
||||
for (var i in rowData['_children']) {
|
||||
return rowValue == headerValue ||
|
||||
fhctreefilter(
|
||||
headerValue,
|
||||
rowData['_children'][i][filterParams.field],
|
||||
rowData['_children'][i],
|
||||
filterParams
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return rowValue == headerValue;
|
||||
};
|
||||
const self = this;
|
||||
return {
|
||||
// NOTE: data is set on table built to await preselected actual Studiensemester
|
||||
ajaxResponse(url, params, response) {
|
||||
return self.prepDataTreeData(response.data) // Prepare data for dataTree view
|
||||
},
|
||||
layout: 'fitColumns',
|
||||
autoResize: false, // prevent auto resizing of table
|
||||
resizableColumnFit: true, //maintain the fit of columns when resizing
|
||||
index: 'lehrveranstaltung_id',
|
||||
selectable: true,
|
||||
selectableRangeMode: 'click',
|
||||
dataTree: true,
|
||||
dataTreeStartExpanded: self.cbDataTreeStartExpanded,
|
||||
dataTreeChildIndent: 15, //indent child rows by 15 px
|
||||
persistence:{
|
||||
filter: false, //persist filter sorting
|
||||
},
|
||||
columns: [
|
||||
{title: 'LV-ID', field: 'lehrveranstaltung_id', headerFilter: true, visible: false},
|
||||
{title: 'LV Kurzbz', field: 'kurzbz', headerFilter: true, visible:false, width: 70},
|
||||
{title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_kurzbz'}, visible:true, width: 80},
|
||||
{title: 'OrgEinheit', field: 'lv_oe_bezeichnung', headerFilter: true, visible: false, width: 250},
|
||||
{title: 'Lehrtyp Kurzbz', field: 'lehrtyp_kurzbz', headerFilter: true, visible:false, width: 70},
|
||||
{title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_bezeichnung'}, width: 150},
|
||||
{title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'orgform_kurzbz'}, width: 70},
|
||||
{title: 'Semester', field: 'semester', headerFilter: true, width: 50},
|
||||
{title: 'Lehrveranstaltung', field: 'lv_bezeichnung', headerFilter: true, minWidth: 250},
|
||||
{title: 'Lehrveranstaltung ENG', field: 'bezeichnung_english', headerFilter: true, minWidth: 250},
|
||||
{title: 'ECTS', field: 'ects', headerFilter: true, width: 50, hozAlign: 'right'},
|
||||
{title: 'Lehrform', field: 'lehrform_kurzbz', headerFilter: true, width: 50},
|
||||
{title: 'Sprache', field: 'sprache', headerFilter: true, width: 100},
|
||||
{title: 'Aktiv', field: 'aktiv', width: 50,
|
||||
formatter:"tickCross",
|
||||
headerFilter:"tickCross",
|
||||
headerFilterParams:{"tristate": true},
|
||||
hozAlign:"center",
|
||||
formatterParams: {
|
||||
tickElement: '<i class="fa fa-check text-success"></i>',
|
||||
crossElement: '<i class="fa fa-xmark text-danger"></i>'
|
||||
}
|
||||
},
|
||||
{title: 'Studienplan', field: 'studienplan_bezeichnung', headerFilter: true, visible:true, width: 220},
|
||||
{title: 'OE Kurzbz', field: 'lv_oe_kurzbz', headerFilter: true, visible:false, minWidth: 80},
|
||||
{
|
||||
title: this.$p.t('global/aktionen'),
|
||||
field: 'actions',
|
||||
width: 140,
|
||||
formatter: (cell, formatterParams, onRendered) => {
|
||||
let container = document.createElement('div');
|
||||
container.className = "d-flex gap-2";
|
||||
|
||||
let button = document.createElement('button');
|
||||
button.className = 'btn btn-outline-secondary';
|
||||
button.innerHTML = '<i class="fa fa-external-link"></i> ' + this.$p.t('global/verwalten');
|
||||
button.addEventListener('click', (event) => this.openAdminLvTemplate(event, cell.getRow()));
|
||||
container.append(button);
|
||||
|
||||
return container;
|
||||
},
|
||||
frozen: true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
urlToAdminAllTemplates() {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.app_root +
|
||||
'vilesci/lehre/lehrveranstaltung.php?stg_kz=99999&semester=-1&orgform=-1';
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async loadAndSetStudiensemester(){
|
||||
const result = await this.$fhcApi
|
||||
.get('api/frontend/v1/organisation/Studiensemester/getAll', {start: STUDIENSEMESTER_DROPDOWN_STARTDATE})
|
||||
.then(result => this.studiensemester = result.data )
|
||||
.then(() => this.$fhcApi.get('api/frontend/v1/organisation/Studiensemester/getAktNext') ) // Get actual Studiensemester
|
||||
.then(result => this.selectedStudiensemester = result.data[0].studiensemester_kurzbz ) // Preselect Studiensemester
|
||||
.catch(error => this.$fhcAlert.handleSystemError(error) );
|
||||
},
|
||||
async onTableBuilt(){
|
||||
|
||||
this.table = this.$refs.lvTemplateUebersichtTable.tabulator;
|
||||
|
||||
// Await Studiensemester
|
||||
await this.loadAndSetStudiensemester();
|
||||
|
||||
// Set table data
|
||||
this.table.setData(
|
||||
this.$fhcApi.getUri() +
|
||||
'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +
|
||||
'?studiensemester_kurzbz=' + this.selectedStudiensemester
|
||||
);
|
||||
|
||||
// Await phrases categories
|
||||
await this.$p.loadCategory(['lehre']);
|
||||
|
||||
// Replace column titles with phrasen
|
||||
this.table.updateColumnDefinition('lv_bezeichnung', {title: this.$p.t('lehre', 'lehrveranstaltung')});
|
||||
|
||||
},
|
||||
onChangeStudiensemester(){
|
||||
// Reset table data
|
||||
this.table.setData(
|
||||
this.$fhcApi.getUri() +
|
||||
'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +
|
||||
'?studiensemester_kurzbz=' + this.selectedStudiensemester
|
||||
);
|
||||
},
|
||||
openAdminLvTemplate(event, row){
|
||||
const url = FHC_JS_DATA_STORAGE_OBJECT.app_root +
|
||||
'vilesci/lehre/lehrveranstaltung.php?stg_kz=&semester=-1&orgform=-1&lehrveranstaltung_id=' +
|
||||
row.getData().lehrveranstaltung_id;
|
||||
|
||||
window.open(url, '_blank').focus();
|
||||
},
|
||||
prepDataTreeData(data){
|
||||
let toDelete = [];
|
||||
|
||||
// loop through all data
|
||||
for (let childIdx = 0; childIdx < data.length; childIdx++)
|
||||
{
|
||||
let child = data[childIdx];
|
||||
|
||||
// if it has parent id, it is a child
|
||||
if (child[parentIdField])
|
||||
{
|
||||
// append the child on the right place. If parent found, mark original sw child on 0 level for deleting
|
||||
if (this._appendChild(data, child)) toDelete.push(childIdx);
|
||||
}
|
||||
}
|
||||
|
||||
// delete the marked children from 0 level
|
||||
for (let counter = 0; counter < toDelete.length; counter++)
|
||||
{
|
||||
// decrease index by counter as index of data array changes after every deletion
|
||||
data.splice(toDelete[counter] - counter, 1);
|
||||
}
|
||||
|
||||
return data;
|
||||
},
|
||||
_appendChild(data, child) {
|
||||
// get parent id
|
||||
let parentId = child[parentIdField];
|
||||
|
||||
// loop thorugh all data
|
||||
for (let parentIdx = 0; parentIdx < data.length; parentIdx++)
|
||||
{
|
||||
let parent = data[parentIdx];
|
||||
|
||||
// if it's the parent
|
||||
if (parent[idField] == parentId)
|
||||
{
|
||||
// create children array if not done yet
|
||||
if (!parent._children) parent._children = [];
|
||||
|
||||
// if child is not included in children array, append the child
|
||||
if (!parent._children.includes(child)) parent._children.push(child);
|
||||
|
||||
// parent found
|
||||
return true;
|
||||
}
|
||||
// search children for parents
|
||||
else if (parent._children) this._appendChild(parent._children, child);
|
||||
}
|
||||
|
||||
// parent not found
|
||||
return false;
|
||||
},
|
||||
reloadTabulator() {
|
||||
if (this.table !== null && this.table !== undefined)
|
||||
{
|
||||
for (let option in this.tabulatorOptions)
|
||||
{
|
||||
if (this.table.options.hasOwnProperty(option))
|
||||
this.table.options[option] = this.tabulatorOptions[option];
|
||||
}
|
||||
this.$refs.lvTemplateUebersichtTable.reloadTable();
|
||||
}
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class="lvTemplateUebersicht overflow-hidden">
|
||||
<div class="row d-flex mb-3">
|
||||
<div class="col-10 h2 mb-4">{{ $p.t('lehre/lvTemplatesUebersicht') }}</div>
|
||||
<div class="col-2 ms-auto align-self-end">
|
||||
<core-form-input
|
||||
type="select"
|
||||
v-model="selectedStudiensemester"
|
||||
name="studiensemester"
|
||||
@change="onChangeStudiensemester">
|
||||
<option
|
||||
v-for="(studSem, index) in studiensemester"
|
||||
:key="index"
|
||||
:value="studSem.studiensemester_kurzbz">
|
||||
{{studSem.studiensemester_kurzbz}}
|
||||
</option>
|
||||
</core-form-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-5">
|
||||
<div class="col">
|
||||
<core-filter-cmpt
|
||||
ref="lvTemplateUebersichtTable"
|
||||
uniqueId="lvTemplateUebersichtTable"
|
||||
table-only
|
||||
:side-menu="false"
|
||||
:tabulator-options="tabulatorOptions"
|
||||
:tabulator-events="[{event: 'tableBuilt', handler: onTableBuilt}]">
|
||||
<template v-slot:actions>
|
||||
<a type="button" class="btn btn-primary" :href="urlToAdminAllTemplates" target="_blank"><i class="fa fa-external-link me-2"></i>{{ $p.t('lehre/lvTemplatesVerwalten') }}</a>
|
||||
<div class="form-check form-check-inline">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
v-model="cbDataTreeStartExpanded"
|
||||
:checked="cbDataTreeStartExpanded"
|
||||
@change="reloadTabulator">
|
||||
<label class="form-check-label">Templates {{ $p.t('global/aufgeklappt') }}</label>
|
||||
</div>
|
||||
</template>
|
||||
</core-filter-cmpt>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -394,5 +394,6 @@ export default {
|
||||
}
|
||||
};
|
||||
app.config.globalProperties.$fhcAlert = $fhcAlert;
|
||||
app.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,6 +316,6 @@ export default {
|
||||
const mergedFhcApiFactory = options?.factory ? {...FhcApiFactory, ...options.factory} : FhcApiFactory;
|
||||
|
||||
app.config.globalProperties.$fhcApi.factory = new FhcApiFactoryWrapper(mergedFhcApiFactory);
|
||||
|
||||
app.provide('$fhcApi', app.config.globalProperties.$fhcApi);
|
||||
}
|
||||
};
|
||||
@@ -69,5 +69,6 @@ export default {
|
||||
loadCategory: cat => phrasen.loadCategory.call(app, cat),
|
||||
t_ref: phrasen.t_ref
|
||||
};
|
||||
app.provide('$p', app.config.globalProperties.$p);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user