diff --git a/application/controllers/system/TestVBform.php b/application/controllers/system/TestVBform.php new file mode 100644 index 000000000..9923bf05b --- /dev/null +++ b/application/controllers/system/TestVBform.php @@ -0,0 +1,32 @@ + 'system/developer:r' + ) + ); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Public methods + + /** + * Everything has a beginning + */ + public function index() + { + $this->load->view('system/logs/testVBform.php'); + } +} diff --git a/application/views/system/logs/testVBform.php b/application/views/system/logs/testVBform.php new file mode 100644 index 000000000..566abb1cb --- /dev/null +++ b/application/views/system/logs/testVBform.php @@ -0,0 +1,16 @@ + 'Test VBform', + 'bootstrap5' => true, + 'fontawesome6' => true, + 'vue3' => true, + 'customJSModules' => array('public/js/apps/vbform/vbform.js') + ); + + $this->load->view('templates/FHC-Header', $includesArray); +?> + +
+ +load->view('templates/FHC-Footer', $includesArray); ?> + diff --git a/public/js/apps/vbform/vbform.js b/public/js/apps/vbform/vbform.js new file mode 100644 index 000000000..2ca309ba8 --- /dev/null +++ b/public/js/apps/vbform/vbform.js @@ -0,0 +1,22 @@ +import vertragsbestandteilhelper from '../../components/vbform/vertragsbestandteilhelper.js'; + +Vue.createApp({ + template: ` +
+

{{ title }}

+ +
+ `, + data: function() { + return { + "title": "Vertragsbestandteil Form", + }; + }, + components: { + 'vertragsbestandteilhelper': vertragsbestandteilhelper + }, + created: function() { + }, + methods: { + } +}).mount('#main'); diff --git a/public/js/components/vbform/gehaltsbestandteil.js b/public/js/components/vbform/gehaltsbestandteil.js new file mode 100644 index 000000000..ac4d726c5 --- /dev/null +++ b/public/js/components/vbform/gehaltsbestandteil.js @@ -0,0 +1,57 @@ +import gueltigkeit from './gueltigkeit.js'; + +export default { + props: [ + 'id' + ], + data: function() { + return { + gehaltstyp : '', + betrag: '', + gueltig_ab: '', + gueltig_bis: '', + valorisierung: '' + } + }, + template: ` +
+
+ +
+
+ +
+ +
+ + +
+
+ +
+
+ `, + components: { + 'gueltigkeit': gueltigkeit + }, + methods: { + removeGB: function() { + this.$emit('removeGB', {id: this.id}); + }, + getPayload: function() { + return { + gehaltstyp: this.gehaltstyp, + betrag: this.betrag, + gueltigkeit: this.$refs.gueltigkeit.getPayload(), + valorisierung: this.valorisierung + }; + } + } +} diff --git a/public/js/components/vbform/gehaltsbestandteilhelper.js b/public/js/components/vbform/gehaltsbestandteilhelper.js new file mode 100644 index 000000000..865a98ec5 --- /dev/null +++ b/public/js/components/vbform/gehaltsbestandteilhelper.js @@ -0,0 +1,53 @@ +import gehaltsbestandteil from './gehaltsbestandteil'; + +export default { + template: ` +
+
+ Gehaltsbestandteil hinzufuegen +
+
+
+
+ +
+
+ `, + data: function() { + return { + payload: [], + gbs: [], + }; + }, + components: { + 'gehaltsbestandteil': gehaltsbestandteil, + }, + methods: { + addGB: function(e) { + e.preventDefault(); + e.stopPropagation(); + + var gbid = 'testgb' + (this.gbs.length + 1); + this.gbs.push({ + id: gbid + }); + }, + removeGB: function(payload) { + var gbs = this.gbs.filter(function(gb) { + return gb.id !== payload.id; + }); + this.gbs = gbs; + }, + getPayload: function() { + var gbs = this.gbs; + var that = this; + + this.payload = []; + gbs.forEach(function(gb) { + that.payload.push(that.$refs[gb.id][0].getPayload()); + }); + + return this.payload; + } + } +} diff --git a/public/js/components/vbform/gueltigkeit.js b/public/js/components/vbform/gueltigkeit.js new file mode 100644 index 000000000..ea40f920f --- /dev/null +++ b/public/js/components/vbform/gueltigkeit.js @@ -0,0 +1,25 @@ +export default { + data: function() { + return { + gueltig_ab: '', + gueltig_bis: '' + } + }, + template: ` +
+ +
+
+ +
+ `, + components: {}, + methods: { + getPayload: function() { + return { + gueltig_ab: this.gueltig_ab, + gueltig_bis: this.gueltig_bis, + }; + } + } +} diff --git a/public/js/components/vbform/vertragsbestandteil_freitext.js b/public/js/components/vbform/vertragsbestandteil_freitext.js new file mode 100644 index 000000000..03dc41be6 --- /dev/null +++ b/public/js/components/vbform/vertragsbestandteil_freitext.js @@ -0,0 +1,72 @@ +import gehaltsbestandteilhelper from './gehaltsbestandteilhelper.js'; +import gueltigkeit from './gueltigkeit.js'; + +export default { + props: [ + 'id' + ], + emits: { + removeVB: null + }, + data: function() { + return { + freitexttyp: '', + titel: '', + freitext: '', + kuendigungsrelevant: '' + } + }, + template: ` +
+
+
+ +
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+ `, + components: { + 'gehaltsbestandteilhelper': gehaltsbestandteilhelper, + 'gueltigkeit': gueltigkeit + }, + methods: { + removeVB: function() { + this.$emit('removeVB', {id: this.id}); + }, + getPayload: function() { + return { + freitexttyp: this.freitexttyp, + titel: this.titel, + freitext: this.freitext, + kuendigungsrelevant: this.kuendigungsrelevant, + gueltigkeit: this.$refs.gueltigkeit.getPayload(), + gehaltsbestandteile: this.$refs.gbh.getPayload() + }; + } + } +} diff --git a/public/js/components/vbform/vertragsbestandteil_funktion.js b/public/js/components/vbform/vertragsbestandteil_funktion.js new file mode 100644 index 000000000..8c14a6ddf --- /dev/null +++ b/public/js/components/vbform/vertragsbestandteil_funktion.js @@ -0,0 +1,55 @@ +import gehaltsbestandteilhelper from './gehaltsbestandteilhelper.js' +import gueltigkeit from './gueltigkeit.js'; + +export default { + props: [ + 'id' + ], + emits: { + removeVB: null + }, + data: function () { + return { + funktion: '', + orget: '', + gueltig_ab: '', + gueltig_bis: '' + } + }, + template: ` +
+
+
+ +
+
+
+
+ +
+
+ +
+ +
+ +
+ `, + components: { + 'gehaltsbestandteilhelper': gehaltsbestandteilhelper, + 'gueltigkeit': gueltigkeit + }, + methods: { + removeVB: function() { + this.$emit('removeVB', {id: this.id}); + }, + getPayload: function() { + return { + funktion: this.funktion, + orget: this.orget, + gueltigkeit: this.$refs.gueltigkeit.getPayload(), + gehaltsbestandteile: this.$refs.gbh.getPayload() + }; + } + } +} diff --git a/public/js/components/vbform/vertragsbestandteil_stunden.js b/public/js/components/vbform/vertragsbestandteil_stunden.js new file mode 100644 index 000000000..4cdfafe0d --- /dev/null +++ b/public/js/components/vbform/vertragsbestandteil_stunden.js @@ -0,0 +1,48 @@ +import gehaltsbestandteilhelper from './gehaltsbestandteilhelper.js'; +import gueltigkeit from './gueltigkeit.js'; + +export default { + props: [ + 'id' + ], + emits: { + removeVB: null + }, + data: function () { + return { + stunden: '' + } + }, + "template": ` +
+
+
+ +
+
+
+
+ +
+ +
+ +
+ `, + components: { + 'gehaltsbestandteilhelper': gehaltsbestandteilhelper, + 'gueltigkeit': gueltigkeit + }, + methods: { + removeVB: function() { + this.$emit('removeVB', {id: this.id}); + }, + getPayload: function() { + return { + stunden: this.stunden, + gueltigkeit: this.$refs.gueltigkeit.getPayload(), + gehaltsbestandteile: this.$refs.gbh.getPayload() + }; + } + } +} diff --git a/public/js/components/vbform/vertragsbestandteil_zeitaufzeichnung.js b/public/js/components/vbform/vertragsbestandteil_zeitaufzeichnung.js new file mode 100644 index 000000000..f16555d2d --- /dev/null +++ b/public/js/components/vbform/vertragsbestandteil_zeitaufzeichnung.js @@ -0,0 +1,65 @@ +import gueltigkeit from './gueltigkeit.js'; + +export default { + props: [ + 'id' + ], + emits: { + removeVB: null + }, + data: function () { + return { + zeitaufzeichnung: '', + azgrelevant: '', + homeoffice: '', + gueltig_ab: '', + gueltig_bis: '' + } + }, + template: ` +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ `, + components: { + 'gueltigkeit': gueltigkeit + }, + methods: { + removeVB: function() { + this.$emit('removeVB', {id: this.id}); + }, + getPayload: function() { + return { + zeitaufzeichnung: this.zeitaufzeichnung, + azgrelevant: this.azgrelevant, + homeoffice: this.homeoffice, + gueltigkeit: this.$refs.gueltigkeit.getPayload(), + }; + } + } +} diff --git a/public/js/components/vbform/vertragsbestandteilhelper.js b/public/js/components/vbform/vertragsbestandteilhelper.js new file mode 100644 index 000000000..0a3707664 --- /dev/null +++ b/public/js/components/vbform/vertragsbestandteilhelper.js @@ -0,0 +1,98 @@ +import vertragsbestandteilstunden from './vertragsbestandteil_stunden.js'; +import vertragsbestandteilzeitaufzeichnung from './vertragsbestandteil_zeitaufzeichnung.js'; +import vertragsbestandteilfunktion from './vertragsbestandteil_funktion.js'; +import vertragsbestandteilfreitext from './vertragsbestandteil_freitext.js'; + +export default { + template: ` +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+{{resjson}}
+      
+
+
+ `, + data: function() { + return { + vertragsbestandteiltyp: 'vertragsbestandteil', + payload: { + vbs: [] + }, + vbs: [ + { + type: 'vertragsbestandteilstunden', + id: 'test1' + }, + { + type: 'vertragsbestandteilzeitaufzeichnung', + id: 'test2' + } + ], + }; + }, + components: { + 'vertragsbestandteilstunden': vertragsbestandteilstunden, + 'vertragsbestandteilzeitaufzeichnung': vertragsbestandteilzeitaufzeichnung, + 'vertragsbestandteilfunktion': vertragsbestandteilfunktion, + 'vertragsbestandteilfreitext': vertragsbestandteilfreitext, + }, + methods: { + addVB: function(e) { + e.preventDefault(); + e.stopPropagation(); + + var vbid = 'test' + (this.vbs.length + 1); + this.vbs.push({ + type: this.vertragsbestandteiltyp, + id: vbid + }); + }, + removeVB: function(payload) { + var vbs = this.vbs.filter(function(vb) { + return vb.id !== payload.id; + }); + this.vbs = vbs; + }, + getJSON: function(e) { + e.preventDefault(); + e.stopPropagation(); + + var vbs = this.vbs; + var that = this; + + this.payload = { + vbs: [] + }; + vbs.forEach(function(vb) { + that.payload.vbs.push(that.$refs[vb.id][0].getPayload()); + }); + } + }, + computed: { + resjson: function() { + return JSON.stringify(this.payload, null, 2); + } + } +}