ose-app 0.2.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. ose_app/AppModule.py +98 -0
  2. ose_app/OntologyDataStore.py +464 -0
  3. ose_app/PermissionManager.py +78 -0
  4. ose_app/SpreadsheetSearcher.py +197 -0
  5. ose_app/__init__.py +130 -0
  6. ose_app/app.py +10 -0
  7. ose_app/constants.py +1 -0
  8. ose_app/custom_json.py +23 -0
  9. ose_app/default_config.py +39 -0
  10. ose_app/gh.py +60 -0
  11. ose_app/guards/__init__.py +0 -0
  12. ose_app/guards/verify_login.py +20 -0
  13. ose_app/guards/with_permission.py +54 -0
  14. ose_app/jinja_extensions/__init__.py +42 -0
  15. ose_app/routes/__init__.py +24 -0
  16. ose_app/routes/admin.py +108 -0
  17. ose_app/routes/api/__init__.py +23 -0
  18. ose_app/routes/api/edit.py +162 -0
  19. ose_app/routes/api/external.py +198 -0
  20. ose_app/routes/api/plugins.py +22 -0
  21. ose_app/routes/api/release.py +380 -0
  22. ose_app/routes/api/repos.py +55 -0
  23. ose_app/routes/api/scripts.py +49 -0
  24. ose_app/routes/api/search.py +19 -0
  25. ose_app/routes/api/settings.py +115 -0
  26. ose_app/routes/api/validate.py +264 -0
  27. ose_app/routes/api/visualise.py +228 -0
  28. ose_app/routes/auth.py +44 -0
  29. ose_app/routes/edit.py +690 -0
  30. ose_app/routes/main.py +100 -0
  31. ose_app/routes/search.py +42 -0
  32. ose_app/routes/status.py +10 -0
  33. ose_app/routes/visualize.py +108 -0
  34. ose_app/static/addicto.release.json +129 -0
  35. ose_app/static/bcio.release.json +321 -0
  36. ose_app/static/example.json +134 -0
  37. ose_app/static/excel-bootstrap-table-filter-bundle.js +326 -0
  38. ose_app/static/excel-bootstrap-table-filter-bundle.js.map +1 -0
  39. ose_app/static/excel-bootstrap-table-filter-bundle.min.js +2 -0
  40. ose_app/static/excel-bootstrap-table-filter-bundle.min.js.map +1 -0
  41. ose_app/static/excel-bootstrap-table-filter-style.css +78 -0
  42. ose_app/static/gmho.release.json +139 -0
  43. ose_app/static/js/admin.js +2 -0
  44. ose_app/static/js/admin.js.map +1 -0
  45. ose_app/static/js/assets/CollapsibleCard.css +1 -0
  46. ose_app/static/js/assets/editor.css +1 -0
  47. ose_app/static/js/assets/release.css +1 -0
  48. ose_app/static/js/assets/settings.css +1 -0
  49. ose_app/static/js/assets/visualise.css +1 -0
  50. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-CgGO-ddH-BDr_frBe.js +2 -0
  51. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-CgGO-ddH-BDr_frBe.js.map +1 -0
  52. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-CgGO-ddH-MonxH8xj.js +2 -0
  53. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-CgGO-ddH-MonxH8xj.js.map +1 -0
  54. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-DKAZyKKr-DTksKjtf.js +2 -0
  55. ose_app/static/js/chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-DKAZyKKr-DTksKjtf.js.map +1 -0
  56. ose_app/static/js/chunks/CollapsibleCard-BQR8R54V.js +2 -0
  57. ose_app/static/js/chunks/CollapsibleCard-BQR8R54V.js.map +1 -0
  58. ose_app/static/js/chunks/CollapsibleCard-DgwkQKDg.js +2 -0
  59. ose_app/static/js/chunks/CollapsibleCard-DgwkQKDg.js.map +1 -0
  60. ose_app/static/js/chunks/CollapsibleCard-DoX0kPCZ.js +2 -0
  61. ose_app/static/js/chunks/CollapsibleCard-DoX0kPCZ.js.map +1 -0
  62. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-CBzsmnqW.js +43 -0
  63. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-CBzsmnqW.js.map +1 -0
  64. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-EcINi797.js +43 -0
  65. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-EcINi797.js.map +1 -0
  66. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-bumDOBqD.js +43 -0
  67. ose_app/static/js/chunks/Diagnostic.vue_vue_type_script_setup_true_lang-bumDOBqD.js.map +1 -0
  68. ose_app/static/js/chunks/_plugin-vue_export-helper-DlAUqK2U.js +2 -0
  69. ose_app/static/js/chunks/_plugin-vue_export-helper-DlAUqK2U.js.map +1 -0
  70. ose_app/static/js/chunks/bootbox-D3SJ_Fwv.js +2 -0
  71. ose_app/static/js/chunks/bootbox-D3SJ_Fwv.js.map +1 -0
  72. ose_app/static/js/chunks/constants-CzBHF1EN.js +2 -0
  73. ose_app/static/js/chunks/constants-CzBHF1EN.js.map +1 -0
  74. ose_app/static/js/chunks/constants-DL6Hx3V0.js +2 -0
  75. ose_app/static/js/chunks/constants-DL6Hx3V0.js.map +1 -0
  76. ose_app/static/js/chunks/constants-DPgwRV4l.js +2 -0
  77. ose_app/static/js/chunks/constants-DPgwRV4l.js.map +1 -0
  78. ose_app/static/js/chunks/filter-Bx-PU1OL.js +18 -0
  79. ose_app/static/js/chunks/filter-Bx-PU1OL.js.map +1 -0
  80. ose_app/static/js/chunks/filter-CdAXK93b.js +18 -0
  81. ose_app/static/js/chunks/filter-CdAXK93b.js.map +1 -0
  82. ose_app/static/js/chunks/filter-CiYqP1_r.js +2 -0
  83. ose_app/static/js/chunks/filter-CiYqP1_r.js.map +1 -0
  84. ose_app/static/js/chunks/index-sLCKmIWG-B5BYNF2N.js +2 -0
  85. ose_app/static/js/chunks/index-sLCKmIWG-B5BYNF2N.js.map +1 -0
  86. ose_app/static/js/chunks/index-sLCKmIWG-Cb9lQq-c.js +9 -0
  87. ose_app/static/js/chunks/index-sLCKmIWG-Cb9lQq-c.js.map +1 -0
  88. ose_app/static/js/chunks/index-sLCKmIWG-umQeu_-w.js +3 -0
  89. ose_app/static/js/chunks/index-sLCKmIWG-umQeu_-w.js.map +1 -0
  90. ose_app/static/js/editor.js +36 -0
  91. ose_app/static/js/editor.js.map +1 -0
  92. ose_app/static/js/release.js +6 -0
  93. ose_app/static/js/release.js.map +1 -0
  94. ose_app/static/js/settings.js +2 -0
  95. ose_app/static/js/settings.js.map +1 -0
  96. ose_app/static/js/visualise.js +3 -0
  97. ose_app/static/js/visualise.js.map +1 -0
  98. ose_app/static/main.css +1 -0
  99. ose_app/static/main.css.map +7 -0
  100. ose_app/static/main.scss +147 -0
  101. ose_app/static/mindmup-editabletable.js +131 -0
  102. ose_app/static/schema/release_script.json +215 -0
  103. ose_app/static/schema/req_body_edit.json +35 -0
  104. ose_app/static/schema/req_body_guess_parent.json +38 -0
  105. ose_app/static/schema/req_body_import.json +47 -0
  106. ose_app/static/schema/req_body_release_start.json +9 -0
  107. ose_app/static/schema/req_body_visualise.json +18 -0
  108. ose_app/static/test.dot +190 -0
  109. ose_app/static/workflows/externals.yaml.jinja2 +44 -0
  110. ose_app/templates/access_show_visualisation_for_ids.html +120 -0
  111. ose_app/templates/admin/dashboard.html +18 -0
  112. ose_app/templates/admin/rebuild_index.html +85 -0
  113. ose_app/templates/admin/release.html +46 -0
  114. ose_app/templates/admin/settings.html +23 -0
  115. ose_app/templates/base.html +151 -0
  116. ose_app/templates/edit.html +21 -0
  117. ose_app/templates/edit_external.html +491 -0
  118. ose_app/templates/forbidden.html +9 -0
  119. ose_app/templates/index.html +33 -0
  120. ose_app/templates/loggedout.html +21 -0
  121. ose_app/templates/repo.html +294 -0
  122. ose_app/templates/testgeneratedbyapi.html +294 -0
  123. ose_app/templates/visualise.html +17 -0
  124. ose_app-0.2.5.dist-info/METADATA +27 -0
  125. ose_app-0.2.5.dist-info/RECORD +127 -0
  126. ose_app-0.2.5.dist-info/WHEEL +5 -0
  127. ose_app-0.2.5.dist-info/top_level.txt +1 -0
