Search bars: Caption maps

This commit is contained in:
Gabriel Herbert
2025-06-03 12:10:53 +02:00
parent 58c1795bea
commit 7219fcea73
2 changed files with 50 additions and 17 deletions

View File

@@ -111,26 +111,29 @@ func Get_tx(ctx context.Context, tx pgx.Tx, id pgtype.UUID, target string) (type
OR api_id IN (
SELECT id FROM app.api WHERE module_id = $5
)
OR search_bar_id IN (
SELECT id FROM app.search_bar WHERE module_id = $6
)
)
OR field_id IN (
SELECT id FROM app.field WHERE form_id IN (
SELECT id FROM app.form WHERE module_id = $6
SELECT id FROM app.form WHERE module_id = $7
)
)
OR form_action_id IN (
SELECT id FROM app.form_action WHERE form_id IN (
SELECT id FROM app.form WHERE module_id = $7
SELECT id FROM app.form WHERE module_id = $8
)
)
OR menu_id IN (
SELECT id FROM app.menu WHERE menu_tab_id IN (
SELECT id FROM app.menu_tab WHERE module_id = $8
SELECT id FROM app.menu_tab WHERE module_id = $9
)
)
OR tab_id IN (
SELECT id FROM app.tab WHERE field_id IN (
SELECT id FROM app.field WHERE form_id IN (
SELECT id FROM app.form WHERE module_id = $9
SELECT id FROM app.form WHERE module_id = $10
)
)
)
@@ -139,24 +142,24 @@ func Get_tx(ctx context.Context, tx pgx.Tx, id pgtype.UUID, target string) (type
SELECT id FROM app.query
WHERE field_id IN (
SELECT id FROM app.field WHERE form_id IN (
SELECT id FROM app.form WHERE module_id = $10
SELECT id FROM app.form WHERE module_id = $11
)
)
-- only direct field queries have filter choices and therefore captions
-- most queries do not: form query, collection query, column sub query, filter sub query
)
)
OR article_id IN (SELECT id FROM app.article WHERE module_id = $11)
OR client_event_id IN (SELECT id FROM app.client_event WHERE module_id = $12)
OR form_id IN (SELECT id FROM app.form WHERE module_id = $13)
OR js_function_id IN (SELECT id FROM app.js_function WHERE module_id = $14)
OR login_form_id IN (SELECT id FROM app.login_form WHERE module_id = $15)
OR menu_tab_id IN (SELECT id FROM app.menu_tab WHERE module_id = $16)
OR pg_function_id IN (SELECT id FROM app.pg_function WHERE module_id = $17)
OR role_id IN (SELECT id FROM app.role WHERE module_id = $18)
OR search_bar_id IN (SELECT id FROM app.search_bar WHERE module_id = $19)
OR widget_id IN (SELECT id FROM app.widget WHERE module_id = $20)
`, sqlSelect, target), id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id)
OR article_id IN (SELECT id FROM app.article WHERE module_id = $12)
OR client_event_id IN (SELECT id FROM app.client_event WHERE module_id = $13)
OR form_id IN (SELECT id FROM app.form WHERE module_id = $14)
OR js_function_id IN (SELECT id FROM app.js_function WHERE module_id = $15)
OR login_form_id IN (SELECT id FROM app.login_form WHERE module_id = $16)
OR menu_tab_id IN (SELECT id FROM app.menu_tab WHERE module_id = $17)
OR pg_function_id IN (SELECT id FROM app.pg_function WHERE module_id = $18)
OR role_id IN (SELECT id FROM app.role WHERE module_id = $19)
OR search_bar_id IN (SELECT id FROM app.search_bar WHERE module_id = $20)
OR widget_id IN (SELECT id FROM app.widget WHERE module_id = $21)
`, sqlSelect, target), id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id, id)
}
if err != nil {

View File

@@ -584,6 +584,17 @@ let MyCaptionMap = {
:name="capGen.jsFunctions"
:readonly="readonly"
/>
<!-- search bars -->
<my-caption-map-items icon="search.png"
@update="storeChange"
:isCustom="isCustom"
:items="captionsSearchBars"
:languages="showLanguageCodes"
:languagesCustom="languagesCustom"
:levelMax="1"
:name="capGen.searchBars"
:readonly="readonly"
/>
<!-- collections -->
<my-caption-map-items icon="tray.png"
@update="storeChange"
@@ -637,7 +648,7 @@ let MyCaptionMap = {
:readonly="readonly"
/>
<!-- query choices -->
<my-caption-map-items icon="search.png"
<my-caption-map-items icon="filter.png"
@update="storeChange"
:isCustom="isCustom"
:items="captionsQueryChoices"
@@ -842,6 +853,24 @@ let MyCaptionMap = {
}
return out;
},
captionsSearchBars:(s) => {
let searchBarIdMap = {};
for(const bar of s.module.searchBars) {
let childCaptions = [];
for(const col of bar.columns) {
if(s.captionMap.columnIdMap[col.id] !== undefined)
childCaptions.push(s.makeItem(col.id,s.getColumnTitle(col,s.moduleId),s.captionMap.columnIdMap[col.id],[]));
}
if(childCaptions.length !== 0 || s.captionMap.searchBarIdMap[bar.id] !== undefined)
searchBarIdMap[bar.id] = childCaptions;
}
let out = [];
for(const id in searchBarIdMap) {
out.push(s.makeItem(id,s.searchBarIdMap[id].name,s.captionMap.searchBarIdMap[id],searchBarIdMap[id]));
}
return out.sort((a,b) => (a.name > b.name) ? 1 : -1);
},
// simple
captionsArticles: (s) => s.makeSortedItemList(s.captionMap.articleIdMap,s.articleIdMap),
@@ -869,6 +898,7 @@ let MyCaptionMap = {
pgFunctionIdMap:(s) => s.$store.getters['schema/pgFunctionIdMap'],
relationIdMap: (s) => s.$store.getters['schema/relationIdMap'],
roleIdMap: (s) => s.$store.getters['schema/roleIdMap'],
searchBarIdMap: (s) => s.$store.getters['schema/searchBarIdMap'],
widgetIdMap: (s) => s.$store.getters['schema/widgetIdMap'],
capApp: (s) => s.$store.getters.captions.captionMap,
capGen: (s) => s.$store.getters.captions.generic,