First commit
This commit is contained in:
BIN
resources/.DS_Store
vendored
Normal file
BIN
resources/.DS_Store
vendored
Normal file
Binary file not shown.
0
resources/css/app.css
Normal file
0
resources/css/app.css
Normal file
10
resources/css/quasar-variables.sass
Normal file
10
resources/css/quasar-variables.sass
Normal 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
BIN
resources/js/.DS_Store
vendored
Normal file
Binary file not shown.
92
resources/js/Data/MultiSelectOptionsRPO.js
Normal file
92
resources/js/Data/MultiSelectOptionsRPO.js
Normal 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;
|
||||
577
resources/js/Data/RpoTree.json
Normal file
577
resources/js/Data/RpoTree.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
resources/js/Data/tis_full-1.svg
Normal file
1
resources/js/Data/tis_full-1.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 10 KiB |
28
resources/js/app.js
Normal file
28
resources/js/app.js
Normal 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);
|
||||
},
|
||||
});
|
||||
36
resources/js/assets/logo.svg
Normal file
36
resources/js/assets/logo.svg
Normal 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 |
1
resources/js/assets/quasar-logo-inner.svg
Normal file
1
resources/js/assets/quasar-logo-inner.svg
Normal file
File diff suppressed because one or more lines are too long
32
resources/js/bootstrap.js
vendored
Normal file
32
resources/js/bootstrap.js
vendored
Normal 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'],
|
||||
// });
|
||||
41
resources/js/components/EssentialLink.vue
Normal file
41
resources/js/components/EssentialLink.vue
Normal 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>
|
||||
50
resources/js/components/JsonQueryBuilder.vue
Normal file
50
resources/js/components/JsonQueryBuilder.vue
Normal 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>
|
||||
86
resources/js/components/JsonQueryBuilderGroup.vue
Normal file
86
resources/js/components/JsonQueryBuilderGroup.vue
Normal 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>
|
||||
166
resources/js/components/JsonQueryBuilderRule.vue
Normal file
166
resources/js/components/JsonQueryBuilderRule.vue
Normal 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>
|
||||
28
resources/js/components/Pagination.vue
Normal file
28
resources/js/components/Pagination.vue
Normal 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>
|
||||
60
resources/js/components/Pagination2.vue
Normal file
60
resources/js/components/Pagination2.vue
Normal 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>
|
||||
118
resources/js/components/RpoRecord.vue
Normal file
118
resources/js/components/RpoRecord.vue
Normal 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>
|
||||
204
resources/js/components/RpoRecord2.vue
Normal file
204
resources/js/components/RpoRecord2.vue
Normal 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>
|
||||
76
resources/js/layouts/MainLayout.vue
Normal file
76
resources/js/layouts/MainLayout.vue
Normal 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>
|
||||
61
resources/js/pages/Rpo/Results.vue
Normal file
61
resources/js/pages/Rpo/Results.vue
Normal 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>
|
||||
98
resources/js/pages/welcome.vue
Normal file
98
resources/js/pages/welcome.vue
Normal 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>
|
||||
18
resources/views/app.blade.php
Normal file
18
resources/views/app.blade.php
Normal 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>
|
||||
Reference in New Issue
Block a user