@@ -0,0 +1,139 @@
1
+ {
2
+ "iri_prefix": "https://galenos.org.uk/ontologies/",
3
+ "short_repository_name": "GMHO",
4
+ "full_repository_name": "b-gehrke/mental-health-ontology",
5
+ "external": {
6
+ "sources": [
7
+ {
8
+ "file": "UpperLevel/GMHO_External_Imports.xlsx",
9
+ "type": "classes"
10
+ }
11
+ ],
12
+ "target": {
13
+ "file": "UpperLevel/gmho_external.owl",
14
+ "iri": "https://galenos.org.uk/ontologies/gmho_external.owl",
15
+ "ontology_annotations": {}
16
+ },
17
+ "needs": []
18
+ },
19
+ "files": {
20
+ "gmho": {
21
+ "sources": [
22
+ {
23
+ "file": "Intervention setting/Intervention setting.xlsx",
24
+ "type": "classes"
25
+ },
26
+ {
27
+ "file": "Intervention content and delivery/Intervention content and delivery.xlsx",
28
+ "type": "classes"
29
+ },
30
+ {
31
+ "file": "Intervention outcomes and spillover effects/Intervention outcomes and spillover effects.xlsx",
32
+ "type": "classes"
33
+ },
34
+ {
35
+ "file": "Research methods/Research methods.xlsx",
36
+ "type": "classes"
37
+ },
38
+ {
39
+ "file": "Intervention population/Intervention population.xlsx",
40
+ "type": "classes"
41
+ },
42
+ {
43
+ "file": "Non-GMHO entities mapped to LSRs/Non-GMHO entities mapped to LSRs.xlsx",
44
+ "type": "classes"
45
+ },
46
+ {
47
+ "file": "Intervention mechanism/Intervention mechanism of action.xlsx",
48
+ "type": "classes"
49
+ },
50
+ {
51
+ "file": "Temporary entity spreadsheet/Temporary entity spreadsheet.xlsx",
52
+ "type": "classes"
53
+ }
54
+ ],
55
+ "target": {
56
+ "file": "gmho_with_imports.owl",
57
+ "iri": "https://galenos.org.uk/ontologies/gmho_with_imports.owl",
58
+ "ontology_annotations": {},
59
+ "publish": false
60
+ },
61
+ "needs": [
62
+ "gmho_upper"
63
+ ]
64
+ },
65
+ "gmho_final": {
66
+ "sources": [
67
+ {
68
+ "file": "gmho_with_imports.owl",
69
+ "type": "owl"
70
+ },
71
+ {
72
+ "file": "gmho_upper.owl",
73
+ "type": "owl"
74
+ }
75
+ ],
76
+ "target": {
77
+ "file": "gmho.owl",
78
+ "iri": "https://galenos.org.uk/ontologies/gmho.owl",
79
+ "ontology_annotations": {}
80
+ },
81
+ "needs": []
82
+ },
83
+ "gmho_upper": {
84
+ "sources": [
85
+ {
86
+ "file": "UpperLevel/GMHO_Upper_Rels.xlsx",
87
+ "type": "relations"
88
+ },
89
+ {
90
+ "file": "UpperLevel/GMHO_Upper_Defs.xlsx",
91
+ "type": "classes"
92
+ }
93
+ ],
94
+ "target": {
95
+ "file": "gmho_upper.owl",
96
+ "iri": "https://galenos.org.uk/ontologies/gmho_upper.owl",
97
+ "ontology_annotations": {}
98
+ },
99
+ "needs": []
100
+ }
101
+ },
102
+ "steps": [
103
+ {
104
+ "name": "PREPARATION",
105
+ "args": {}
106
+ },
107
+ {
108
+ "name": "IMPORT_EXTERNAL",
109
+ "args": {}
110
+ },
111
+ {
112
+ "name": "VALIDATION",
113
+ "args": {}
114
+ },
115
+ {
116
+ "name": "BUILD",
117
+ "args": {}
118
+ },
119
+ {
120
+ "name": "MERGE",
121
+ "args": {}
122
+ },
123
+ {
124
+ "name": "HUMAN_VERIFICATION",
125
+ "args": {}
126
+ },
127
+ {
128
+ "name": "GITHUB_PUBLISH",
129
+ "args": {}
130
+ }
131
+ ],
132
+ "prefixes": {
133
+ "ADDICTO": "http://addictovocab.org/ADDICTO_",
134
+ "BCIO": "http://humanbehaviourchange.org/ontology/BCIO_",
135
+ "EFO": "http://www.ebi.ac.uk/efo/EFO_",
136
+ "GMHO": "https://galenos.org.uk/ontologies/GMHO_",
137
+ "GMHOR": "https://galenos.org.uk/ontologies/GMHOR_"
138
+ }
139
+ }
@@ -0,0 +1,2 @@
1
+ import{d as _,r as f,o as y,c as n,a as c,b as $,e,u as C,f as S,F as m,g as T,h as k,t as B,i as d,j as P,$ as R}from"./chunks/filter-CiYqP1_r.js";import{p as j}from"./chunks/bootbox-D3SJ_Fwv.js";import"./chunks/index-sLCKmIWG-umQeu_-w.js";import{u as A,_ as E,B as N}from"./chunks/BToastOrchestrator.vue_vue_type_style_index_0_lang-CgGO-ddH-BDr_frBe.js";const V={class:"row align-stretch"},D={class:"col-sm-6 col-md-4 col-lg-3 m-2"},F=["href"],L={class:"col-sm-6 col-md-4 col-lg-3 m-2"},O=["href"],U={class:"col-sm-6 col-md-4 col-lg-3 m-2"},G={key:0,class:"col-sm-6 col-md-4 col-lg-3 m-2"},H=["href"],I={class:"row align-stretch"},J={class:"dropdown m-2"},M={class:"dropdown-menu"},q=["onClick"],z=_({__name:"Dashboard",setup(K){const p=URLS.prefix,{show:x}=A();async function v(a){const o=u.value[a].arguments,l=[];if(o?.length>0)for(const t of o){const h=await j({title:t.description,value:t.default,inputType:"text"});if(h===null)return;l.push(h)}const r=bootbox.dialog({message:'<i class="fa fa-spin fa-spinner"></i> Script is being executed',closeButton:!1});let g=new Promise((t,h)=>{r.on("shown.bs.modal",()=>t())});try{const t=await(await fetch(`${p}/api/scripts/${a}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({args:l})})).json();await g,r.modal("hide"),bootbox.dialog({title:t.success?"Success":"Error",message:t.result??t.error})}catch(t){await g,r.modal("hide"),bootbox.dialog({message:`<p>An error occurred</p><p>${t}</p>`,title:"Error"})}}async function w(){const a=bootbox.dialog({message:'<i class="fa fa-spin fa-spinner"></i> Clearing caches',closeButton:!1});let s=new Promise((o,l)=>{a.on("shown.bs.modal",()=>o())});try{await fetch(`${p}/api/settings/clear_caches`,{method:"POST",headers:{"Content-Type":"application/json"}}),await s,a.modal("hide"),x?.({props:{value:5e3,progressProps:{variant:"success"}},component:d(N,{variant:"success"},{default:()=>d("div",{style:"display: flex; align-items: center; gap: 16px"},[d("i",{class:"fa fa-check"}),d("span",null,"Caches cleared!")])})})}catch(o){await s,a.modal("hide"),bootbox.dialog({message:`<p>An error occurred</p><p>${o}</p>`,title:"Error"})}}const i=f(URLS),u=f(null);return y(async()=>{u.value=(await(await fetch(`${p}/api/scripts`)).json()).result}),(a,s)=>(c(),n(m,null,[$(C(E)),e("div",V,[e("div",D,[e("a",{href:i.value.release,class:"card bg-light",style:{height:"100%","text-decoration":"none","border-width":"2px 2px 4px 2px"}},[...s[1]||(s[1]=[e("div",{class:"section p-5 text-center fs-2 bg-light"},[e("i",{class:"fas fa-upload"})],-1),e("div",{class:"card-body"},[e("h4",null,"Release"),e("p",null," Start the release process and release a new version of ontologies ")],-1)])],8,F)]),e("div",L,[e("a",{href:i.value.rebuildIndex,class:"card bg-light",style:{height:"100%","text-decoration":"none","border-width":"2px 2px 4px 2px"}},[...s[2]||(s[2]=[e("div",{class:"section p-5 text-center fs-2 bg-light"},[e("i",{class:"fas fa-folder-open"})],-1),e("div",{class:"card-body"},[e("h4",null,"Rebuild index"),e("p",null," Force a complete rebuild of the index to ensure the search finds all entries. ")],-1)])],8,O)]),e("div",U,[e("a",{class:"card bg-light",href:"#",style:{height:"100%","text-decoration":"none","border-width":"2px 2px 4px 2px"},onClick:s[0]||(s[0]=o=>w())},[...s[3]||(s[3]=[e("div",{class:"section p-5 text-center fs-2 bg-light"},[e("i",{class:"fas fa-gauge-high"})],-1),e("div",{class:"card-body"},[e("h4",null,"Clear caches"),e("p",null," Clear cached files loaded from GitHub to ensure the latest version is used. ")],-1)])])]),"settings"in i.value?(c(),n("div",G,[e("a",{href:i.value.settings,class:"card bg-light",style:{height:"100%","text-decoration":"none","border-width":"2px 2px 4px 2px"}},[...s[4]||(s[4]=[e("div",{class:"section p-5 text-center fs-2 bg-light"},[e("i",{class:"fa-solid fa-gear"})],-1),e("div",{class:"card-body"},[e("h4",null,"Repositories"),e("p",null," Add, remove, or edit repositories available on the editor. ")],-1)])],8,H)])):S("",!0)]),e("div",I,[e("div",J,[s[6]||(s[6]=e("button",{"aria-expanded":"false",class:"btn btn-danger dropdown-toggle","data-bs-toggle":"dropdown",type:"button"}," Run a script ",-1)),e("ul",M,[(c(!0),n(m,null,T(u.value,(o,l)=>(c(),n("li",null,[e("a",{class:"dropdown-item",href:"#",onClick:r=>v(l)},[s[5]||(s[5]=e("i",{class:"fa-regular fa-circle-play text-success"},null,-1)),k(" "+B(o.title),1)],8,q)]))),256))])])])],64))}}),b=P(z);b.config.globalProperties.$filters=R;b.mount("#vue-app-dashboard");
2
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sources":["../../../../../ose-js-app/src/admin/Dashboard.vue","../../../../../ose-js-app/src/admin/main.ts"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {h, onMounted, ref} from \"vue\";\nimport {promptDialog} from \"../common/bootbox\";\nimport {BToast, BToastOrchestrator, useToastController} from \"bootstrap-vue-next\";\n\ndeclare var URLS: { [key: string]: any }\nconst prefix_url = URLS.prefix\n\nconst {show: showToast} = useToastController()\n\nasync function runScript(scriptName: string) {\n const script = scripts.value[scriptName]\n const script_args = script.arguments;\n\n const args = []\n if (script_args?.length > 0) {\n\n for (const arg of script_args) {\n const value = await promptDialog({\n title: arg.description,\n value: arg.default,\n inputType: \"text\"\n })\n\n if (value === null) {\n return\n }\n\n args.push(value)\n }\n }\n\n const dialog = bootbox.dialog({\n message: '<i class=\"fa fa-spin fa-spinner\"></i> Script is being executed',\n closeButton: false\n })\n let dialogShown$ = new Promise<void>((resolve, _) => {\n dialog.on('shown.bs.modal', () => resolve())\n });\n try {\n\n const response = await (await fetch(`${prefix_url}/api/scripts/${scriptName}/run`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({args})\n })).json()\n\n await dialogShown$;\n dialog.modal(\"hide\")\n\n bootbox.dialog({\n title: response.success ? \"Success\" : \"Error\",\n message: response.result ?? response.error\n })\n } catch (e) {\n await dialogShown$;\n dialog.modal(\"hide\")\n\n bootbox.dialog({\n message: `<p>An error occurred</p><p>${e}</p>`,\n title: \"Error\"\n })\n }\n}\n\nasync function clearCaches() {\n const dialog = bootbox.dialog({\n message: '<i class=\"fa fa-spin fa-spinner\"></i> Clearing caches',\n closeButton: false\n })\n let dialogShown$ = new Promise<void>((resolve, _) => {\n dialog.on('shown.bs.modal', () => resolve())\n });\n try {\n\n await fetch(`${prefix_url}/api/settings/clear_caches`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n })\n\n await dialogShown$;\n dialog.modal(\"hide\")\n\n showToast?.({\n props: {\n value: 5000,\n progressProps: {\n variant: 'success',\n }\n },\n component: h(BToast, {variant: \"success\"}, {\n default: () => h(\"div\", {style: \"display: flex; align-items: center; gap: 16px\"}, [\n h(\"i\", {class: \"fa fa-check\"}),\n h(\"span\", null, \"Caches cleared!\")\n ])\n })\n })\n } catch (e) {\n await dialogShown$;\n dialog.modal(\"hide\")\n\n bootbox.dialog({\n message: `<p>An error occurred</p><p>${e}</p>`,\n title: \"Error\"\n })\n }\n}\n\nconst urls = ref(URLS)\n\nconst scripts = ref<null | {\n [key: string]: {\n title: string,\n arguments?: {\n name: string,\n description: string,\n type: string,\n default?: string\n }[]\n }\n}>(null)\n\nonMounted(async () => {\n scripts.value = (await (await fetch(`${prefix_url}/api/scripts`)).json()).result\n})\n\n</script>\n\n<template>\n <BToastOrchestrator />\n\n <div class=\"row align-stretch\">\n <div class=\"col-sm-6 col-md-4 col-lg-3 m-2\">\n <a :href=\"urls.release\" class=\"card bg-light\"\n style=\"height: 100%; text-decoration: none; border-width: 2px 2px 4px 2px\">\n <div class=\"section p-5 text-center fs-2 bg-light\">\n <i class=\"fas fa-upload\"></i>\n </div>\n\n <div class=\"card-body\">\n <h4>Release</h4>\n <p>\n Start the release process and release a new version of ontologies\n </p>\n </div>\n </a>\n </div>\n <div class=\"col-sm-6 col-md-4 col-lg-3 m-2\">\n\n <a :href=\"urls.rebuildIndex\" class=\"card bg-light\"\n style=\"height: 100%; text-decoration: none; border-width: 2px 2px 4px 2px\">\n <div class=\"section p-5 text-center fs-2 bg-light\">\n <i class=\"fas fa-folder-open\"></i>\n </div>\n\n <div class=\"card-body\">\n <h4>Rebuild index</h4>\n <p>\n Force a complete rebuild of the index to ensure the search finds all entries.\n </p>\n </div>\n </a>\n </div>\n <div class=\"col-sm-6 col-md-4 col-lg-3 m-2\">\n\n <a class=\"card bg-light\" href=\"#\" style=\"height: 100%; text-decoration: none; border-width: 2px 2px 4px 2px\"\n @click=\"clearCaches()\">\n <div class=\"section p-5 text-center fs-2 bg-light\">\n <i class=\"fas fa-gauge-high\"></i>\n </div>\n\n <div class=\"card-body\">\n <h4>Clear caches</h4>\n <p>\n Clear cached files loaded from GitHub to ensure the latest version is used.\n </p>\n </div>\n </a>\n </div>\n <div v-if=\"'settings' in urls\" class=\"col-sm-6 col-md-4 col-lg-3 m-2\">\n\n <a :href=\"urls.settings\" class=\"card bg-light\"\n style=\"height: 100%; text-decoration: none; border-width: 2px 2px 4px 2px\">\n <div class=\"section p-5 text-center fs-2 bg-light\">\n <i class=\"fa-solid fa-gear\"></i>\n </div>\n\n <div class=\"card-body\">\n <h4>Repositories</h4>\n <p>\n Add, remove, or edit repositories available on the editor.\n </p>\n </div>\n </a>\n </div>\n </div>\n <div class=\"row align-stretch\">\n <div class=\"dropdown m-2\">\n <button aria-expanded=\"false\" class=\"btn btn-danger dropdown-toggle\" data-bs-toggle=\"dropdown\"\n type=\"button\">\n Run a script\n </button>\n <ul class=\"dropdown-menu\">\n <li v-for=\"(script, key) in scripts\"><a class=\"dropdown-item\" href=\"#\" @click=\"runScript(key)\">\n <i class=\"fa-regular fa-circle-play text-success\"></i>\n {{ script.title }}\n </a></li>\n </ul>\n </div>\n\n </div>\n\n</template>\n\n<style lang=\"scss\" scoped>\n\n</style>\n","import {createApp} from \"vue\";\nimport Dashboard from \"./Dashboard.vue\";\nimport {$filters} from \"@ose/js-core\";\n\n\nconst app = createApp(Dashboard)\n\napp.config.globalProperties.$filters = $filters\n\napp.mount(\"#vue-app-dashboard\")\n"],"names":["prefix_url","showToast","useToastController","runScript","scriptName","script_args","scripts","args","arg","value","promptDialog","dialog","dialogShown$","resolve","_","response","e","clearCaches","h","BToast","urls","ref","onMounted","_createVNode","_unref","BToastOrchestrator","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_4","_hoisted_6","_openBlock","_createElementBlock","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_Fragment","_renderList","script","key","$event","_toDisplayString","app","createApp","Dashboard","$filters"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .collapsible-card[data-v-25b984b1]{border-width:2px 2px 4px 2px;border-style:solid;border-color:#ddd;border-radius:4px}.collapsible-card .header[data-v-25b984b1]{padding:14px 20px 14px 14px;display:flex;gap:14px;cursor:pointer;border-bottom:2px solid #DDDDDD}.collapsible-card .header .title[data-v-25b984b1]{font-size:large}.collapsible-card .header span[data-v-25b984b1]{flex-grow:1}.collapsible-card .header i[data-v-25b984b1]{align-self:center;transition:transform 1s}.collapsible-card .header.collapsed i[data-v-25b984b1]{transform:rotate(180deg)}.collapsible-card .header.collapsed[data-v-25b984b1]{transition:border-bottom-width;border-bottom-width:0;transition-delay:1s}.collapsible-card .body[data-v-25b984b1]{margin:14px 20px 14px 14px;transition:height 1s;box-sizing:border-box}