First commit

This commit is contained in:
2024-06-06 22:48:20 +02:00
commit 2a25500946
104 changed files with 17186 additions and 0 deletions

BIN
resources/.DS_Store vendored Normal file

Binary file not shown.

0
resources/css/app.css Normal file
View File

View File

@@ -0,0 +1,10 @@
$primary : #C10015
$secondary : #26A69A
$accent : #9C27B0
$dark : #1D1D1D
$positive : #21BA45
$negative : #C10015
$info : #31CCEC
$warning : #F2C037

BIN
resources/js/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,92 @@
let rpoFields =
[
{name: 'identifiers.value', desc: 'Identifikátor' , type: 'String'},
{name: 'identifiers.validFrom', desc: 'Identifikátor, platnosť od', type: 'Date'},
{name: 'fullNames.value', desc: 'Plné meno', type: 'String' },
{name: 'fullNames.validFrom', desc: 'Plné meno, platnosť od', type: 'Date' },
{name: 'addresses.validFrom', desc: 'Adresa, platnosť od', type: 'Date' },
{name: 'addresses.street', desc: 'Ulica', type: 'String' },
{name: 'addresses.regNumber', desc: 'Reg. číslo', type: 'String' },
{name: 'addresses.buildingNumber', desc: 'čislo budovy', type: 'String' },
{name: 'addresses.postalCodes', desc: 'PSČ', type: 'String' },
{name: 'addresses.municipality.value', desc: 'Mesto', type: 'String' },
{name: 'addresses.country.codelistCode', desc: 'Kód zoznamu krajiny' },
{name: 'addresses.country.code', desc: 'Kód krajiny', type: 'Number' },
{name: 'addresses.country.value', desc: 'Krajina', type: 'String' },
{name: 'legalForms.value.codelistCode', desc: 'Právna forma kód zoznamu' },
{name: 'legalForms.value.code', desc: 'Právna forma kód', type: 'Number' },
{name: 'legalForms.value.value', desc: 'Právna forma', type: 'String' },
{name: 'legalForms.validFrom', desc: 'Právna forma platná od', type: 'Date' },
{name: 'establishment', desc: 'Založenie', type: 'Date' },
{name: 'activities.economicActivityDescription', desc: 'Typ ekonomickej aktivity', type: 'String' },
{name: 'activities.validFrom', desc: 'Typ ekonomickej aktivity platný od', type: 'Date' },
{name: 'statutoryBodies.stakeholderType.codelistCode', desc: 'Partneri v podnikaní zoznam kód' },
{name: 'statutoryBodies.stakeholderType.code', desc: 'Partneri v podnikaní kód', type: 'Number' },
{name: 'statutoryBodies.stakeholderType.value', desc: 'Partneri v podnikaní', type: 'String' },
{name: 'statutoryBodies.validFrom', desc: 'Štatutári platný od', type: 'Date' },
{name: 'statutoryBodies.address.street', desc: 'Štatutári, adresa, ulica', type: 'String' },
{name: 'statutoryBodies.address.regNumber', desc: 'Štatutári, adresa, reg. číslo', type: 'String' },
{name: 'statutoryBodies.address.buildingNumber', desc: 'Štatutári, adresa, číslo budovy', type: 'String' },
{name: 'statutoryBodies.address.postalCodes', desc: 'Štatutári, adresa, PSČ', type: 'String' },
{name: 'statutoryBodies.address.municipality.value', desc: 'Štatutári, adresa, miesto', type: 'String' },
{name: 'statutoryBodies.address.country.codelistCode', desc: 'Štatutári, adresa, krajina CL' },
{name: 'statutoryBodies.address.country.code', desc: 'Štatutári, adresa, krajina, kód', type: 'Number' },
{name: 'statutoryBodies.address.country.value', desc: 'Štatutári, krajina', type: 'String' },
{name: 'statutoryBodies.personName.formatedName', desc: 'Štatutári, celé meno', type: 'String' },
{name: 'statutoryBodies.personName.givenNames', desc: 'Štatutári, krstné meno', type: 'String' },
{name: 'statutoryBodies.personName.familyNames', desc: 'Štatutári, priezvisko', type: 'String' },
{name: 'stakeholders.stakeholderType.codelistCode', desc: 'Prartneri v podnikaní, CL' },
{name: 'stakeholders.stakeholderType.code', desc: 'Prartneri v podnikaní, kód', type: 'Number' },
{name: 'stakeholders.stakeholderType.value', desc: 'Prartneri v podnikaní', type: 'String' },
{name: 'stakeholders.validFrom', desc: 'Prartneri v podnikaní, platné od', type: 'Date' },
{name: 'stakeholders.address.street', desc: 'Prartneri v podnikaní, ulica', type: 'String' },
{name: 'stakeholders.address.regNumber', desc: 'Prartneri v podnikaní, reg. číslo', type: 'String' },
{name: 'stakeholders.address.buildingNumber', desc: 'Prartneri v podnikaní, budova číslo', type: 'String' },
{name: 'stakeholders.address.postalCodes', desc: 'Prartneri v podnikaní, PSČ', type: 'String' },
{name: 'stakeholders.address.municipality.value', desc: 'Prartneri v podnikaní, miesto', type: 'String' },
{name: 'stakeholders.address.country.codelistCode', desc: 'Prartneri v podnikaní, adresa, CL' },
{name: 'stakeholders.address.country.code', desc: 'Prartneri v podnikaní, krajina, kód', type: 'Number' },
{name: 'stakeholders.address.country.value', desc: 'Prartneri v podnikaní, krajina', type: 'String' },
{name: 'stakeholders.personName.formatedName', desc: 'Prartneri v podnikaní, celé meno', type: 'String' },
{name: 'stakeholders.personName.givenNames', desc: 'Prartneri v podnikaní, krstné meno', type: 'String' },
{name: 'otherLegalFacts.value', desc: 'Poznámky k právnym informáciam', type: 'String' },
{name: 'otherLegalFacts.validFrom', desc: 'Poznámky k právnym informáciam, platné od', type: 'Date' },
{name: 'authorizations.value', desc: 'Autorizácia', type: 'String' },
{name: 'authorizations.validFrom', desc: 'Autorizácia, platná od', type: 'Date' },
{name: 'equities.validFrom', desc: 'Cenné papiere, platné od', type: 'Date' },
{name: 'equities.value', desc: 'Cenné papiere', type: 'String' },
{name: 'equities.currency.codelistCode', desc: 'Cenné papiere, mena, CL' },
{name: 'equities.currency.code', desc: 'Cenné papiere, mena, kód', type: 'Number' },
{name: 'equities.currency.value', desc: 'Cenné papiere, mena', type: 'String' },
{name: 'equities.valuePaid', desc: 'Cenné papiere, zaplatené', type: 'Number' },
{name: 'deposits.validTo', desc: 'Depozit, platný', type: 'Date' },
{name: 'deposits.personName.formatedName', desc: 'Depozit, celé meno', type: 'String' },
{name: 'deposits.personName.givenNames', desc: 'Depozit, krstné meno', type: 'String' },
{name: 'deposits.personName.familyNames', desc: 'Depozit, priezvisko', type: 'String' },
{name: 'deposits.amount', desc: 'Depozit, čiastka', type: 'Number' },
{name: 'deposits.currency.codelistCode', desc: 'Depozit, mena, CL' },
{name: 'deposits.currency.code', desc: 'Depozit, mena, kód', type: 'Number' },
{name: 'deposits.currency.value', desc: 'Depozit, mena, hodnota', type: 'String' },
{name: 'deposits.validFrom', desc: 'Depozit, platné od', type: 'Date' },
{name: 'deposits.personName.formatedName', desc: 'Depozit, celé meno', type: 'String' },
{name: 'deposits.personName.givenNames', desc: 'Depozit, krstné meno', type: 'String' },
{name: 'deposits.personName.familyNames', desc: 'Depozit, priezvisko', type: 'String' },
{name: 'deposits.amount', desc: 'Depozit, čiastka', type: 'Number' },
{name: 'deposits.validTo', desc: 'Depozit, platný do', type: 'Date' },
{name: 'sourceRegister.value.codelistCode', desc: 'Registračný úrad, CL' },
{name: 'sourceRegister.value.code', desc: 'Registračný úrad, kód', type: 'Number' },
{name: 'sourceRegister.value.value', desc: 'Registračný úrad', type: 'String' },
{name: 'sourceRegister.registrationOffices.value', desc: 'Registračný úrad, kancelária', type: 'String' },
{name: 'sourceRegister.registrationOffices.validFrom', desc: 'Registračný úrad, kancelária, platné od', type: 'Date' },
{name: 'sourceRegister.registrationNumbers.value', desc: 'Registračný úrad, registračné číslo', type: 'String' },
{name: 'sourceRegister.registrationNumbers.validFrom', desc: 'Registračný úrad, registračné číslo, platné od', type: 'Date' },
{name: 'statisticalCodes.statCodesActualization', desc: 'Štatistický kód, aktualizácia', type: 'Date' },
{name: 'statisticalCodes.mainActivity.codelistCode', desc: 'Štatistický kód, hlavná aktivita, CL' },
{name: 'statisticalCodes.mainActivity.code', desc: 'Štatistický kód, hlavná aktivita, kód', type: 'Number' },
{name: 'statisticalCodes.mainActivity.value', desc: 'Štatistický kód, hlavná aktivita', type: 'String' },
{name: 'statisticalCodes.esa2010.codelistCode', desc: 'Štatistický kód, ESA 2010, CL' },
{name: 'statisticalCodes.esa2010.code', desc: 'Štatistický kód, ESA 2010, kód', type: 'Number' },
{name: 'statisticalCodes.esa2010.value', desc: 'Štatistický kód, ESA 2010', type: 'String' }
];
export default rpoFields;

View File

@@ -0,0 +1,577 @@
{
"identifiers": {
"name": "identifiers",
"desc": "Identifikátor",
"type": "Object",
"value": {
"name": "identifiers.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "identifiers.validFrom",
"desc": "platnosť od",
"type": "Date"
}
},
"fullNames": {
"name": "fullNames.value",
"desc": "Plné meno",
"type": "Object",
"value": {
"name": "fullNames.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "fullNames.validFrom",
"desc": "platnosť od",
"type": "Date"
},
"validTo": {
"name": "fullNames.validTo",
"desc": "platnosť do",
"type": "Date"
}
},
"addresses": {
"name": "address.value",
"desc": "Adresa",
"type": "Object",
"validFrom": {
"name": "addresses.validFrom",
"desc": "platnosť od",
"type": "Date"
},
"street": {
"name": "addresses.street",
"desc": "Ulica",
"type": "String"
},
"regNumber": {
"name": "addresses.regNumber",
"desc": "Reg. číslo",
"type": "String"
},
"buildingNumber": {
"name": "addresses.buildingNumber",
"desc": "čislo budovy",
"type": "String"
},
"postalCodes": {
"name": "addresses.postalCodes",
"desc": "PSČ",
"type": "String"
},
"municipality": {
"value": {
"name": "addresses.municipality.value",
"desc": "Mesto",
"type": "String"
}
},
"country": {
"codelistCode": {
"name": "addresses.country.codelistCode",
"desc": "Kód zoznamu krajiny"
},
"code": {
"name": "addresses.country.code",
"desc": "Kód krajiny",
"type": "Number"
},
"value": {
"name": "addresses.country.value",
"desc": "Krajina",
"type": "String"
}
}
},
"legalForms": {
"name": "legalForms.value",
"desc": "Právna forma",
"type": "Object",
"codelistCode": {
"name": "legalForms.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "legalForms.code",
"desc": "Právna forma kód",
"type": "Number"
},
"value": {
"name": "legalForms.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "legalForms.validFrom",
"desc": "platná od",
"type": "Date"
}
},
"establishment": {
"name": "establishment",
"desc": "Založenie",
"type": "Date"
},
"activities": {
"name": "activities",
"desc": "Aktivity",
"type": "Object",
"economicActivityDescription": {
"name": "activities.economicActivityDescription",
"desc": "Typ ekonomickej aktivity",
"type": "String"
},
"validFrom": {
"name": "activities.validFrom",
"desc": "platný od",
"type": "Date"
}
},
"statutoryBodies": {
"name" : "statutoryBodies",
"desc" : "Štatutárny orgán",
"type" : "Object",
"stakeholderType": {
"name": "statutoryBodies.stakeholderType",
"desc": "Zainteresovaná osoba",
"type": "Object",
"codelistCode": {
"name": "statutoryBodies.stakeholderType.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "statutoryBodies.stakeholderType.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "statutoryBodies.stakeholderType.value",
"desc": "Hodnota",
"type": "String"
}
},
"validFrom": {
"name": "statutoryBodies.validFrom",
"desc": "platný od",
"type": "Date"
},
"address": {
"name": "statutoryBodies.address.street",
"desc": "Adresa",
"type": "Object",
"street": {
"name": "statutoryBodies.address.street",
"desc": "ulica",
"type": "String"
},
"regNumber": {
"name": "statutoryBodies.address.regNumber",
"desc": "reg. číslo",
"type": "String"
},
"buildingNumber": {
"name": "statutoryBodies.address.buildingNumber",
"desc": "číslo budovy",
"type": "String"
},
"postalCodes": {
"name": "statutoryBodies.address.postalCodes",
"desc": "PSČ",
"type": "String"
},
"municipality": {
"value": {
"name": "statutoryBodies.address.municipality.value",
"desc": "Miesto",
"type": "String"
}
},
"country": {
"name": "statutoryBodies.address.country.value",
"desc": "Krajina",
"type": "Object",
"codelistCode": {
"name": "statutoryBodies.address.country.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "statutoryBodies.address.country.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "statutoryBodies.address.country.value",
"desc": "hodnota",
"type": "String"
}
}
},
"personName": {
"name": "statutoryBodies.personName",
"desc": "Meno",
"type": "Object",
"formatedName": {
"name": "statutoryBodies.personName.formatedName",
"desc": "celé meno",
"type": "String"
},
"givenNames": {
"name": "statutoryBodies.personName.givenNames",
"desc": "krstné meno",
"type": "String"
},
"familyNames": {
"name": "statutoryBodies.personName.familyNames",
"desc": "priezvisko",
"type": "String"
}
}
},
"stakeholders": {
"name": "stakeholders",
"desc": "Zainteresovana osoba",
"type": "Object",
"stakeholderType": {
"name": "stakeholders",
"desc": "Typ zainteresovanej osoby",
"type": "Number",
"codelistCode": {
"name": "stakeholders.stakeholderType.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "stakeholders.stakeholderType.code",
"desc": "Kód",
"type": "Number"
},
"value": {
"name": "stakeholders.stakeholderType.value",
"desc": "Hodnota",
"type": "String"
}
},
"validFrom": {
"name": "stakeholders.validFrom",
"desc": "Platné od",
"type": "Date"
},
"address": {
"name": "stakeholders.address",
"desc": "Adresa",
"type": "Object",
"street": {
"name": "stakeholders.address.street",
"desc": "Ulica",
"type": "String"
},
"regNumber": {
"name": "stakeholders.address.regNumber",
"desc": "Reg. číslo",
"type": "String"
},
"buildingNumber": {
"name": "stakeholders.address.buildingNumber",
"desc": "budova číslo",
"type": "String"
},
"postalCodes": {
"name": "stakeholders.address.postalCodes",
"desc": "PSČ",
"type": "String"
},
"municipality": {
"value": {
"name": "stakeholders.address.municipality.value",
"desc": "miesto",
"type": "String"
}
},
"country": {
"name": "stakeholders.address.country",
"desc": "Krajina",
"type": "Object",
"codelistCode": {
"name": "stakeholders.address.country.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "stakeholders.address.country.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "stakeholders.address.country.value",
"desc": "Hodnota",
"type": "String"
}
}
},
"personName": {
"formatedName": {
"name": "stakeholders.personName.formatedName",
"desc": "Celé meno",
"type": "String"
},
"givenNames": {
"name": "stakeholders.personName.givenNames",
"desc": "Krstné meno",
"type": "String"
}
}
},
"otherLegalFacts": {
"name": "otherLegalFacts.value",
"desc": "Iné právne skutočnosti",
"type": "Array",
"value": {
"name": "otherLegalFacts.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "otherLegalFacts.validFrom",
"desc": "platné od",
"type": "Date"
}
},
"authorizations": {
"name": "authorizations.value",
"desc": "Oprávnenie konať v mene PO",
"type": "Object",
"value": {
"name": "authorizations.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "authorizations.validFrom",
"desc": "Platná od",
"type": "Date"
}
},
"equities": {
"name": "equities.value",
"desc": "Základé imanie",
"type": "Array",
"validFrom": {
"name": "equities.validFrom",
"desc": "platné od",
"type": "Date"
},
"validTo": {
"name": "equities.validTo",
"desc": "platné do",
"type": "Date"
},
"value": {
"name": "equities.value",
"desc": "Hodnota",
"type": "String"
},
"currency": {
"name": "equities.currency.value",
"desc": "Mena",
"type": "Array",
"codelistCode": {
"name": "equities.currency.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "equities.currency.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "equities.currency.value",
"desc": "Hodnota",
"type": "String"
}
},
"valuePaid": {
"name": "equities.valuePaid",
"desc": "zaplatené",
"type": "Number"
}
},
"deposits": {
"name": "deposits",
"desc": "Vklady",
"type": "Array",
"validTo": {
"name": "deposits.validTo",
"desc": "Platný do",
"type": "Date"
},
"personName": {
"formatedName": {
"name": "deposits.personName.formatedName",
"desc": "Celé meno",
"type": "String"
},
"givenNames": {
"name": "deposits.personName.givenNames",
"desc": "Krstné meno",
"type": "String"
},
"familyNames": {
"name": "deposits.personName.familyNames",
"desc": "Priezvisko",
"type": "String"
}
},
"amount": {
"name": "deposits.amount",
"desc": "Čiastka",
"type": "Number"
},
"currency": {
"name": "deposits.currency",
"desc": "Mena",
"type": "Array",
"codelistCode": {
"name": "deposits.currency.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "deposits.currency.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "deposits.currency.value",
"desc": "hodnota",
"type": "String"
}
},
"validFrom": {
"name": "deposits.validFrom",
"desc": "platné od",
"type": "Date"
}
},
"sourceRegister": {
"value": {
"name": "sourceRegister.value",
"desc": "Registračný úrad",
"type": "Array",
"codelistCode": {
"name": "sourceRegister.value.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "sourceRegister.value.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "sourceRegister.value.value",
"desc": "Hodnota",
"type": "String"
}
},
"registrationOffices": {
"value": {
"name": "sourceRegister.registrationOffices.value",
"desc": "Kancelária",
"type": "String"
},
"validFrom": {
"name": "sourceRegister.registrationOffices.validFrom",
"desc": "platné od",
"type": "Date"
}
},
"registrationNumbers": {
"name": "sourceRegister.registrationNumbers.value",
"desc": "Číslo",
"type": "Array",
"value": {
"name": "sourceRegister.registrationNumbers.value",
"desc": "Hodnota",
"type": "String"
},
"validFrom": {
"name": "sourceRegister.registrationNumbers.validFrom",
"desc": "Platné od",
"type": "Date"
}
}
},
"statisticalCodes": {
"name": "statisticalCodes",
"desc": "Štatistické kódy",
"type": "Object",
"statCodesActualization": {
"name": "statisticalCodes.statCodesActualization",
"desc": "Aktualizácia",
"type": "Date"
},
"mainActivity": {
"codelistCode": {
"name": "statisticalCodes.mainActivity.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "statisticalCodes.mainActivity.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "statisticalCodes.mainActivity.value",
"desc": "hlavná aktivita",
"type": "String"
}
},
"esa2010": {
"codelistCode": {
"name": "statisticalCodes.esa2010.codelistCode",
"desc": "CL",
"type": "List"
},
"code": {
"name": "statisticalCodes.esa2010.code",
"desc": "kód",
"type": "Number"
},
"value": {
"name": "statisticalCodes.esa2010.value",
"desc": "ESA 2010",
"type": "String"
}
}
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

28
resources/js/app.js Normal file
View File

@@ -0,0 +1,28 @@
import "@quasar/extras/material-icons/material-icons.css";
import "@quasar/extras/mdi-v6/mdi-v6.css";
import "quasar/src/css/index.sass";
import { createInertiaApp } from "@inertiajs/vue3";
import { resolvePageComponent } from "laravel-vite-plugin/inertia-helpers";
import { Quasar } from "quasar";
import quasarIconSet from "quasar/icon-set/svg-mdi-v6";
import { createApp, h } from "vue";
createInertiaApp({
resolve: (name) =>
resolvePageComponent(
`./pages/${name}.vue`,
import.meta.glob("./pages/**/*.vue"),
),
setup({ el, App, props, plugin }) {
createApp({ render: () => h(App, props) })
.use(plugin)
.use(Quasar, {
plugins: {}, // import Quasar plugins and add here
iconSet: quasarIconSet,
config: {}, // quasar config see: https://quasar.dev/start/vite-plugin/
})
.mount(el);
},
});

View File

@@ -0,0 +1,36 @@
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 1024 1024"
xml:space="preserve">
<style>
.st0 {
fill: #050a14
}
.st1 {
fill: #00b4ff
}
</style>
<path id="path8860-5-4-8-2-7-1-8_20_" d="M586.2 512a74.2 74.2 0 11-148.4 0 74.2 74.2 0 11148.4 0z" class="st0" />
<path id="path8862-5-5-9-1-9-2-7_20_"
d="M841.3 321.8a375.7 375.7 0 00-58.3-76.2l-85.8 49.5a286.7 286.7 0 00-89.5-51.9 352 352 0 00-69.3 98.9c95.5-6.5 194.1 28.1 285.6 99.6l54-31.2a377.5 377.5 0 00-36.7-88.7z"
class="st0" />
<path id="path8866-7-5-5-0-3-5-6_20_"
d="M512 892.2c32.1-.1 64.1-4.3 95.1-12.4v-99a285 285 0 0089.7-51.6 352.3 352.3 0 00-51-109.5c-42.1 85.9-121.3 154-229 197.5v62.3a369.4 369.4 0 0095.2 12.7z"
class="st0" />
<path id="path8870-5-3-9-3-0-0-9_20_"
d="M182.7 321.9a377.8 377.8 0 00-36.8 88.6l85.8 49.5a285.8 285.8 0 00-.2 103.5 352.7 352.7 0 00120.3 10.6C298.4 494.7 279.1 392 295.2 277l-54-31.2a376.9 376.9 0 00-58.5 76.1z"
class="st0" />
<g>
<path id="path8864-4-8-1-2-7-3-1_20_"
d="M841.3 702.1c16-27.8 28.3-57.6 36.8-88.6L792.4 564c6.4-34.6 6.4-69.6.2-103.5a352.7 352.7 0 00-120.3-10.6C725.7 529.3 745 632 728.9 747l54 31.2a382 382 0 0058.4-76.1z"
class="st1" />
<path id="path8868-6-7-4-7-5-7-1_20_"
d="M182.7 702.1a375.7 375.7 0 0058.3 76.2l85.8-49.5a286.7 286.7 0 0089.5 51.9 352 352 0 0069.3-98.9c-95.5 6.5-194.1-28.1-285.6-99.6l-54 31.2c8.5 31 20.8 60.8 36.7 88.7z"
class="st1" />
<path id="path8872-6-3-2-1-4-2-1_20_"
d="M512 131.7c-32.1.1-64.1 4.3-95.1 12.4v99a285 285 0 00-89.7 51.6 352.3 352.3 0 0051 109.5c42.1-85.9 121.3-154 229-197.5v-62.3a378.3 378.3 0 00-95.2-12.7z"
class="st1" />
</g>
<path
d="M512 66.4c245.7 0 445.6 199.9 445.6 445.6S757.7 957.6 512 957.6 66.4 757.7 66.4 512 266.3 66.4 512 66.4M512 1a511 511 0 100 1022A511 511 0 00512 1z"
class="st1" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

32
resources/js/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,32 @@
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
* CSRF token as a header based on the value of the "XSRF" token cookie.
*/
import axios from "axios";
window.axios = axios;
window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting
* allows your team to easily build robust real-time web applications.
*/
// import Echo from 'laravel-echo';
// import Pusher from 'pusher-js';
// window.Pusher = Pusher;
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: import.meta.env.VITE_PUSHER_APP_KEY,
// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1',
// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,
// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',
// enabledTransports: ['ws', 'wss'],
// });

View File

@@ -0,0 +1,41 @@
<template>
<q-item clickable tag="a" target="_blank" :href="link">
<q-item-section v-if="icon" avatar>
<q-icon :name="icon" />
</q-item-section>
<q-item-section>
<q-item-label>{{ title }}</q-item-label>
<q-item-label caption>{{ caption }}</q-item-label>
</q-item-section>
</q-item>
</template>
<script>
import { defineComponent } from "vue";
export default defineComponent({
name: "EssentialLink",
props: {
title: {
type: String,
required: true,
},
caption: {
type: String,
default: "",
},
link: {
type: String,
default: "#",
},
icon: {
type: String,
default: "",
},
},
});
</script>

View File

@@ -0,0 +1,50 @@
<script setup>
import Multiselect from 'vue-multiselect';
import JsonQueryBuilderGroup from '@/Components/JsonQueryBuilderGroup.vue';
import { FolderAddIcon, PlusCircleIcon, TrashIcon, ArrowCircleRightIcon} from '@vue-hero-icons/outline';
import VueTailwindDatepicker from 'vue-tailwind-datepicker'
import { ref } from 'vue';
import { computed } from 'vue';
defineProps(['query', 'currentQuery', 'queryOptions', 'i18n']);
defineEmits(['update:query', 'update:queryOptions', 'runQuery']);
const level = ref(0);
const expanded = ref(true);
</script>
<template>
<div class="q-pa-md row items-start q-gutter-md">
<!-- Card -->
<q-card class="my-card q-pa-sm">
<!-- Header -->
<q-card-section class="bg-red-4 text-white">
<div class="row items-center">
<div class="col text-h6">Query Builder</div>
<q-card-actions align="right" class="col">
<q-btn
color="grey"
round
flat
dense
:icon="expanded ? 'keyboard_arrow_up' : 'keyboard_arrow_down'"
@click="expanded = !expanded"
/>
</q-card-actions>
</div>
</q-card-section>
<q-slide-transition>
<div v-show="expanded">
<q-separator />
<JsonQueryBuilderGroup :currentQuery="query" :queryOptions="queryOptions" :level="level+1"> </JsonQueryBuilderGroup>
</div>
</q-slide-transition>
<div class="row no-wrap justify-end q-mt-md q-pa-sm bg-grey-8 text-white">
<q-btn rounded color="brown-4" @click="$emit('runQuery')" label="Spusti vyhľadávanie" icon="sync" />
</div>
</q-card>
</div>
</template>

View File

@@ -0,0 +1,86 @@
<script setup>
import { FolderAddIcon, PlusCircleIcon, TrashIcon} from '@vue-hero-icons/outline';
import JsonQueryBuilderRule from '@/Components/JsonQueryBuilderRule.vue';
import { ref, onMounted } from 'vue';
import { computed } from 'vue';
const props = defineProps(['currentQuery', 'queryOptions', 'i18n', 'level']);
function AddGroup(query) {
console.log(query.rules);
let len = query.rules.push({
condition: 'and',
rules: []
});
AddRule(query.rules[len-1]);
}
function DeleteGroup(query,item) {
console.log(item);
query.rules.splice(query.rules.indexOf(item), 1);
}
function AddRule(query){
console.log(query.rules);
query.rules.push({
id: '',
operator: '=',
value: ''
})
}
function DeleteRule(rules, rule) {
console.log(rule);
rules.splice(rules.indexOf(rule), 1);
}
</script>
<template>
<div :class="level > 1 ? 'border-4 border-blue-300 q-pa-xs' : 'q-pa-xs'">
<div class="row q-pa-sm q-gutter-sm items-center justify-between">
<div class="p-3 text-gray-700 text-lg font-bold">
<q-btn-toggle
v-model="currentQuery.condition"
class="q-"
no-caps
rounded
unelevated
toggle-color="blue"
color="white"
text-color="primary"
:options="[
{label: 'AND', value: 'and'},
{label: 'OR', value: 'or'}
]"
/>
</div>
<div class="p-3 text-gray-700 text-md font-bold">
<q-btn-group push>
<q-btn v-if="level > 1" @click="$emit('deleteGroup')" color="yellow" glossy text-color="black" push label="Zmaž skupinu" icon="delete" />
<q-btn color="amber" @click="AddGroup(currentQuery)" glossy text-color="black" push label="Pridaj skupinu" icon="folder"/>
<q-btn color="orange" @click="AddRule(currentQuery)" glossy text-color="black" push label="Pridaj pravidlo" icon="add" />
</q-btn-group>
</div>
</div>
<div class="q-pa-xs" v-for="(item) in currentQuery.rules" :key="item._uuid">
<JsonQueryBuilderGroup v-if="typeof item.condition === 'string'" :currentQuery="item" :queryOptions="queryOptions" @delete-group="DeleteGroup(currentQuery,item)" :level="level + 1"></JsonQueryBuilderGroup>
<JsonQueryBuilderRule v-else :rule="item" :options="queryOptions" @delete-rule="DeleteRule(currentQuery.rules,item)"></JsonQueryBuilderRule>
</div>
</div>
</template>
<style>
.q-btn-group {
border: 1px solid gray;
}
.border-4 {
border: 4px solid blue;
}
</style>

View File

@@ -0,0 +1,166 @@
<script setup>
import Multiselect from 'vue-multiselect';
import { matDelete } from '@quasar/extras/material-icons';
import { ref, onMounted } from 'vue';
import { computed } from 'vue';
const props = defineProps(['rule', 'options', 'i18n']);
console.log("VALUE",props.rule.value);
const dateValue = ref(props.rule.value);
const filteredOptions = ref(props.options);
const formatter = ref({
date: 'D.M.YYYY',
month: 'MMM'
});
const fieldValue = ref(selectByValue(props.options,"name",props.rule.id));
const rulesOperatorOptions = computed({
get () {
switch(fieldValue.value.type) {
case 'Number':
return [
{id: '=', name: 'rovná sa'},
{id: '!=', name: 'nerovná sa'},
{id: '>', name: 'je väčšie'},
{id: '<', name: 'je menšie'},
{id: '>=', name: 'je rovné, vačšie'},
{id: '<=', name: 'je menšie, rovné'}
];
case 'Date':
return [
{id: '=', name: 'rovná sa'},
{id: '!=', name: 'nerovný'},
{id: '>', name: 'je väčší'},
{id: '<', name: 'je menší'},
{id: '>=', name: 'je rovný, vačší'},
{id: '<=', name: 'je menši, rovný'}
];
case 'String':
default:
return [
{id: '=', name: 'rovná'},
{id: '!=', name: 'nerovná sa'},
{id: 'in', name: 'je v'},
{id: 'not in', name: 'nieje v'},
{id: '()', name: 'obsahuje'},
{id: '!()', name: 'neobsahuje'},
{id: '(', name: 'začína'},
{id: ')', name: 'končí'},
{id: '!(', name: 'nezačína'},
{id: '!)', name: 'nekončí'}
];
}
},
}
);
const criteria = ref(selectByValue(rulesOperatorOptions.value,"id",props.rule.operator));
const input = ref(props.rule.value);
function filterFn (val, update, abort) {
update(() => {
const needle = val.toLocaleLowerCase();
filteredOptions.value = props.options.filter(v => v.desc.toLocaleLowerCase().indexOf(needle) > -1)
})
}
function setModel (val) {
fieldValue.value.value = val
}
function selectByValue(arr, id, value, single = true) {
let filtered = arr.filter(a => a[id] == value);
console.log(filtered);
if (single && filtered.length > 0)
return filtered[0];
return filtered;
}
function FieldChange(val) {
console.log(val);
props.rule.id = val.name;
fieldValue.value.type = val.type;
input.value = null;
props.rule.value = null;
}
function CriteriaChange(params) {
console.log("PARAMS=",params);
props.rule.operator = params.id;
}
function DateChange(params) {
console.log(params);
props.rule.value = params[0];
}
function InputChange(params) {
console.log(params);
props.rule.value = params;
}
</script>
<template>
<div class="row qa-pa-xs q-gutter-sm justify-between ">
<div class="">
<q-select
dense
filled
use-input
hide-selected
fill-input
v-model="fieldValue"
option-label="desc"
option-value="id"
:options="filteredOptions"
@input-value="setModel"
@filter="filterFn"
style="min-width: 400px;"
/>
</div>
<div class="col">
<q-select
dense
filled
fill-input
v-model="criteria"
option-label="name"
option-value="name"
@update:model-value="CriteriaChange"
:options="rulesOperatorOptions"
/>
</div>
<div class="col">
<q-input v-if="fieldValue.type == 'Date'" dense filled v-model="dateValue" mask="date" >
<template v-slot:append>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
<q-date v-model="dateValue">
<div class="row items-center justify-end">
<q-btn v-close-popup label="Close" color="primary" flat />
</div>
</q-date>
</q-popup-proxy>
</q-icon>
</template>
</q-input>
<q-input v-if="fieldValue.type == 'String'" id="value" outlined dense filled type="text" class="block w-full" v-model="input" required @update:model-value="InputChange" />
<q-input v-if="fieldValue.type == 'Number'" id="value" outlined dense filled type="number" class="block w-full" v-model="input" required @update:model-value="InputChange" />
</div>
<div>
<q-btn rounded color="red" text-color="black" :icon="matDelete" @click="$emit('deleteRule')" />
</div>
</div>
</template>
<style>
@import 'vue-multiselect/dist/vue-multiselect.css';
</style>

View File

@@ -0,0 +1,28 @@
<script setup>
import { Link } from '@inertiajs/vue3';
defineProps({
links: {
type: Object,
default: () => ({}),
},
data: {
type: Object,
default: () => ({}),
}
});
</script>
<template>
<div v-if="links.length > 3">
<div class="flex flex-wrap -mb-1">
<template v-for="(link, p) in links" :key="p">
<div v-if="link.url === null" class="mr-1 mb-1 px-4 py-3 text-sm leading-4 text-gray-400 border rounded"
v-html="link.label" />
<Link v-else
class="mr-1 mb-1 px-4 py-3 text-sm leading-4 border rounded hover:bg-white focus:border-indigo-500 focus:text-indigo-500"
:class="{ 'bg-blue-700 text-white': link.active }" method="post" :data="data" :href="link.url" v-html="link.label" as="button" />
</template>
</div>
</div>
</template>

View File

@@ -0,0 +1,60 @@
<script setup>
import { Link } from '@inertiajs/inertia-vue3';
defineProps({
links: {
type: Object,
default: () => ({}),
},
data: {
type: Object,
default: () => ({}),
}
});
</script>
<template>
<ul v-if="links.length > 3" class="inline-flex -space-x-px">
<template v-for="(link, p) in links" :key="p">
<li v-if="link.url === null" class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 ml-0 rounded-l-lg leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white" v-html=""/>
<a href="#"
class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white">1</a>
</li>
<li>
<a href="#"
class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white">2</a>
</li>
<li>
<a href="#" aria-current="page"
class="bg-blue-50 border border-gray-300 text-blue-600 hover:bg-blue-100 hover:text-blue-700 py-2 px-3 dark:border-gray-700 dark:bg-gray-700 dark:text-white">3</a>
</li>
<li>
<a href="#"
class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white">4</a>
</li>
<li>
<a href="#"
class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white">5</a>
</li>
<li>
<a href="#"
class="bg-white border border-gray-300 text-gray-500 hover:bg-gray-100 hover:text-gray-700 rounded-r-lg leading-tight py-2 px-3 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white">Next</a>
</li>
</template>
</ul>
<div v-if="links.length > 3">
<div class="flex flex-wrap -mb-1">
<template v-for="(link, p) in links" :key="p">
<div v-if="link.url === null" class="mr-1 mb-1 px-4 py-3 text-sm leading-4 text-gray-400 border rounded"
v-html="link.label" />
<Link v-else
class="mr-1 mb-1 px-4 py-3 text-sm leading-4 border rounded hover:bg-white focus:border-indigo-500 focus:text-indigo-500"
:class="{ 'bg-blue-700 text-white': link.active }" method="post" :data="data" :href="link.url" v-html="link.label" as="button" />
</template>
</div>
</div>
</template>

View File

@@ -0,0 +1,118 @@
<template>
<div class="table-main">
<div
v-for="(row, index) in arrData"
:key="index"
class="row-data m-2 d-flex"
>
<div class="key p-2 d-inline-block">
<div class="text-capitalize ">
{{ printRpoName(row) }}
</div>
</div>
<div v-if="['string', 'number'].includes(checkValueType(data[row]))">
<div class="value p-2 d-inline-block">{{ data[row] }}</div>
</div>
<div v-else-if="checkValueType(data[row]) === 'array'">
<div v-for="(arrRow, index2) in data[row]" :key="index2" class="d-flex">
<div v-if="['string', 'number'].includes(checkValueType(arrRow))">
{{ arrRow }}
</div>
<div v-else>
<RpoRecord :data="arrRow" :rpo="subRpo(arrRow, row,index2)"/>
</div>
</div>
</div>
<div v-else>
<RpoRecord :data="data[row]" :rpo="subRpo(data[row],row,index)" />
</div>
</div>
</div>
</template>
<script>
import rpoJsonData from '../Data/RpoTree.json';
export default {
name: "RpoRecord",
props: {
data: {
type: Object
},
rpo: {
type: Object,
}
},
computed: {
arrData() {
return Object.keys(this.data);
}
},
methods: {
keyTitle(key) {
return key.split("_").join(" ");
},
checkValueType(val) {
if (typeof val !== "object") {
return typeof val;
}
return Array.isArray(val) ? "array" : "object";
},
printRpoName(key) {
console.log('data',typeof this.rpo[key]);
if (typeof this.rpo[key] !== 'undefined'){
console.log(this.rpo[key]);
return this.rpo[key]["desc"];
}
if (typeof this.rpo[key] !== 'undefined' && typeof this.rpo[key]["value"] !== 'undefined') {
console.log(this.rpo[key]);
return this.rpo[key].value.desc;
}
return key;
},
subRpo(val,kz,i) {
console.log('val=',val,'k=',kz,'i=',i);
console.log(this.rpo);
return this.rpo[kz];
}
},
mounted() {
console.log('JSON=',this.rpo);
}
};
</script>
<style scoped>
.table-main {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.m-2 {
margin: .5rem!important;
}
.mx-2 {
margin-right: .5rem!important;
}
.p-2 {
padding: .5rem!important;
}
.d-flex {
display: flex!important;
}
.d-inline-block {
display: inline-block!important;
}
.text-capitalize {
text-transform: capitalize!important;
}
.key {
background: lightgray;
}
.table-main .row-data {
border: 2px solid grey;
border-radius: 2px;
}
</style>

View File

@@ -0,0 +1,204 @@
<script setup>
import rpoJsonData from '../Data/RpoTree.json';
import { ref, onMounted } from 'vue';
import { computed } from 'vue';
const props = defineProps({
data: {
type: Object,
required: true
},
rpo: {
type: Object,
required: false,
default: rpoJsonData
}
});
const columns = [
{
name: 'translated',
required: true,
label: 'Nazov',
align: 'left',
field: 'translated',
sortable: false,
},
{ name: 'val', align: 'left', label: 'Hodnota', field: 'val', sortable: false },
]
const arrData = computed(() => Object.keys(props.data));
const title = ref(props.data["fullNames"][0]["value"]);
console.log('TITLE', title);
function keyTitle(key) {
return key.split("_").join(" ");
}
function checkValueType(val) {
if (typeof val !== "object") {
return typeof val;
}
return Array.isArray(val) ? "array" : "object";
}
function printRpoName(rpoKey) {
console.log('data', typeof props.rpo[rpoKey]);
console.log('rpoKey', rpoKey);
if (typeof props.rpo[rpoKey] !== 'undefined') {
if (typeof props.rpo[rpoKey]["desc"] !== 'undefined') {
console.log(props.rpo[rpoKey]);
return props.rpo[rpoKey].desc;
}
if (typeof props.rpo[rpoKey]["value"] !== 'undefined') {
console.log(props.rpo[rpoKey]);
return props.rpo[rpoKey].value.desc;
}
console.log(props.rpo[rpoKey]);
return props.rpo[rpoKey]["desc"];
}
return rpoKey;
}
function createRPOflatList(resultTree, flatList, RpoTree, lastKey = undefined, level = 0, fullPathRpo = []) {
console.log('RESTREE=', resultTree);
let fullPath = [...fullPathRpo];
if (lastKey != undefined) fullPath.push(lastKey);
if (level == 0 || checkValueType(resultTree) == "object") {
let i = 0;
Object.keys(resultTree).forEach(k => {
if (typeof resultTree[k] != 'string') {
if (RpoTree[k] !== undefined) {
flatList.push({ "level": level, "key": k, "val": undefined, "translated": RpoTree[k].desc, "full": fullPath.join(' => '), "index": i++ });
createRPOflatList(resultTree[k], flatList, RpoTree[k], k, level + 1, fullPath);
}
} else {
console.log('RT=', RpoTree);
console.log('K=', k);
if (RpoTree[k] !== undefined)
flatList.push({ "level": level, "key": k, "val": resultTree[k], "translated": RpoTree[k].desc, "full": fullPath.join(' => '), "index": i++ });
}
});
} else if (checkValueType(resultTree) == "array") {
let i = 0;
for (const e of resultTree) {
console.log('e=', e);
if (checkValueType(e) == "object" || checkValueType(e) == "array") {
createRPOflatList(e, flatList, RpoTree, lastKey, level + 1, fullPath);
} else {
console.log('RT=', RpoTree);
flatList.push({ "level": level, "key": lastKey, "val": e, "translated": RpoTree.desc !== undefined ? RpoTree.desc : '', "full": fullPath.join(' => '), "index": i++ });
}
}
}
}
function subRpo(val, kz, i) {
console.log('val=', val, 'k=', kz, 'i=', i);
console.log(props.rpo);
return props.rpo[kz];
}
var flatListRpo = [];
createRPOflatList(props.data, flatListRpo, props.rpo);
console.log('FLAT=', flatListRpo);
</script>
<template>
<!-- https://github.com/quasarframework/quasar/blob/dev/docs/src/examples/QTable/VirtscrollExpandedRow.vue -->
<div class="col q-pa-md" style="overflow: auto;">
<q-table style="height: 700px;" separator="cell" flat bordered dense :rows-per-page-options="[0]"
:title="title" :rows="flatListRpo" :columns="columns" wrap-cells card-class="bg-deep-purple-7 text-white"
table-header-class="bg-deep-purple-1 text-black" row-key="name">
<template v-slot:body="props">
<q-tr :props="props" :key="`e_${props.row.index}`" class="q-virtual-scroll--with-prev">
<q-td class="bg-grey-8">
<div :class="`text-left level-${props.row.level}`">{{ props.row.translated }}</div>
</q-td>
<q-td class="bg-grey-6">
<div class="text-left">{{ props.row.val }}</div>
</q-td>
</q-tr>
</template>
</q-table>
</div>
</template>
<style scoped>
.table-main {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.level-1 {
padding-left: 10px;
}
.level-2 {
padding-left: 20px;
}
.level-3 {
padding-left: 30px;
}
.level-4 {
padding-left: 40px;
}
.level-5 {
padding-left: 50px;
}
.m-2 {
margin: 0rem !important;
}
.mx-2 {
margin-right: .5rem !important;
}
.p-2 {
padding: .5rem !important;
}
.d-flex {
display: flex !important;
}
.d-inline-block {
display: inline-block !important;
}
.text-capitalize {
text-transform: capitalize !important;
}
.key {
background: lightgray;
box-shadow:
2px 0 0 0 #888,
0 2px 0 0 #888,
2px 2px 0 0 #888,
/* Just to fix the corner */
2px 0 0 0 #888 inset,
0 2px 0 0 #888 inset;
}
.table-main .row-data {
box-shadow:
2px 0 0 0 #000,
0 2px 0 0 #000,
2px 2px 0 0 #000,
/* Just to fix the corner */
2px 0 0 0 #000 inset,
0 2px 0 0 #000 inset;
}
</style>

View File

@@ -0,0 +1,76 @@
<template>
<q-layout view="lHh Lpr lFf">
<q-header elevated>
<q-toolbar>
<q-btn
flat
dense
round
icon="menu"
aria-label="Menu"
@click="toggleLeftDrawer"
/>
<q-toolbar-title>Register pravinickych osob TISK</q-toolbar-title>
<div>Quasar v{{ $q.version }}</div>
</q-toolbar>
</q-header>
<q-page-container>
<slot />
</q-page-container>
</q-layout>
</template>
<script>
import { defineComponent, ref } from "vue";
import EssentialLink from "../components/EssentialLink.vue";
const linksList = [
{
title: "Github",
caption: "https://github.com/laraquasar",
icon: "code",
link: "https://github.com/laraquasar",
},
{
title: "Packagist",
caption: "https://packagist.org/packages/laraquasar/laraquasar",
icon: "code",
link: "https://packagist.org/packages/laraquasar/laraquasar",
},
{
title: "Docs Quasar",
caption: "quasar.dev",
icon: "school",
link: "https://quasar.dev",
},
{
title: "Docs Laravel",
caption: "laravel.com/docs",
icon: "school",
link: "https://laravel.com/docs",
},
];
export default defineComponent({
name: "MainLayout",
components: {
EssentialLink,
},
setup() {
const leftDrawerOpen = ref(false);
return {
essentialLinks: linksList,
leftDrawerOpen,
toggleLeftDrawer() {
leftDrawerOpen.value = !leftDrawerOpen.value;
},
};
},
});
</script>

View File

@@ -0,0 +1,61 @@
<script setup>
import Layout from "../../layouts/MainLayout.vue";
import { Head, Link, useForm } from '@inertiajs/vue3';
import rpoFields from '../../Data/MultiSelectOptionsRPO';
import { onMounted, ref } from 'vue';
import { defineEmits } from 'vue'
import RpoRecord2 from '@/Components/RpoRecord2.vue';
import Pagination from '@/Components/Pagination.vue';
import { router } from '@inertiajs/vue3'
const props = defineProps({
result: Object,
query: Object,
});
const page = ref(props.result.current_page);
const current_page = ref(props.result.current_page);
const page_last = ref(props.result.last_page);
function goAnotherPage() {
console.log('result',props.result);
console.log('page',page.value);
console.log('query',props.query)
let urllink = props.result.links.filter((l) => l.label == page.value)[0].url;
router.post(urllink, props.query);
}
</script>
<template>
<Head>
<title>RPO TISK Results</title>
</Head>
<Layout>
<q-page class="column items-center" >
<div class="col">
<q-pagination v-model="page" :min="current_page" :max="page_last" @update:model-value="goAnotherPage" input direction-links push color="teal" active-design="push"
active-color="orange" />
</div>
<div class="col">
<div class="q-pa-md fit row wrap justify-center items-start content-start">
<div class="row">
<RpoRecord2 :data="r" v-for="r in result.data" :key="r.id" />
</div>
</div>
</div>
<div class="col">
<q-pagination v-model="page" :min="current_page" :max="page_last" @update:model-value="goAnotherPage" input direction-links push color="teal" active-design="push"
active-color="orange" />
</div>
<div class="hidden col q-mt-xl">
{{ query }}
</div>
</q-page>
</Layout>
</template>

View File

@@ -0,0 +1,98 @@
<template>
<Head>
<title>RPO TISK</title>
</Head>
<Layout>
<q-page class="column flex-center">
<div class="flex q-gutter-lg justify-center items-center">
<JsonQueryBuilder :query="query" :queryOptions="rpoMultiselect" @run-query="submit" ></JsonQueryBuilder>
</div>
<div class="q-mt-xl">
{{ query }}
</div>
</q-page>
</Layout>
</template>
<script setup>
import Layout from "../layouts/MainLayout.vue";
import JsonQueryBuilder from '../components/JsonQueryBuilder.vue';
import { ref, watch, computed } from "vue";
import { Head } from "@inertiajs/vue3";
import { router } from '@inertiajs/vue3';
import { Dark } from "quasar";
import rpoJsonData from '../Data/RpoTree.json';
const query = ref({
condition: 'and',
rules: [{
id: 'addresses.municipality.value',
operator: '=',
value: 'Bratislava'
}, {
condition: 'or',
rules: [{
id: 'statutoryBodies.personName.familyNames',
operator: '=',
value: 'Grochalová'
}, {
id: 'statutoryBodies.personName.familyNames',
operator: '=',
value: 'Grochal'
}]
}]
})
console.log('QUERY',query);
const submit = () => {
console.log('Post data');
console.log(query.value);
router.post(`/search`, query.value);
};
function createRPOmulti(tree,flatListRpo, level = 0, fullPathRpo = []) {
console.log('keys=',Object.keys(tree));
console.log('TT=',typeof tree);
let fullPath = [ ...fullPathRpo ] ;
if (tree.desc != undefined) fullPath.push(tree.desc);
if (level == 0 || tree.type == "Object" || tree.type == "Array" || tree.type == undefined) {
Object.keys(tree).forEach(k => {
console.log('k=',k);
console.log('obj=',tree[k]);
console.log(typeof tree[k]);
console.log('t=',tree[k].type);
console.log('rec=',k);
if (typeof tree[k] != 'string') {
console.log('DESC=',tree[k].desc);
createRPOmulti(tree[k], flatListRpo, level + 1, fullPath );
}
});
} else {
flatListRpo.push({"name":tree.name, "type": tree.type, "desc": fullPath.join(' → ') });
}
}
const rpoMultiselect = computed(() => {
console.log('Rpo Multiselect');
var flatList = [];
createRPOmulti(rpoJsonData, flatList);
return flatList;
});
const count = ref(0);
const min = -5;
const max = 5;
const darkMode = ref(Dark.isActive);
watch(darkMode, (value) => {
Dark.set(value);
});
</script>

View File

@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
@route
@inertiaHead
@vite('resources/js/app.js')
</head>
<body>
@inertia
</body>
</html>