From 509e425ddcc440e49ff763a73a35c55d226a7982 Mon Sep 17 00:00:00 2001 From: Todd Bruner Date: Thu, 31 Oct 2024 14:55:02 -0600 Subject: [PATCH] Initial --- .browserslistrc | 3 + .env | 4 + .eslintrc.js | 38 + Dockerfile | 23 + LICENSE | 214 +- README.md | 40 +- babel.config.js | 6 + config/CssStub.js | 1 + config/dev.env.ts | 4 + entrypoint.sh | 9 + httpd.conf | 44 + jest.config.js | 7 + local_dev.env | 6 + package.json | 111 + public/favicon.ico | Bin 0 -> 1470 bytes public/images/azure-sentinel.png | Bin 0 -> 5200 bytes public/index.html | 18 + src/App.vue | 222 + src/api/auth.ts | 95 + src/api/elements.ts | 745 ++ src/api/file.ts | 38 + src/api/storage_provider.ts | 43 + src/api/team.ts | 141 + src/api/user.ts | 220 + src/assets/logo.png | Bin 0 -> 6849 bytes src/assets/logo.svg | 1 + src/assets/scot-logo.png | Bin 0 -> 481196 bytes src/assets/scss/functions4.scss | 118 + src/assets/scss/tabulator_bootstrap4.scss | 1215 +++ src/assets/scss/variables4.scss | 930 +++ .../AdminComponents/AdminNavBar.vue | 298 + .../AdminComponents/AuthMethodForm.vue | 129 + .../AdminComponents/AuthMethodsTable.vue | 70 + .../AdminComponents/DefaultPermissions.vue | 279 + .../AdminComponents/GlobalSettings.vue | 64 + .../PlatformsPanel/OrchestrationPanel.vue | 142 + .../PlatformsPanel/PlatformPanel.vue | 142 + .../PlatformsPanel/SplunkConfigForm.vue | 119 + src/components/AdminComponents/RoleForm.vue | 121 + src/components/AdminComponents/RolesTable.vue | 67 + .../AdminComponents/StorageProviderForm.vue | 120 + .../AdminComponents/StorageProviderTable.vue | 67 + src/components/AdminComponents/UserForm.vue | 238 + src/components/AdminComponents/UsersTable.vue | 82 + .../IRCalendarComponent.vue | 290 + .../EnrichmentPaneComponents/JsonTreePane.vue | 78 + .../LineChartPane.vue | 53 + .../EnrichmentPaneComponents/MarkdownPane.vue | 41 + .../PlainTextPane.vue | 27 + .../CountryIconComponents/AC.vue | 83 + .../CountryIconComponents/AD.vue | 150 + .../CountryIconComponents/AE.vue | 8 + .../CountryIconComponents/AF.vue | 83 + .../CountryIconComponents/AG.vue | 16 + .../CountryIconComponents/AI.vue | 765 ++ .../CountryIconComponents/AL.vue | 7 + .../CountryIconComponents/AM.vue | 7 + .../CountryIconComponents/AO.vue | 15 + .../CountryIconComponents/AQ.vue | 7 + .../CountryIconComponents/AR.vue | 33 + .../CountryIconComponents/AS.vue | 82 + .../CountryIconComponents/AT.vue | 8 + .../CountryIconComponents/AU.vue | 19 + .../CountryIconComponents/AW.vue | 188 + .../CountryIconComponents/AX.vue | 20 + .../CountryIconComponents/AZ.vue | 10 + .../CountryIconComponents/BA.vue | 14 + .../CountryIconComponents/BB.vue | 8 + .../CountryIconComponents/BD.vue | 6 + .../CountryIconComponents/BE.vue | 9 + .../CountryIconComponents/BF.vue | 9 + .../CountryIconComponents/BG.vue | 9 + .../CountryIconComponents/BH.vue | 11 + .../CountryIconComponents/BI.vue | 17 + .../CountryIconComponents/BJ.vue | 16 + .../CountryIconComponents/BL.vue | 9 + .../CountryIconComponents/BM.vue | 101 + .../CountryIconComponents/BN.vue | 38 + .../CountryIconComponents/BO.vue | 680 ++ .../CountryIconComponents/BQ.vue | 7 + .../CountryIconComponents/BR.vue | 47 + .../CountryIconComponents/BS.vue | 15 + .../CountryIconComponents/BT.vue | 91 + .../CountryIconComponents/BV.vue | 15 + .../CountryIconComponents/BW.vue | 9 + .../CountryIconComponents/BY.vue | 24 + .../CountryIconComponents/BZ.vue | 147 + .../CountryIconComponents/CA.vue | 6 + .../CountryIconComponents/CC.vue | 21 + .../CountryIconComponents/CD.vue | 14 + .../CountryIconComponents/CF.vue | 17 + .../CountryIconComponents/CG.vue | 14 + .../CountryIconComponents/CH.vue | 11 + .../CountryIconComponents/CI.vue | 9 + .../CountryIconComponents/CK.vue | 13 + .../CountryIconComponents/CL.vue | 15 + .../CountryIconComponents/CM.vue | 17 + .../CountryIconComponents/CN.vue | 13 + .../CountryIconComponents/CO.vue | 9 + .../CountryIconComponents/CP.vue | 9 + .../CountryIconComponents/CR.vue | 9 + .../CountryIconComponents/CU.vue | 15 + .../CountryIconComponents/CV.vue | 15 + .../CountryIconComponents/CW.vue | 16 + .../CountryIconComponents/CX.vue | 17 + .../CountryIconComponents/CY.vue | 8 + .../CountryIconComponents/CZ.vue | 7 + .../CountryIconComponents/DE.vue | 7 + .../CountryIconComponents/DG.vue | 136 + .../CountryIconComponents/DJ.vue | 15 + .../CountryIconComponents/DK.vue | 7 + .../CountryIconComponents/DM.vue | 154 + .../CountryIconComponents/DO.vue | 6747 +++++++++++++++++ .../CountryIconComponents/DZ.vue | 7 + .../CountryIconComponents/EA.vue | 549 ++ .../CountryIconComponents/EC.vue | 140 + .../CountryIconComponents/EE.vue | 9 + .../CountryIconComponents/EG.vue | 40 + .../CountryIconComponents/EH.vue | 18 + .../CountryIconComponents/ER.vue | 15 + .../CountryIconComponents/ES-CT.vue | 6 + .../CountryIconComponents/ES-GA.vue | 191 + .../CountryIconComponents/ES.vue | 549 ++ .../CountryIconComponents/ET.vue | 16 + .../CountryIconComponents/EU.vue | 30 + .../CountryIconComponents/FI.vue | 7 + .../CountryIconComponents/FJ.vue | 127 + .../CountryIconComponents/FK.vue | 95 + .../CountryIconComponents/FM.vue | 13 + .../CountryIconComponents/FO.vue | 14 + .../CountryIconComponents/FR.vue | 9 + .../CountryIconComponents/GA.vue | 9 + .../CountryIconComponents/GB-ENG.vue | 7 + .../CountryIconComponents/GB-NIR.vue | 133 + .../CountryIconComponents/GB-SCT.vue | 6 + .../CountryIconComponents/GB-WLS.vue | 11 + .../CountryIconComponents/GB.vue | 9 + .../CountryIconComponents/GD.vue | 29 + .../CountryIconComponents/GE.vue | 8 + .../CountryIconComponents/GF.vue | 9 + .../CountryIconComponents/GG.vue | 11 + .../CountryIconComponents/GH.vue | 8 + .../CountryIconComponents/GI.vue | 34 + .../CountryIconComponents/GL.vue | 6 + .../CountryIconComponents/GM.vue | 11 + .../CountryIconComponents/GN.vue | 9 + .../CountryIconComponents/GP.vue | 9 + .../CountryIconComponents/GQ.vue | 25 + .../CountryIconComponents/GR.vue | 18 + .../CountryIconComponents/GS.vue | 247 + .../CountryIconComponents/GT.vue | 206 + .../CountryIconComponents/GU.vue | 41 + .../CountryIconComponents/GW.vue | 17 + .../CountryIconComponents/GY.vue | 11 + .../CountryIconComponents/HK.vue | 32 + .../CountryIconComponents/HM.vue | 19 + .../CountryIconComponents/HN.vue | 20 + .../CountryIconComponents/HR.vue | 58 + .../CountryIconComponents/HT.vue | 118 + .../CountryIconComponents/HU.vue | 9 + .../CountryIconComponents/IC.vue | 9 + .../CountryIconComponents/ID.vue | 8 + .../CountryIconComponents/IE.vue | 9 + .../CountryIconComponents/IL.vue | 16 + .../CountryIconComponents/IM.vue | 38 + .../CountryIconComponents/IN.vue | 27 + .../CountryIconComponents/IO.vue | 136 + .../CountryIconComponents/IQ.vue | 12 + .../CountryIconComponents/IR.vue | 221 + .../CountryIconComponents/IS.vue | 14 + .../CountryIconComponents/IT.vue | 9 + .../CountryIconComponents/JE.vue | 49 + .../CountryIconComponents/JM.vue | 10 + .../CountryIconComponents/JO.vue | 18 + .../CountryIconComponents/JP.vue | 13 + .../CountryIconComponents/KE.vue | 25 + .../CountryIconComponents/KG.vue | 17 + .../CountryIconComponents/KH.vue | 63 + .../CountryIconComponents/KI.vue | 38 + .../CountryIconComponents/KM.vue | 18 + .../CountryIconComponents/KN.vue | 16 + .../CountryIconComponents/KP.vue | 17 + .../CountryIconComponents/KR.vue | 24 + .../CountryIconComponents/KW.vue | 15 + .../CountryIconComponents/KY.vue | 227 + .../CountryIconComponents/KZ.vue | 25 + .../CountryIconComponents/LA.vue | 14 + .../CountryIconComponents/LB.vue | 17 + .../CountryIconComponents/LC.vue | 10 + .../CountryIconComponents/LI.vue | 45 + .../CountryIconComponents/LK.vue | 24 + .../CountryIconComponents/LR.vue | 16 + .../CountryIconComponents/LS.vue | 10 + .../CountryIconComponents/LT.vue | 9 + .../CountryIconComponents/LU.vue | 7 + .../CountryIconComponents/LV.vue | 8 + .../CountryIconComponents/LY.vue | 15 + .../CountryIconComponents/MA.vue | 6 + .../CountryIconComponents/MC.vue | 8 + .../CountryIconComponents/MD.vue | 73 + .../CountryIconComponents/ME.vue | 120 + .../CountryIconComponents/MF.vue | 9 + .../CountryIconComponents/MG.vue | 9 + .../CountryIconComponents/MH.vue | 10 + .../CountryIconComponents/MK.vue | 7 + .../CountryIconComponents/ML.vue | 9 + .../CountryIconComponents/MM.vue | 18 + .../CountryIconComponents/MN.vue | 15 + .../CountryIconComponents/MO.vue | 11 + .../CountryIconComponents/MP.vue | 88 + .../CountryIconComponents/MQ.vue | 9 + .../CountryIconComponents/MR.vue | 8 + .../CountryIconComponents/MS.vue | 72 + .../CountryIconComponents/MT.vue | 52 + .../CountryIconComponents/MU.vue | 10 + .../CountryIconComponents/MV.vue | 8 + .../CountryIconComponents/MW.vue | 17 + .../CountryIconComponents/MX.vue | 380 + .../CountryIconComponents/MY.vue | 13 + .../CountryIconComponents/MZ.vue | 23 + .../CountryIconComponents/NA.vue | 18 + .../CountryIconComponents/NC.vue | 15 + .../CountryIconComponents/NE.vue | 8 + .../CountryIconComponents/NF.vue | 13 + .../CountryIconComponents/NG.vue | 8 + .../CountryIconComponents/NI.vue | 131 + .../CountryIconComponents/NL.vue | 7 + .../CountryIconComponents/NO.vue | 9 + .../CountryIconComponents/NP.vue | 21 + .../CountryIconComponents/NR.vue | 14 + .../CountryIconComponents/NU.vue | 28 + .../CountryIconComponents/NZ.vue | 44 + .../CountryIconComponents/OM.vue | 117 + .../CountryIconComponents/PA.vue | 15 + .../CountryIconComponents/PE.vue | 246 + .../CountryIconComponents/PF.vue | 20 + .../CountryIconComponents/PG.vue | 18 + .../CountryIconComponents/PH.vue | 11 + .../CountryIconComponents/PK.vue | 17 + .../CountryIconComponents/PL.vue | 8 + .../CountryIconComponents/PM.vue | 9 + .../CountryIconComponents/PN.vue | 102 + .../CountryIconComponents/PR.vue | 15 + .../CountryIconComponents/PS.vue | 17 + .../CountryIconComponents/PT.vue | 59 + .../CountryIconComponents/PW.vue | 13 + .../CountryIconComponents/PY.vue | 158 + .../CountryIconComponents/QA.vue | 6 + .../CountryIconComponents/RE.vue | 9 + .../CountryIconComponents/RO.vue | 9 + .../CountryIconComponents/RS.vue | 298 + .../CountryIconComponents/RU.vue | 9 + .../CountryIconComponents/RW.vue | 15 + .../CountryIconComponents/SA.vue | 28 + .../CountryIconComponents/SB.vue | 15 + .../CountryIconComponents/SC.vue | 16 + .../CountryIconComponents/SD.vue | 15 + .../CountryIconComponents/SE.vue | 6 + .../CountryIconComponents/SG.vue | 15 + .../CountryIconComponents/SH.vue | 83 + .../CountryIconComponents/SI.vue | 20 + .../CountryIconComponents/SJ.vue | 9 + .../CountryIconComponents/SK.vue | 11 + .../CountryIconComponents/SL.vue | 14 + .../CountryIconComponents/SM.vue | 91 + .../CountryIconComponents/SN.vue | 10 + .../CountryIconComponents/SO.vue | 13 + .../CountryIconComponents/SR.vue | 8 + .../CountryIconComponents/SS.vue | 10 + .../CountryIconComponents/ST.vue | 18 + .../CountryIconComponents/SV.vue | 596 ++ .../CountryIconComponents/SX.vue | 58 + .../CountryIconComponents/SY.vue | 8 + .../CountryIconComponents/SZ.vue | 47 + .../CountryIconComponents/TA.vue | 83 + .../CountryIconComponents/TC.vue | 54 + .../CountryIconComponents/TD.vue | 9 + .../CountryIconComponents/TF.vue | 17 + .../CountryIconComponents/TG.vue | 16 + .../CountryIconComponents/TH.vue | 9 + .../CountryIconComponents/TJ.vue | 28 + .../CountryIconComponents/TK.vue | 7 + .../CountryIconComponents/TL.vue | 15 + .../CountryIconComponents/TM.vue | 205 + .../CountryIconComponents/TN.vue | 15 + .../CountryIconComponents/TO.vue | 12 + .../CountryIconComponents/TR.vue | 10 + .../CountryIconComponents/TT.vue | 9 + .../CountryIconComponents/TV.vue | 18 + .../CountryIconComponents/TW.vue | 34 + .../CountryIconComponents/TZ.vue | 17 + .../CountryIconComponents/UA.vue | 8 + .../CountryIconComponents/UG.vue | 32 + .../CountryIconComponents/UM.vue | 17 + .../CountryIconComponents/UN.vue | 18 + .../CountryIconComponents/US.vue | 12 + .../CountryIconComponents/UY.vue | 30 + .../CountryIconComponents/UZ.vue | 32 + .../CountryIconComponents/VA.vue | 481 ++ .../CountryIconComponents/VC.vue | 10 + .../CountryIconComponents/VE.vue | 28 + .../CountryIconComponents/VG.vue | 129 + .../CountryIconComponents/VI.vue | 30 + .../CountryIconComponents/VN.vue | 13 + .../CountryIconComponents/VU.vue | 20 + .../CountryIconComponents/WF.vue | 9 + .../CountryIconComponents/WS.vue | 9 + .../CountryIconComponents/XK.vue | 18 + .../CountryIconComponents/XX.vue | 7 + .../CountryIconComponents/YE.vue | 9 + .../CountryIconComponents/YT.vue | 9 + .../CountryIconComponents/ZA.vue | 19 + .../CountryIconComponents/ZM.vue | 29 + .../CountryIconComponents/ZW.vue | 23 + .../CyberIconComponents/AnonymousIPIcon.vue | 44 + .../CyberIconComponents/FireWallIcon.vue | 147 + .../CyberIconComponents/KEVIcon.vue | 32 + .../CyberIconComponents/ProxyIcon.vue | 1159 +++ .../SandiaThunderBirdIcon.vue | 58 + .../CyberIconComponents/ScannerIcon.vue | 44 + .../CyberIconComponents/ThreatActorIcon.vue | 59 + .../ThreatActorIconBlue.vue | 59 + .../ThreatActorIconRed.vue | 59 + .../ThreatActorInternalIcon.vue | 148 + .../ThreatActorInternalIconBlue.vue | 148 + .../ThreatActorInternalIconRed.vue | 148 + .../EntityClassIconComboBox.vue | 145 + .../AddTagSourceDialog.vue | 152 + .../IRElementComponents/EntryEntityDialog.vue | 78 + .../IRElementComponents/HistoryDialog.vue | 134 + .../IRElementComponents/MetaCard.vue | 1371 ++++ .../IRElementComponents/NewEntityMenu.vue | 99 + .../IRElementComponents/PermissionsPicker.vue | 168 + .../IRElementComponents/SelectedIRElement.vue | 387 + .../IRElementComponents/TLPPicker.vue | 57 + .../InboxElements/AlertInboxElement.vue | 106 + .../InboxElements/EventInboxElement.vue | 83 + .../InboxComponents/InboxNavDrawer.vue | 121 + .../ActionCell/ActionCellEdit.vue | 102 + .../ActionCell/ActionCellView.vue | 60 + .../EntryCellComponents/EntryCell.vue | 245 + .../EntryCellViewSystemBar.vue | 391 + .../FullScreenEntryCell.vue | 152 + .../PromotedCell/PromotedCellView.vue | 288 + .../SummaryCell/SummaryCellView.vue | 54 + .../WYSIWYGCell/EditorCancelPlugin.js | 29 + .../WYSIWYGCell/EditorSavePlugin.js | 31 + .../FlairPlugin/FlairComponent.vue | 183 + .../WYSIWYGCell/FlairPlugin/FlairPlugin.js | 10 + .../FlairPlugin/FlairPluginEditing.js | 83 + .../WYSIWYGCell/FlairPlugin/FlairPluginUI.js | 8 + .../FlairPlugin/FlairedTextComponent.vue | 99 + .../WYSIWYGCell/WYSIWYGCellEdit.vue | 468 ++ .../WYSIWYGCell/WYSIWYGCellView.vue | 146 + .../fileUploadPlugin/imageUploadPlugin.js | 53 + .../fileUploadPlugin/uploadPlugin.js | 62 + src/components/JournalComponents/Journal.vue | 155 + .../LinkedElementJournal.vue | 53 + .../ScotExternalLinks.vue | 22 + .../NavigationComponents/ScotNavBar.vue | 332 + .../PaneComponents/AlertTablePaneVuetify.vue | 398 + .../PaneComponents/EditEntityClassPane.vue | 63 + .../PaneComponents/EditFeedPane.vue | 73 + .../PaneComponents/EditIncidentPane.vue | 311 + .../PaneComponents/EditPivotPane.vue | 153 + .../PaneComponents/EditSignaturePane.vue | 106 + .../PaneComponents/EntitiesPane.vue | 165 + .../PaneComponents/EntityAppearancesPane.vue | 139 + src/components/PaneComponents/FilesPane.vue | 110 + src/components/PaneComponents/FlairPane.vue | 251 + .../PaneComponents/GuideSignaturesPane.vue | 127 + src/components/PaneComponents/GuidesPane.vue | 152 + .../PaneComponents/PromotedAlertsPane.vue | 224 + .../PaneComponents/SignatureBodyPane.vue | 68 + .../PaneComponents/SignatureStatsPane.vue | 96 + .../PaneComponents/SignaturesPane.vue | 243 + .../PivotAttachEntityClass.vue | 158 + .../PivotComponents/PivotAttachEntityType.vue | 149 + .../QueueTableVuetify.vue | 863 +++ .../ThreatModelComponents/MitreICSModel.vue | 122 + .../ThreatModelComponents/MitreModel.vue | 120 + .../UserSettingsComponent/ApiKeys.vue | 117 + .../UserSettingsComponent/AuditLogs.vue | 458 ++ .../QuickSettingsDrawer.vue | 144 + .../UserSettingsComponent/UserPreferences.vue | 63 + .../UserSettingsComponent/UserProfile.vue | 116 + src/constants.ts | 15 + src/main.ts | 158 + src/plugins/matomo.ts | 0 src/plugins/resizable-vuetify-columns.js | 95 + src/plugins/vuetify.ts | 1097 +++ src/router/index.ts | 199 + src/shims-ckeditor.d.ts | 58 + src/shims-remixicon.d.ts | 1 + src/shims-tsx.d.ts | 13 + src/shims-vee-validate.d.ts | 1 + src/shims-vue-matomo.d.ts | 2 + src/shims-vue-tabulator.d.ts | 2 + src/shims-vue.d.ts | 4 + src/shims-vuetify.d.ts | 4 + src/storage/localForage.ts | 22 + src/store/index.ts | 66 + src/store/modules/IRElements/actions.ts | 1070 +++ src/store/modules/IRElements/getters.ts | 738 ++ src/store/modules/IRElements/index.ts | 53 + src/store/modules/IRElements/mutations.ts | 981 +++ src/store/modules/IRElements/types.ts | 239 + src/store/modules/admin/actions.ts | 309 + src/store/modules/admin/getters.ts | 51 + src/store/modules/admin/index.ts | 32 + src/store/modules/admin/mutations.ts | 150 + src/store/modules/admin/types.ts | 57 + src/store/modules/team/actions.ts | 158 + src/store/modules/team/getters.ts | 50 + src/store/modules/team/index.ts | 36 + src/store/modules/team/mutations.ts | 63 + src/store/modules/team/types.ts | 34 + src/store/modules/user/actions.ts | 381 + src/store/modules/user/getters.ts | 80 + src/store/modules/user/index.ts | 29 + src/store/modules/user/mutations.ts | 110 + src/store/modules/user/types.ts | 50 + src/store/types.ts | 5 + src/types/index.d.ts | 12 + src/types/vue.d.ts | 11 + src/utils/elementUtils.ts | 15 + src/utils/linkedTreeUtils.ts | 159 + src/utils/treeUtils.ts | 165 + src/views/Admin.vue | 25 + src/views/Calendar.vue | 28 + src/views/ComingSoon.vue | 18 + src/views/EntityClassIcons.vue | 131 + src/views/FullScreenEntry.vue | 98 + src/views/Landing.vue | 140 + src/views/Login.vue | 114 + src/views/Response.vue | 466 ++ src/views/ThreatModel.vue | 62 + src/views/UserSettings.vue | 97 + test | 1 - tests/unit/components/LoginView.spec.ts | 69 + tests/unit/components/WYSIWYG.spec.ts | 42 + tests/unit/index.ts | 2 + tsconfig.json | 42 + vue.config.js | 80 + 444 files changed, 47156 insertions(+), 199 deletions(-) create mode 100644 .browserslistrc create mode 100644 .env create mode 100644 .eslintrc.js create mode 100644 Dockerfile create mode 100644 babel.config.js create mode 100644 config/CssStub.js create mode 100644 config/dev.env.ts create mode 100755 entrypoint.sh create mode 100644 httpd.conf create mode 100644 jest.config.js create mode 100644 local_dev.env create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100755 public/images/azure-sentinel.png create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/api/auth.ts create mode 100644 src/api/elements.ts create mode 100755 src/api/file.ts create mode 100644 src/api/storage_provider.ts create mode 100644 src/api/team.ts create mode 100755 src/api/user.ts create mode 100644 src/assets/logo.png create mode 100644 src/assets/logo.svg create mode 100755 src/assets/scot-logo.png create mode 100644 src/assets/scss/functions4.scss create mode 100644 src/assets/scss/tabulator_bootstrap4.scss create mode 100644 src/assets/scss/variables4.scss create mode 100644 src/components/AdminComponents/AdminNavBar.vue create mode 100755 src/components/AdminComponents/AuthMethodForm.vue create mode 100755 src/components/AdminComponents/AuthMethodsTable.vue create mode 100755 src/components/AdminComponents/DefaultPermissions.vue create mode 100755 src/components/AdminComponents/GlobalSettings.vue create mode 100644 src/components/AdminComponents/PlatformsPanel/OrchestrationPanel.vue create mode 100644 src/components/AdminComponents/PlatformsPanel/PlatformPanel.vue create mode 100644 src/components/AdminComponents/PlatformsPanel/SplunkConfigForm.vue create mode 100755 src/components/AdminComponents/RoleForm.vue create mode 100755 src/components/AdminComponents/RolesTable.vue create mode 100755 src/components/AdminComponents/StorageProviderForm.vue create mode 100755 src/components/AdminComponents/StorageProviderTable.vue create mode 100755 src/components/AdminComponents/UserForm.vue create mode 100755 src/components/AdminComponents/UsersTable.vue create mode 100644 src/components/CalendarComponents/IRCalendarComponent.vue create mode 100644 src/components/EnrichmentPaneComponents/JsonTreePane.vue create mode 100644 src/components/EnrichmentPaneComponents/LineChartPane.vue create mode 100644 src/components/EnrichmentPaneComponents/MarkdownPane.vue create mode 100644 src/components/EnrichmentPaneComponents/PlainTextPane.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AQ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AX.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/AZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BB.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BJ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BQ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/BZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CX.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/CZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DJ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/DZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ER.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ES-CT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ES-GA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ES.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ET.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/EU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FJ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/FR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GB-ENG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GB-NIR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GB-SCT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GB-WLS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GB.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GQ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/GY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/HU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ID.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IQ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/IT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/JE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/JM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/JO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/JP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/KZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LB.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/LY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ME.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ML.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MQ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MX.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/MZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NP.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/NZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/OM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/PY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/QA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/RE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/RO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/RS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/RU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/RW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SB.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SJ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ST.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SX.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/SZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TD.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TH.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TJ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TL.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TO.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TR.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TV.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TW.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/TZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/US.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UY.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/UZ.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VC.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VG.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VI.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VN.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/VU.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/WF.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/WS.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/XK.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/XX.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/YE.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/YT.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ZA.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ZM.vue create mode 100644 src/components/EntityClassComponents/CountryIconComponents/ZW.vue create mode 100644 src/components/EntityClassComponents/CyberIconComponents/AnonymousIPIcon.vue create mode 100644 src/components/EntityClassComponents/CyberIconComponents/FireWallIcon.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/KEVIcon.vue create mode 100644 src/components/EntityClassComponents/CyberIconComponents/ProxyIcon.vue create mode 100644 src/components/EntityClassComponents/CyberIconComponents/SandiaThunderBirdIcon.vue create mode 100644 src/components/EntityClassComponents/CyberIconComponents/ScannerIcon.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorIcon.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconBlue.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconRed.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIcon.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconBlue.vue create mode 100755 src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconRed.vue create mode 100644 src/components/EntityClassComponents/EntityClassIconComboBox.vue create mode 100755 src/components/IRElementComponents/AddTagSourceDialog.vue create mode 100755 src/components/IRElementComponents/EntryEntityDialog.vue create mode 100755 src/components/IRElementComponents/HistoryDialog.vue create mode 100644 src/components/IRElementComponents/MetaCard.vue create mode 100644 src/components/IRElementComponents/NewEntityMenu.vue create mode 100755 src/components/IRElementComponents/PermissionsPicker.vue create mode 100644 src/components/IRElementComponents/SelectedIRElement.vue create mode 100755 src/components/IRElementComponents/TLPPicker.vue create mode 100644 src/components/InboxComponents/InboxElements/AlertInboxElement.vue create mode 100644 src/components/InboxComponents/InboxElements/EventInboxElement.vue create mode 100644 src/components/InboxComponents/InboxNavDrawer.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellEdit.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellView.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/EntryCell.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/EntryCellViewSystemBar.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/FullScreenEntryCell.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/PromotedCell/PromotedCellView.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/SummaryCell/SummaryCellView.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorCancelPlugin.js create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorSavePlugin.js create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairComponent.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPlugin.js create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginEditing.js create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginUI.js create mode 100755 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairedTextComponent.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellEdit.vue create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellView.vue create mode 100755 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/imageUploadPlugin.js create mode 100644 src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/uploadPlugin.js create mode 100644 src/components/JournalComponents/Journal.vue create mode 100644 src/components/JournalComponents/LinkedElementJournal.vue create mode 100644 src/components/NavigationComponents/ScotExternalLinks.vue create mode 100644 src/components/NavigationComponents/ScotNavBar.vue create mode 100644 src/components/PaneComponents/AlertTablePaneVuetify.vue create mode 100755 src/components/PaneComponents/EditEntityClassPane.vue create mode 100755 src/components/PaneComponents/EditFeedPane.vue create mode 100755 src/components/PaneComponents/EditIncidentPane.vue create mode 100755 src/components/PaneComponents/EditPivotPane.vue create mode 100755 src/components/PaneComponents/EditSignaturePane.vue create mode 100644 src/components/PaneComponents/EntitiesPane.vue create mode 100644 src/components/PaneComponents/EntityAppearancesPane.vue create mode 100644 src/components/PaneComponents/FilesPane.vue create mode 100644 src/components/PaneComponents/FlairPane.vue create mode 100755 src/components/PaneComponents/GuideSignaturesPane.vue create mode 100644 src/components/PaneComponents/GuidesPane.vue create mode 100755 src/components/PaneComponents/PromotedAlertsPane.vue create mode 100755 src/components/PaneComponents/SignatureBodyPane.vue create mode 100755 src/components/PaneComponents/SignatureStatsPane.vue create mode 100644 src/components/PaneComponents/SignaturesPane.vue create mode 100644 src/components/PivotComponents/PivotAttachEntityClass.vue create mode 100644 src/components/PivotComponents/PivotAttachEntityType.vue create mode 100644 src/components/QueueTableComponents/QueueTableVuetify.vue create mode 100644 src/components/ThreatModelComponents/MitreICSModel.vue create mode 100644 src/components/ThreatModelComponents/MitreModel.vue create mode 100755 src/components/UserSettingsComponent/ApiKeys.vue create mode 100755 src/components/UserSettingsComponent/AuditLogs.vue create mode 100644 src/components/UserSettingsComponent/QuickSettingsDrawer.vue create mode 100755 src/components/UserSettingsComponent/UserPreferences.vue create mode 100755 src/components/UserSettingsComponent/UserProfile.vue create mode 100755 src/constants.ts create mode 100644 src/main.ts create mode 100644 src/plugins/matomo.ts create mode 100644 src/plugins/resizable-vuetify-columns.js create mode 100644 src/plugins/vuetify.ts create mode 100644 src/router/index.ts create mode 100644 src/shims-ckeditor.d.ts create mode 100644 src/shims-remixicon.d.ts create mode 100644 src/shims-tsx.d.ts create mode 100644 src/shims-vee-validate.d.ts create mode 100644 src/shims-vue-matomo.d.ts create mode 100644 src/shims-vue-tabulator.d.ts create mode 100644 src/shims-vue.d.ts create mode 100644 src/shims-vuetify.d.ts create mode 100644 src/storage/localForage.ts create mode 100755 src/store/index.ts create mode 100644 src/store/modules/IRElements/actions.ts create mode 100644 src/store/modules/IRElements/getters.ts create mode 100644 src/store/modules/IRElements/index.ts create mode 100644 src/store/modules/IRElements/mutations.ts create mode 100644 src/store/modules/IRElements/types.ts create mode 100755 src/store/modules/admin/actions.ts create mode 100755 src/store/modules/admin/getters.ts create mode 100755 src/store/modules/admin/index.ts create mode 100755 src/store/modules/admin/mutations.ts create mode 100755 src/store/modules/admin/types.ts create mode 100644 src/store/modules/team/actions.ts create mode 100644 src/store/modules/team/getters.ts create mode 100644 src/store/modules/team/index.ts create mode 100644 src/store/modules/team/mutations.ts create mode 100644 src/store/modules/team/types.ts create mode 100755 src/store/modules/user/actions.ts create mode 100644 src/store/modules/user/getters.ts create mode 100644 src/store/modules/user/index.ts create mode 100644 src/store/modules/user/mutations.ts create mode 100755 src/store/modules/user/types.ts create mode 100644 src/store/types.ts create mode 100644 src/types/index.d.ts create mode 100644 src/types/vue.d.ts create mode 100755 src/utils/elementUtils.ts create mode 100644 src/utils/linkedTreeUtils.ts create mode 100755 src/utils/treeUtils.ts create mode 100644 src/views/Admin.vue create mode 100644 src/views/Calendar.vue create mode 100755 src/views/ComingSoon.vue create mode 100644 src/views/EntityClassIcons.vue create mode 100644 src/views/FullScreenEntry.vue create mode 100644 src/views/Landing.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/Response.vue create mode 100644 src/views/ThreatModel.vue create mode 100755 src/views/UserSettings.vue delete mode 100644 test create mode 100644 tests/unit/components/LoginView.spec.ts create mode 100644 tests/unit/components/WYSIWYG.spec.ts create mode 100644 tests/unit/index.ts create mode 100644 tsconfig.json create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/.env b/.env new file mode 100644 index 0000000..15bff16 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt +VUE_APP_API_FIREHOSE=http://localhost:8000/api/v1/firehose/ +VUE_APP_API_BASE=http://localhost:8000/api/v1 +PATH=$PATH:$(pwd)/node_modules/.bin diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..bf993c2 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,38 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/essential', + 'eslint:recommended', + '@vue/typescript/recommended' + ], + parserOptions: { + ecmaVersion: 2020 + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-this-alias": [ + "error", + { + "allowDestructuring": true, // Allow `const { props, state } = this`; false by default + "allowedNames": ["vm"] // Allow `const vm= this`; `[]` by default + } + ] + }, + overrides: [ + { + files: [ + '**/__tests__/*.{j,t}s?(x)', + '**/tests/unit/**/*.spec.{j,t}s?(x)' + ], + env: { + jest: true + } + } + ] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c6498fa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:lts-alpine as build-stage +WORKDIR /app +ENV VUE_APP_API_FIREHOSE=VUE_APP_API_FIREHOSE \ + VUE_APP_API_BASE=VUE_APP_API_BASE + +COPY package.json ./package.json + +RUN rm -rf node_modules/ +RUN npm cache clean --force +RUN npm install + +COPY . . +RUN npm run build + +FROM httpd:2.4 as production-stage +COPY --from=build-stage /app/dist /usr/local/apache2/htdocs +COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf +RUN chown -R www-data /usr/local/apache2/logs/ +RUN chown -R www-data /usr/local/apache2/htdocs/ +COPY ./entrypoint.sh ./entrypoint.sh +RUN chmod +x ./entrypoint.sh +USER www-data +ENTRYPOINT [ "./entrypoint.sh" ] diff --git a/LICENSE b/LICENSE index 261eeb9..85bb47d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,23 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Copyright (2024) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive license for use of this work by or on behalf of the U.S. Government. Export of this program may require a license from the United States Government. + +NOTICE: - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +For five (5) years from 09/01/2024, the United States Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this data to reproduce, prepare derivative works, and perform publicly and display publicly, by or on behalf of the Government. There is provision for the possible extension of the term of this license. Subsequent to that period or any extension granted, the United States Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this data to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so. The specific term of the license can be identified by inquiry made to Sandia Corporation or DOE. + +NEITHER THE UNITED STATES GOVERNMENT, NOR THE UNITED STATES DEPARTMENT OF ENERGY, NOR SANDIA CORPORATION, NOR ANY OF THEIR EMPLOYEES, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS. + +Any licensee of this software has the obligation and responsibility to abide by the applicable export control laws, regulations, and general prohibitions relating to the export of technical data. Failure to obtain an export control license or other authority from the Government may result in criminal liability under U.S. laws. - 1. Definitions. +Copyright [2024] Sandia Corporation. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + http://www.apache.org/licenses/LICENSE-2.0 - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md index a4560e5..e971f15 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,38 @@ -# SCOT4-Web-App -SCOT4 Web Application +# SCOT4 Frontend + +## Documentation + +You can find the SCOT4 project documentation [here](https://sandialabs.github.io/scot4-docs/index.html) + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Run your unit tests +``` +npm run test:unit +``` + +### Run your end-to-end tests +``` +npm run test:e2e +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..a016631 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset', + '@vue/babel-preset-jsx' + ] +} diff --git a/config/CssStub.js b/config/CssStub.js new file mode 100644 index 0000000..5401ddc --- /dev/null +++ b/config/CssStub.js @@ -0,0 +1 @@ +module.export = {} \ No newline at end of file diff --git a/config/dev.env.ts b/config/dev.env.ts new file mode 100644 index 0000000..4704baa --- /dev/null +++ b/config/dev.env.ts @@ -0,0 +1,4 @@ +module.exports = { + NODE_ENV: '"development"', + API_BASE_URL: '"http://localhost:8000/api/v1"', +} \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..5b950d4 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh +ROOT_DIR=/usr/local/apache2/htdocs +# Replace env vars in files served by httpd +for file in $ROOT_DIR/js/*.js* $ROOT_DIR/index.html; +do + sed -i 's|VUE_APP_API_BASE|'${VUE_APP_API_BASE}'|g' $file + sed -i 's|VUE_APP_API_FIREHOSE|'${VUE_APP_API_FIREHOSE}'|g' $file +done +httpd-foreground \ No newline at end of file diff --git a/httpd.conf b/httpd.conf new file mode 100644 index 0000000..21cbece --- /dev/null +++ b/httpd.conf @@ -0,0 +1,44 @@ +# Apache httpd v2.4 minimal configuration +# This can be reduced further if you remove the accees log and mod_log_config +ServerRoot "/usr/local/apache2" +ServerName localhost +# Minimum modules needed +LoadModule mpm_event_module modules/mod_mpm_event.so +LoadModule log_config_module modules/mod_log_config.so +LoadModule mime_module modules/mod_mime.so +LoadModule dir_module modules/mod_dir.so +LoadModule authz_core_module modules/mod_authz_core.so +LoadModule unixd_module modules/mod_unixd.so + +TypesConfig conf/mime.types + +PidFile logs/httpd.pid + +User www-data +Group www-data +# Port to Listen on +Listen *:8080 + +# In a basic setup httpd can only serve files from its document root +DocumentRoot "/usr/local/apache2/htdocs" + +# Default file to serve +DirectoryIndex index.html + +# Errors go to their own log +ErrorLog logs/error_log + +# Access log +LogFormat "%h %l %u %t \"%r\" %>s %b" common +CustomLog logs/access_log common + +# Never change this block + + AllowOverride None + Require all denied + + +# Allow documents to be served from the DocumentRoot + + Require all granted + diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..3d2ea15 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel', + setupFiles: ["./tests/unit/index.ts"], + moduleNameMapper: { + "\\.(css|less|sass|scss)$": "/config/CssStub.js", + } +} diff --git a/local_dev.env b/local_dev.env new file mode 100644 index 0000000..9cb641f --- /dev/null +++ b/local_dev.env @@ -0,0 +1,6 @@ +# Use these environment variables if running the api locally + +export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt +export VUE_APP_API_FIREHOSE=http://localhost:8000/api/v1/firehose/ +export VUE_APP_API_BASE=http://localhost:8000/api/v1 +export PATH=$PATH:$(pwd)/node_modules/.bin diff --git a/package.json b/package.json new file mode 100644 index 0000000..c5ed367 --- /dev/null +++ b/package.json @@ -0,0 +1,111 @@ +{ + "name": "scot4-frontend-new", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "test:unit": "vue-cli-service test:unit", + "lint": "vue-cli-service lint" + }, + "overrides": { + "download-git-repo": "../_EXCLUDED_", + "opener": "../_EXCLUDED_", + "yaml-front-matter": "../_EXCLUDED_", + "postcss": "^8.4.31" + }, + "dependencies": { + "@ckeditor/ckeditor5-alignment": "^35.0.0", + "@ckeditor/ckeditor5-basic-styles": "^35.0.0", + "@ckeditor/ckeditor5-block-quote": "^35.0.0", + "@ckeditor/ckeditor5-build-classic": "^35.0.0", + "@ckeditor/ckeditor5-build-decoupled-document": "^35.0.0", + "@ckeditor/ckeditor5-code-block": "^35.0.0", + "@ckeditor/ckeditor5-dev-translations": "^32.0.2", + "@ckeditor/ckeditor5-dev-utils": "^32.0.2", + "@ckeditor/ckeditor5-editor-classic": "^35.0.0", + "@ckeditor/ckeditor5-essentials": "^35.0.0", + "@ckeditor/ckeditor5-font": "^35.0.0", + "@ckeditor/ckeditor5-heading": "^35.0.0", + "@ckeditor/ckeditor5-horizontal-line": "^35.0.0", + "@ckeditor/ckeditor5-html-embed": "^35.0.0", + "@ckeditor/ckeditor5-html-support": "^35.0.0", + "@ckeditor/ckeditor5-image": "^35.0.0", + "@ckeditor/ckeditor5-indent": "^35.0.0", + "@ckeditor/ckeditor5-link": "^35.0.0", + "@ckeditor/ckeditor5-list": "^35.0.0", + "@ckeditor/ckeditor5-paragraph": "^35.0.0", + "@ckeditor/ckeditor5-paste-from-office": "^35.0.0", + "@ckeditor/ckeditor5-source-editing": "^35.0.0", + "@ckeditor/ckeditor5-table": "^35.0.0", + "@ckeditor/ckeditor5-theme-lark": "^35.0.0", + "@ckeditor/ckeditor5-upload": "^35.0.0", + "@ckeditor/ckeditor5-vue2": "^3.0.0", + "@types/marked": "^4.0.7", + "@types/qs": "^6.9.7", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-preset-jsx": "^1.2.4", + "axios": "^1.6.2", + "chart.js": "^3.9.1", + "colors": "1.4.0", + "core-js": "^3.21.1", + "dompurify": "^2.4.1", + "idb": "^7.0.1", + "localforage": "^1.10.0", + "marked": "^4.2.5", + "postcss": "^8.4.31", + "postcss-loader": "^7.3.3", + "raw-loader": "^4.0.2", + "remixicon": "^2.5.0", + "splitpanes": "^2.4.1", + "vee-validate": "^3.4.5", + "vue": "^2.7.14", + "vue-axios": "^3.4.1", + "vue-chartjs": "^4.1.2", + "vue-class-component": "^7.2.6", + "vue-cookies": "^1.7.4", + "vue-final-modal": "^2.4.3", + "vue-js-modal": "^2.0.1", + "vue-matomo": "^4.1.0", + "vue-meta": "^2.4.0", + "vue-observe-visibility": "^1.0.0", + "vue-pdf-embed": "^1.1.4", + "vue-property-decorator": "^9.1.2", + "vue-router": "^3.5.2", + "vuetify": "~2.6.16", + "vuex": "^3.6.2", + "vuex-class": "^0.3.2" + }, + "devDependencies": { + "@ckeditor/ckeditor5-inspector": "^4.0.0", + "@mdi/font": "^7.2.96", + "@types/dompurify": "^2.4.0", + "@types/jest": "^27.0.1", + "@types/lodash": "^4.17.6", + "@types/splitpanes": "^2.2.1", + "@typescript-eslint/eslint-plugin": "^5.4.0", + "@typescript-eslint/parser": "^5.4.0", + "@vue/cli": "^5.0.8", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-typescript": "~5.0.0", + "@vue/cli-plugin-unit-jest": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "@vue/eslint-config-typescript": "^9.1.0", + "@vue/test-utils": "^1.1.3", + "@vue/vue2-jest": "^27.0.0-alpha.2", + "babel-jest": "^27.0.6", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "jest": "^27.0.5", + "sass": "^1.32.7", + "sass-loader": "^12.0.0", + "ts-jest": "^27.0.4", + "typescript": "~4.9.5", + "vue-cli-plugin-vuetify": "~2.4.8", + "vue-template-compiler": "^2.6.14", + "vuetify-loader": "^1.7.3" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4cfaf6aab14d483d3ca700f05ad6cfc8c92df583 GIT binary patch literal 1470 zcmeH`Yf#ix6u^I0l4+V|Qe=sR73C|-%2#DsLI{?K_~5Cm%Cam^2|*B8V0rB>yTC58 zJOz!1Xp+d&6wqX?WGyEI?TaQj2ZypF4Mcch3FYdp?{qb76w8W=u!e zCs8&LECE}A83J3%(cgk~ zL3415oQ{jHHSQuS+yX7}6wkq9&lEhuZP^^U1gUfy+oPru7Cf8qJyry4UyMXL56SKo z1O%=k)Z3PzUGoX@TS%nXhKS&0Y}o3Em((6l|8)fVttBwP0g>+}L?KT2#yBDg^&~{> zL`;MOQTyESN?R_l5p zE^R5Xa!2F|&ZH%6LsqzkB#kE-sawd(+(d@Pi{u0mGFc>Xsu1FIJBZ8hL#C0Es1cK> z6O*Kupwvo8&6kp1=u3QN7z#}=X<7SG=I#|-6xj+N)Cw`#84~mw9}4qCI8sVQ zc^StlD>+ehoSN#B)YaAqG|*UI&&ehwKc81|szpmpOBrXI}r zWv;ZhbLC1qe|7#rM@I*p9i3e5yvnt|uW|kQb^f_=gRYx5>FVmDyStlPw{FqX)5GoC zx9RQerLV7#{{DV}JKVi)>-_?~Sc*HAHlM}xWbDOiX+FW})e_Na?ZF{;xzQ<4|Q#}3r zB&V1YX4hC2wPyO{XQoVjVZJo`hsV8@#s+-&*22Xb)Fl;$hd literal 0 HcmV?d00001 diff --git a/public/images/azure-sentinel.png b/public/images/azure-sentinel.png new file mode 100755 index 0000000000000000000000000000000000000000..8f6ef107a4d8414425127a7853f28da0c2fc856f GIT binary patch literal 5200 zcmY*d2Q*w=*S@2UE=q_xh#HI@L>Ho)45GI%7`=>)-bq3tI#EU^h!PP*lpuMPh|wlm ziV{6~^fLeC{oeom{{P&y?|#lc&wlpVXWezzy7w{6=nf4f8zle$G`c#s;RNqYFj+7e z;oc%)^v997svD{Uz^i9e=Z>U=ImAf^ZU_J&0ss&d2LPvpP}C{_1WEwFx&r_x<^TYT zZ+_cdCBi}+!a~=@&=3$IU@$-mVgQH<2t>F55F7AEjer0>5c|Iv4ifr@Lj(X1kpRg* z94mtVGaLx^C+9z&xCr!L#Ui4A+0I48|6*AJ8<4Aidr5Emu0#WjJc2R`i*8V4*FjMArL!o>Xp-?m$EsmBJ z_wjdyN-8KQKqaK0Qc_|BhFCzbH_9!1`vjtt zd3pa7`gibpLFk_qsHC_A^j~d4s?wjRqOm^`L8$ykUqw>sZ|47t z{ZmH?`ltB++01`B{X0r%RfSRs`tPx+P#W|IS^~h8QQh0>ra_=h8!BHLT<|3}d{fU# z`QDhGRfiaRmvdiTe6+9$*zo>PhA>j6I31OHt%4sZR2O|!L!fGjCtYCNXd_3_WF|r8 z`54U2E#0r8YFwDsNN0=}qUlNgX(~+&S#Ilb@Ey1H{Z1GDYsVL>FTJ2O_qCrx-#d;l zp&0y8*YKj9`gX$3#0|yp^HYwSZ!Vz;8>X=l>2araJZ@Aaxw?-S{5hgGn1*AM7xVAM z`73$M{z%@g=bjHUg(b8@$5gj&?~>8K-JcV_a7Mc}?<@4NCh^l!@^HZhYd(R9QlIk+ zX7lt(A-LnJ8P?Ppa@B!^Uu!>Q-YeX{?%HGU|k? zl(|{pB5Z{mZ!P5)Jlqk^9kR;WhZAK;Y}A+6*VGkEcs}``6<5=)Rg1-_-=WB);>cyA zOjk&irz26hI%|%OiC+Dsg3K?g6$qqyHx(sJq*mnKMn^dlqK0~!I>yLH9+xJH<>1us zD})j8KTEAh4;Rjoy|a)jEn6$!Ossup|1EjgGEk-FoxfvnS1044XKm-OsXIG$4Ab=V zZQ4tY+}q6|TYhJ~sAFv=(cI;NAz0D<=u zS=EjZ@mvw&Z}e((73jxsNY^^U$#U0ejulwzrTWAaPPyp-iQ<>dmfvIzQHbd;6&UsvR zwdy2ARz*x9+rO^T8Ij(cK44*_DCR39lQ&vsm9|b1*kLQt`aIv<#8;bGyU*;Ff)Nw- zOi9xRc+AcqQG&n|hxn1Fl<DqfQmHCrk+Cjt@|9;uEM?%zgw$vftCHu2ME^18eH$z>> zesvR7w-V>~oY#bHazk80zDDTVGjo!w+vG0(;2YyDSVBR#Gu<^}Qil{|q@sEB*fLzJ zS;&kmN?>L>rEHv@&t@~;Qp;!WuM}UgdE}W@X3SD|k;Z@rQf)<#t;tBB{H$4n07?1_ z=vvGOgY0Uut)sgK<=sGeaKPLHrw3okUhP`0bLUqux>l~$c0VDh6npt;p#ns`@o_2E znb|+i!ST23OHRlq)OdQLyC!U#M5gbhVb@uWENY+TuDb`7i54P7rb(qfP(1rD`8=J= z(E-c05mjv{-sef@rKY@bg2tp7Qifv93YKXrUcA%8(pTM}A)=?2Lk;q6Bzv&M**{|Y zu4c6tT~`^%DO={0n^;*FG?YEinjfb1%(oO`Z)TR_?q1sD6`J9VKe!&gziJsWFSt0t zKm*V}lzQ>O%wRtN`%P0kQkdsuiJm$cn1qJE@%P)aFXLh@4`2Wo@%oYReg=g;S^t~3 zOUYu4|A=qCOK%{q37>v*Wa}uuvac&5tNKPDWw&rn^t^ouSdN#0zUvqH>mGjtsXlQP z8_BNhC=w@#3ol|+^?WVV4ZFF)zw7F1i*z7bxrpJnHU+b;An1P_T?YQf-9f_{79@$x zUosVmiaMQ?>~rm=G1u<&mVn|Yh-VEQta8a%?L&jeH>WI(kvb%^@$qHRi^06RgNyEz zes)Hm5P{y$MpTs>8P|ssW_o@~tbZsaB^C$?Ghfpp2Cwoe$X&&br5bw{ixs?)k#^FD zT$TDN_h?|34K|@}rgEISczlf*#ww4A)-4`-npd;tgZI7h5xOJ<2+y~%(B^FIDjeI* zYg{VT3<_@FltEl2K##n3p5EqF;q)36>< zk9A&JJ&8D92N!foXzpG^t8ohB-1I%JeQT=0H21!vydTw%nF@Q{#@~FnT>o#$UA%UWIuWUHH`6iLY=!W+Bg=X{wsImV;1q zvkA6%+;oNkGUs1@+9S1eepq*SkxR@Fh05<`(s2zRuo7w$8RoM;3ZyJ|_0|b6wPzj%UAK^!&pKX^MuvfDHqycvHkHxIn zUwCM89{~N!MS85WEOB9)dyJ)|boVy>4MC3eQozED!{=Mx9z}!IfXm{v1(v6Wi;4Z$ z&s9<7^Pd}#Tn*x#tSzMM>i9F%*mANvC98jHlwYEj55{w07K&F>bEW4>Kk58fgoWs}V%t?K5JdVe!u#b)m)BEP-u;>AX_ z;uK?A*+a#d#wu;8%dl-77mbqbu$Jru;41)}Efy^Oepc8S{lGI>M?#*Cn=ER&Q&_`3 zIP9i!h$izvxu?|l)$om5u6uTq93wV$FS+mL$$jZhXjoWW)a&?o<&qQ+?0)z@P+uBL zPuZFwcuxHyr>!kTW|_1H6!UiM3VUt|AM|5YnN4ZIk_hKg#sP7fkAR_ z2xIti=O!wk)=2NUb|gNQgoehTAITylJ{G}Zm(5l7>WJJYYe3(JW{(gm1WdhNT7hWVt3zx1JUlklSsPB+4PnkD9Ap>d(Vn z>|97$Sxv%acyKgF3_hMz4a^svi1 znzLZ4yyJI}jh%_j`^ z!ImBihnV*%@#>g?DCX;_H^HM_20hEv@-;p{f6J6{6%5^^#^pMZaJ2-LnYG6-q6w{sMe-Y`C>ft&l7_)T6c2kWjg> z%S?1jHkxy`n*o2fl% zkWzjtpw>9p8@x!bqi3?&d^6r1r3O6+$>$oEO6XniSzTK3qM|N7H>{68x%X$=azq97GB8EnAJpqaXpQECkhxL_! zSmdaymT>d9oSXv|njT`gH^3w+EZO>+T{5^eJUmM7Ci~vp##5Nd`IG68ld)E`PJG)N zx7f#=M-94%jMQXZc?*@2D_Op+&2sOM=7*~Fd3m&bk!2ZX-!e{4*cDt+2KK%lYrL|d z^dSXvp-}HsQFCogvw0d(23%&vD`ejCkWnF5m_#GaFrx)+zHD)D3(x;yW2}2|%nj`L z!>3YE*T;Qq`o-Y1%CjE38LeSEDLSyx@<*{Wgm^Av&v>r|c>AeLZ;JJ?LSYJp9pNcC zcI{tb3#2)$lh{qPL;rATv|nvDqQq=)W?4ju|-^u&N z#u6NAW;tXz|Ax3DywuT{d-G zpGch0sE?Xl)NfSM#&c(A+7&s?hu+&Za&cwWr&jNszCDcU7iM1dY!BXWe%&%#^;ojD zwim`Lt6+tMm0iK6!mYj5Yc~}I=)J)6-=iPiNdI**s@yXv`H);=K6n!}{{^6qI0;xy ztw^$1>%*-qSBxn}_1OXI1o5$y;s`0Iv!khMG16z5U!EqOE@55LXh_hq3? z9#F?FO|k)rGJ6%_H#$cgq=iI*5fhfkJMV;%WW-y zYl_N#SoR$=vI%ZqnXc&Vz3FJVOY(gPH`LkE=;HZ-ey^j~zCA2L%v}2Wd6|^0(NnYLl(c`{W zzwX1V*#bh&LO#EmH*+29>UL-d{RDq&BN?IEm4G?Nb}O@#T{<_jz4x1SBDpS$2m=M9YC`Rw>>_(0YU1d`TLV9#UK?Tu=^q;`%bC z2T0$;9lle*2zudz~+2WipE^7?Hz zk0*0?Hn%(pF$tv6ox~m=tr&Z8@@uZM4Ljg^yhrzLa1lANk z$;X*nasC>9H?&llOEADWr^}Fc;xyz=ZS`bP$^D*26{#KA?^c`fxq3S0?xJn0 + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..811b342 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,222 @@ + + + + + + diff --git a/src/api/auth.ts b/src/api/auth.ts new file mode 100644 index 0000000..96a49ac --- /dev/null +++ b/src/api/auth.ts @@ -0,0 +1,95 @@ +import {AxiosStatic} from "axios" +import Vue from 'vue' +export default (axios: AxiosStatic) => ({ + async login(username: string, password: string): Promise { + const params = new URLSearchParams() + params.append('username', username) + params.append('password', password) + return axios({ + url: '/login/access-token', + method: 'POST', + data: params, + withCredentials: true, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) + + }, + + async startAzureAD(): Promise { + return axios({ + url: '/login/oauth-url?auth_type=aad', + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true + }) + }, + + async completeAzureAD(token: any): Promise { + return axios({ + url: '/login/aad-callback', + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: token, + withCredentials: true + }) + }, + + async getCurrentUser(): Promise { + return axios({ + url: '/users/whoami', + method: 'GET', + withCredentials: true + }) + }, + logout() { + return axios({ + url: '/logout', + method: 'GET', + withCredentials: true + }) + }, + async getAuthMethods(): Promise { + return axios({ + url: '/settings/auth', + method: 'GET', + withCredentials: true + }) + }, + async createAuthMethod(create_data: any): Promise { + return axios({ + url: '/settings/auth', + method: 'POST', + withCredentials: true, + data: create_data + }) + }, + async updateAuthMethod(id: number, data: any): Promise { + return axios({ + url: '/settings/auth/' + id, + method: 'PUT', + withCredentials: true, + data: data + }) + }, + async deleteAuthMethod(id: number): Promise { + return axios({ + url: '/settings/auth/' + id, + method: 'DELETE', + withCredentials: true + }) + }, + async getAuthHelp(): Promise { + return axios({ + url: '/settings/auth/help', + method: 'GET', + withCredentials: true + }) + } +} +); diff --git a/src/api/elements.ts b/src/api/elements.ts new file mode 100644 index 0000000..75068be --- /dev/null +++ b/src/api/elements.ts @@ -0,0 +1,745 @@ +import {AxiosStatic} from "axios" +import { IRElementType, IRElementStatus, PermissionEnum } from "@/store/modules/IRElements/types" +import { convertToSnakeCase } from '@/utils/elementUtils' + +const IRElementAPIPaths: {[key in IRElementType]?: string}= { + [IRElementType.Alertgroup]: "/alertgroup", + [IRElementType.Event]: "/event", + [IRElementType.Alert]: "/alert", + [IRElementType.Signature]: "/signature", + [IRElementType.Incident]: "/incident", + [IRElementType.Intel]: "/intel", + [IRElementType.Product]: "/product", + [IRElementType.Dispatch]: "/dispatch", + [IRElementType.Guide]: "/guide", + [IRElementType.ThreatModelItem]: "/threat_model_item", + [IRElementType.Link]: "/link", + [IRElementType.Entity]: "/entity", + [IRElementType.Entry]: "/entry", + [IRElementType.File]: "/file", + [IRElementType.Feed]: "/feed", + [IRElementType.Pivot]: "/pivot", + [IRElementType.EntityClass]: "/entity_class", + [IRElementType.VulnFeed]: "/vuln_feed", + [IRElementType.VulnTrack]: "/vuln_track", +} + +export function getExportURL(elementType: IRElementType, elementID: number, format: string) { + return `${IRElementAPIPaths[elementType]}/export?id=${elementID}&format=${format}` +} + +export default (axios: AxiosStatic) => ({ + async retrieveElements(elementType: IRElementType): Promise { + const path = IRElementAPIPaths[elementType] + return axios({ + url: `${path}/`, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: { 'limit': 25 }, // Default parameters for static fetch + withCredentials: true + }) + }, + + async retrieveElementsWithFilter(elementType: IRElementType, filterDict: any, abortController: AbortController): Promise { + //const queryString = Object.keys(filterDict).map(key => key + '=' + filterDict[key]).join('&'); + const path = IRElementAPIPaths[elementType] + '/' + return axios({ + url: path, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: filterDict, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async retrieveElementbyID(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath:string = "" + fullPath = path + '/' + elementID + + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + + }) + }, + + async retrieveEntityAppearancesbyID(elementID: number, params: any = {}, abortController: AbortController | undefined = undefined): Promise { + const path = IRElementAPIPaths[IRElementType.Entity] + let fullPath:string = "" + fullPath = path + '/' + elementID + '/' + 'flair_appearances' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal, + params: params + }) + }, + + async retrieveEntityPivotsbyID(elementID: number, abortController: AbortController): Promise { + const path = IRElementAPIPaths[IRElementType.Entity] + let fullPath:string = "" + fullPath = path + '/' + elementID + '/' + 'pivot' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + + }) + }, + + async retrieveEntityEnrichmentsbyID(elementID: number, abortController: AbortController): Promise { + const path = IRElementAPIPaths[IRElementType.Entity] + let fullPath:string = "" + fullPath = path + '/' + elementID + '/' + 'enrichment' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + + }) + }, + async createElement(elementType: IRElementType, createData: any, extraData: any): Promise { + let postData = {} + const elementName = convertToSnakeCase(elementType) + if (extraData && elementName) + { + postData = { [elementName]: createData, ...extraData } + } + else{ + postData = createData + } + return axios({ + url: IRElementAPIPaths[elementType] + '/', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + data: postData + }) + }, + + async submitFile(formData:FormData, targetType:string, targetId:string): Promise { + return axios({ + url: '/file/', + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + 'target_type': targetType, + 'target_id': targetId, + }, + withCredentials: true, + data: formData + }) + }, + + async updateElementById(elementId: number, elementType: IRElementType, updateData: any): Promise { + const path = IRElementAPIPaths[elementType] + '/' + elementId + return axios({ + url: path, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + withCredentials: true + }) + }, + + async deleteElementById(elementId: number, elementType: IRElementType) { + const path = IRElementAPIPaths[elementType] + '/' + elementId + return axios({ + url: path, + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true + }) + }, + + + async deleteFileById(fileId:number, targetId:number, targetType:IRElementType) { + const path = 'file' + '/' + fileId + return axios({ + url: path, + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + data: { target_type: convertToSnakeCase(targetType), target_id: targetId } + }) + }, + + async undeleteElementById(elementId: number, elementType: IRElementType, keep_id: boolean = true) { + const path = IRElementAPIPaths[elementType] + '/undelete' + return axios({ + url: path, + method: 'POST', + params: { 'target_id': elementId, 'keep_ids': keep_id }, + withCredentials: true + }) + }, + + async updateEntityClassDescriptionById(elementId: number, updateData: any): Promise { + const path = 'entity_class' + '/' + elementId + '/' + return axios({ + url: path, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + withCredentials: true + }) + }, + + async updateOrCreateEntry(entryID: number, entryCreateOrUpdateAttributes: any): Promise { + if (entryCreateOrUpdateAttributes.target_type) { + entryCreateOrUpdateAttributes.target_type = convertToSnakeCase(entryCreateOrUpdateAttributes.target_type) + } + if (entryID == -1){ + if (entryCreateOrUpdateAttributes.entry_class == 'notebook') + { + const fullPutPath = 'entry' + '/' + 'notebook' + return axios({ + url: fullPutPath, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {entry: entryCreateOrUpdateAttributes} + }) + } + const fullPutPath = 'entry' + '/' + return axios({ + url: fullPutPath, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {entry: entryCreateOrUpdateAttributes} + }) + + } + else{ + const fullPutPath = 'entry' +'/' + entryID + return axios({ + url: fullPutPath, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: entryCreateOrUpdateAttributes + }) + } + + }, + + + async downloadFilesbyId(fileIds:Array): Promise{ + let fullPath:string = "" + + fullPath = 'file' + '/' + 'download' + `?ids=${fileIds}` + return axios({ + url: fullPath, + method: 'GET', + withCredentials: true + + }) + + + }, + async retrieveElementEntriesbyID(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath:string = "" + if (elementType === IRElementType.Alertgroup){ + fullPath = path + '/' + elementID + '/' + 'alerts' + } + else{ + fullPath = path + '/' + elementID + '/' + 'entry' + } + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: { limit: -1 }, // Get all entries, no matter how many there are + withCredentials: true, + signal: abortController?.signal + }) + }, + + + async retrieveElementEntitiesbyID(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath:string = "" + + fullPath = path + '/' + elementID + '/' + 'entity' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async reflairSelectedElementById(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath: string = "" + + fullPath = path + '/' + elementID + '/' + 'reflair' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async retrieveElementFilesbyID(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath: string = "" + + fullPath = path + '/' + elementID + '/' + 'files' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + + }) + }, + + async retrieveElementSignaturesByID(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath: string = "" + + fullPath = path + '/' + elementID + '/' + 'signatures' + return axios({ + url: fullPath, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async retrieveElementPermissions(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + return axios({ + url: '/permissions/getroles', + method: 'GET', + params: { target_type: convertToSnakeCase(IRElementType[elementType]), target_id: elementID }, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async retrieveElementHistory(elementID: number, elementType: IRElementType, abortController: AbortController): Promise { + const path = IRElementAPIPaths[elementType] + const fullPath: string = path + '/' + elementID + '/' + 'history' + return axios({ + url: fullPath, + method: 'GET', + withCredentials: true, + signal: abortController?.signal + }) + }, + + async grantElementPermission(elementID: number, elementType: IRElementType, roleID: number, permission: PermissionEnum): Promise { + return axios({ + url: '/permissions/grant', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { + target_type: convertToSnakeCase(IRElementType[elementType]), + target_id: elementID, + role_id: roleID, + permission: PermissionEnum[permission].toLowerCase() + }, + withCredentials: true + }) + }, + + async revokeElementPermission(elementID: number, elementType: IRElementType, roleID: number, permission: PermissionEnum): Promise { + return axios({ + url: '/permissions/revoke', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { + target_type: convertToSnakeCase(IRElementType[elementType]), + target_id: elementID, + role_id: roleID, + permission: PermissionEnum[permission].toLowerCase() + }, + withCredentials: true + }) + }, + + async setElementPermissions(elementID: number, elementType: IRElementType, permissions: { [key in PermissionEnum]?: Array }): Promise { + return axios({ + url: '/permissions/set', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { + target_type: convertToSnakeCase(IRElementType[elementType]), + target_id: elementID, + permissions: permissions + }, + withCredentials: true + }) + }, + + async changeElementStatus(elementID: number, elementType: IRElementType, newElementStatus: IRElementStatus): Promise { + const path = IRElementAPIPaths[elementType] + const fullPath:string = path + "/" + elementID + return axios({ + url: fullPath, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + data: { status: newElementStatus.toLowerCase() }, + withCredentials:true + }) + + }, + + + async promoteElements(elementIDs: Array, elementType: IRElementType, new_tags: Array = [], new_sources: Array = []): Promise { + const fullPath: string = "promotion/" + const promotionTargetMap: Record = { + "alert": "event", + "event": "incident", + "dispatch": "intel", + "vuln_feed": "vuln_track" + } + const sourceString = convertToSnakeCase(IRElementType[elementType]) + const targetElement = promotionTargetMap[sourceString || "undefined"] + const sources = elementIDs.map(element => { + return { type: convertToSnakeCase(IRElementType[elementType]), id: element } + }) + return axios({ + url: fullPath, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { source: sources, destination: targetElement, sources: new_sources, tags: new_tags }, + withCredentials: true + }) + + }, + + async promoteElementsToExisting(elementIDs: Array, elementType: IRElementType, existingEventId: number, new_tags: Array = [], new_sources: Array = []): Promise { + const fullPath: string = "promotion/" + const promotionTargetMap: Record = { + "alert": "event", + "event": "incident", + "dispatch": "intel", + "vuln_feed": "vuln_track" + } + const sourceString = convertToSnakeCase(IRElementType[elementType]) + const targetElement = promotionTargetMap[sourceString || "undefined"] + const sources = elementIDs.map(element => { + return { type: convertToSnakeCase(IRElementType[elementType]), id: element } + }) + const promoteTo = existingEventId + return axios({ + url: fullPath, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { source: sources, destination: targetElement, destination_id: promoteTo, sources: new_sources, tags: new_tags }, + withCredentials: true + }) + }, + + async retrieveTags(filterDict: any): Promise { + return axios({ + url: "/tag/", + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: filterDict, + withCredentials:true + }) + }, + + + async retrieveAllEntityClasses(): Promise { + const filterDict = { limit: -1 } + return axios({ + url: "/entity_class/", + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: filterDict, + withCredentials:true + }) + }, + + async retrieveAllEntityTypes(): Promise { + const filterDict = { limit: -1 } + return axios({ + url: "/entity_type/", + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: filterDict, + withCredentials:true + }) + }, + + async retrieveSources(filterDict: any): Promise { + return axios({ + url: "/source/", + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: filterDict, + withCredentials:true + }) + }, + async addSource(sourceToAdd: any): Promise { + if (sourceToAdd.target_type) { + sourceToAdd.target_type = convertToSnakeCase(sourceToAdd.target_type) + } + return axios({ + url: "/source/source_by_name", + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: sourceToAdd + }) + }, + async addTag(tagToAdd: any): Promise { + if (tagToAdd.target_type) { + tagToAdd.target_type = convertToSnakeCase(tagToAdd.target_type) + } + return axios({ + url: "/tag/tag_by_name", + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: tagToAdd + }) + }, + + async submitPivotEntityClasses(pivotId:number, entityClasses:any): Promise { + return axios({ + url: `/pivot/${pivotId}/entity_class`, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {'entity_classes': entityClasses} + }) + }, + async submitPivotEntityTypes(pivotId:number, entityTypes:any): Promise { + return axios({ + url: `/pivot/${pivotId}/entity_type`, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {'entity_types': entityTypes} + }) + }, + + async addEntityClass(entityId:number, entityClassesToAdd:any): Promise { + return axios({ + url: `/entity/${entityId}/entity_class`, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {'entity_class_ids': entityClassesToAdd} + }) + }, + + async removeEntityClass(entityId:number, entityClassesToRemove:any): Promise { + return axios({ + url: `/entity/${entityId}/entity_class/remove`, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: {'entity_class_ids': entityClassesToRemove} + }) + }, + + async removeTag(tagId: any, removeBody: any): Promise { + if (removeBody.target_type) { + removeBody.target_type = convertToSnakeCase(removeBody.target_type) + } + return axios({ + url: `/tag/${tagId}/untag`, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: removeBody + }) + }, + + async removeSource(sourceId: any, removeBody: any): Promise { + if (removeBody.target_type) { + removeBody.target_type = convertToSnakeCase(removeBody.target_type) + } + return axios({ + url: `/source/${sourceId}/remove`, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: removeBody + }) + }, + + + + async updateSource(sourceId:any, updateBody:any): Promise { + return axios({ + url: `/source/${sourceId}`, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: updateBody + }) + }, + async updateTag(tagId:any, updateBody:any): Promise { + return axios({ + url: `/tag/${tagId}`, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true, + data: updateBody + }) + }, + + async deleteElementByID(elementID: number, elementType: IRElementType): Promise { + const path = IRElementAPIPaths[elementType] + let fullPath:string = "" + fullPath = path + '/' + elementID + return axios({ + url: fullPath, + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true + + }) + }, + async deleteEntryByID(elementID: number): Promise { + + let fullPath:string = "" + fullPath = 'entry' + '/' + elementID + return axios({ + url: fullPath, + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials:true + + }) + }, + + async deleteLinksBetweenElements(elementType0: IRElementType, elementId0: number, elementType1: IRElementType, elementId1: number, bidirectional: boolean = false) { + const path = IRElementAPIPaths[IRElementType.Link] + const fullPath: string = path + '/deletebetween' + return axios({ + url: fullPath, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + data: { + v0_type: elementType0, + v0_id: elementId0, + v1_type: elementType1, + v1_id: elementId1, + bidirectional: bidirectional + }, + withCredentials: true + + }) + }, + + async retrieveSignatureBodies(signatureId: number): Promise { + return axios({ + url: 'signature/' + signatureId + '/sigbodies', + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true + }) + }, + }); \ No newline at end of file diff --git a/src/api/file.ts b/src/api/file.ts new file mode 100755 index 0000000..279adb8 --- /dev/null +++ b/src/api/file.ts @@ -0,0 +1,38 @@ +import { AxiosStatic } from "axios" +import { IRElementType } from "../store/modules/IRElements/types" + +export default (axios: AxiosStatic) => ({ + async createFile(fileData: Blob, containingElementType?: IRElementType, containingElementId?: number, progressCallback?: any, abortController?: AbortController): Promise { + const formData = new FormData() + formData.append("file", fileData) + if (containingElementId && containingElementType) { + return axios({ + url: '/file/', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'multipart/form-data', + 'target_type': containingElementType.toLowerCase(), + 'target_id': containingElementId.toString(), + }, + data: formData, + onUploadProgress: progressCallback, + signal: abortController?.signal + }) + } + else { + return axios({ + url: '/file/', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'multipart/form-data', + }, + data: formData, + onUploadProgress: progressCallback, + signal: abortController?.signal + }) + } + }, +}) + diff --git a/src/api/storage_provider.ts b/src/api/storage_provider.ts new file mode 100644 index 0000000..924abdd --- /dev/null +++ b/src/api/storage_provider.ts @@ -0,0 +1,43 @@ +import {AxiosStatic} from "axios" +import Vue from 'vue' + +export default (axios: AxiosStatic) => ({ + async getStorageProviders(): Promise { + return axios({ + url: '/settings/storage_provider', + method: 'GET', + withCredentials: true + }) + }, + async createStorageProvider(create_data: any): Promise { + return axios({ + url: '/settings/storage_provider', + method: 'POST', + withCredentials: true, + data: create_data + }) + }, + async updateStorageProvider(id: number, data: any): Promise { + return axios({ + url: '/settings/storage_provider/' + id, + method: 'PUT', + withCredentials: true, + data: data + }) + }, + async deleteStorageProvider(id: number): Promise { + return axios({ + url: '/settings/storage_provider/' + id, + method: 'DELETE', + withCredentials: true + }) + }, + async getStorageProviderHelp(): Promise { + return axios({ + url: '/settings/storage_provider_help', + method: 'GET', + withCredentials: true + }) + } +} +); diff --git a/src/api/team.ts b/src/api/team.ts new file mode 100644 index 0000000..d966d92 --- /dev/null +++ b/src/api/team.ts @@ -0,0 +1,141 @@ +import { AxiosStatic } from "axios" +import qs from "qs" + +export default (axios: AxiosStatic) => ({ + async getHandlers(startRange:string, endRange:string): Promise { + return axios({ + url: `/handler/?start_date=${startRange}&end_date=${endRange}`, + method: 'GET', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + }) + }, + + async getAllUsernames(): Promise { + return axios({ + url: '/users/usernames', + method: 'GET', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + }) + }, + + async createHandler(createData: any): Promise { + return axios({ + url: '/handler/', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + data: createData + }) + }, + + async updateHandler(handlerId: number, updateData: any): Promise { + const path = '/handler/' + handlerId + return axios({ + url: path, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + withCredentials: true + }) + }, + + async deleteHandler(handlerId: number): Promise { + const path = '/handler/' + handlerId + return axios({ + url: path, + method: 'DELETE', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true + }) + }, + + async retrieveGlobalSettings(): Promise { + const path = '/settings/' + return axios({ + url: path, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true + }) + }, + + async updateGlobalSettings(updateData: any): Promise { + const path = '/settings/' + return axios({ + url: path, + method: 'PUT', + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + withCredentials: true + }) + }, + + async retrieveAuditsWithFilter(filter: any, abortController: AbortController): Promise { + const path = '/audit/' + return axios({ + url: path, + method: 'GET', + params: filter, + withCredentials: true, + signal: abortController?.signal + }) + }, + + async deleteAudit(id: number): Promise { + const path = '/audit/' + id + return axios({ + url: path, + method: 'DELETE', + withCredentials: true + }) + }, + + async getGameResults(game_ids: Array | undefined = undefined, + date_range: Array | undefined = undefined, + num_top_users: number = 3, + exclude_users: Array = [] + ) { + const path = '/game/results' + const sixMonthsAgo = new Date().setMonth(new Date().getMonth() - 6) + const dates = date_range ? date_range : [sixMonthsAgo] + return axios({ + url: path, + method: 'GET', + headers: { + 'Content-Type': 'application/json' + }, + params: { + game_ids: game_ids, + dates: dates, + num_top_users: num_top_users, + exclude_users: exclude_users + }, + withCredentials: true + }) + }, + + async getUserActivity() { + const path = '/users/activity' + return axios({ + url: path, + method: 'GET', + withCredentials: true + }) + } +}); diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100755 index 0000000..919c77d --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,220 @@ +import {AxiosStatic} from "axios" +import { PermissionEnum } from "../store/modules/IRElements/types"; +export default (axios: AxiosStatic) => ({ + async updateUserMe(updateData: any): Promise { + return axios({ + url: '/users/me', + method: 'PUT', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + }) + }, + + async updateUser(id: number, updateData: any): Promise { + return axios({ + url: '/users/' + id, + method: 'PUT', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + }) + }, + + async createUser(createData: any): Promise { + return axios({ + url: '/users/', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: createData, + }) + }, + + async getUsers({ skip = undefined, limit = undefined, sort = 'id' } = {}): Promise { + return axios({ + url: '/users/', + method: 'GET', + withCredentials: true, + params: {'skip': skip, 'limit': limit, 'sort': sort} + }) + }, + + async deleteUser(user_id: number): Promise { + return axios({ + url: '/users/' + user_id, + method: 'DELETE', + withCredentials: true + }) + }, + + async getRoles({ skip = undefined, limit = undefined, sort = 'id' } = {}): Promise { + return axios({ + url: '/role/', + method: 'GET', + withCredentials: true, + params: {'skip': skip, 'limit': limit, 'sort': sort} + }) + }, + + async updateRole(id: number, updateData: any): Promise { + return axios({ + url: '/role/' + id, + method: 'PUT', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + }) + }, + + async createRole(createData: any): Promise { + return axios({ + url: '/role/', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: createData, + }) + }, + + async assignRole(username: string, role_id?: number, role_name?: string): Promise { + return axios({ + url: '/role/assign', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + params: { username, role_id, role_name }, + }) + }, + + async removeRole(username: string, role_id?: number, role_name?: string): Promise { + return axios({ + url: '/role/remove', + method: 'POST', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + params: { username, role_id, role_name }, + }) + }, + + async deleteRole(role_id: number): Promise { + return axios({ + url: '/role/' + role_id, + method: 'DELETE', + withCredentials: true + }) + }, + + async getRolesForObject(objType: string, objId: number): Promise { + return axios({ + url: '/permissions/getroles', + method: 'GET', + withCredentials: true, + params: { target_type: objType, target_id: objId } + }) + }, + + async grantPermission(roleId: number, objType: string, objId: number, permission: PermissionEnum): Promise { + return axios({ + url: '/permissions/grant', + method: 'POST', + withCredentials: true, + data: { role_id: roleId, target_type: objType, target_id: objId, permission } + }) + }, + + async revokePermission(roleId: number, objType: string, objId: number, permission: PermissionEnum): Promise { + return axios({ + url: '/permissions/revoke', + method: 'POST', + withCredentials: true, + data: { role_id: roleId, target_type: objType, target_id: objId, permission } + }) + }, + + // Note: this gets all api keys of the current user + // TODO: pagination? + async getUserApiKeys(): Promise { + return axios({ + url: '/apikey/', + method: 'GET', + withCredentials: true, + }) + }, + + async retrieveNotifications(): Promise { + return axios({ + url: '/notification/', + method: 'GET', + withCredentials: true, + }) + }, + + + async ackNotifications(notificationIds: Array): Promise { + return axios({ + url: '/notification/ack/', + method: 'POST', + data: {notification_ids:notificationIds}, + headers: { + 'Content-Type': 'application/json' + }, + withCredentials: true, + }) + }, + + async updateApiKey(key: string, updateData: any): Promise { + return axios({ + url: '/apikey/' + key, + method: 'PUT', + withCredentials: true, + headers: { + 'Content-Type': 'application/json' + }, + data: updateData, + }) + }, + + async createApiKey(): Promise { + return axios({ + url: '/apikey/', + method: 'POST', + withCredentials: true, + }) + }, + + async deleteApiKey(key: string): Promise { + return axios({ + url: '/apikey/' + key, + method: 'DELETE', + withCredentials: true, + }) + }, + + async callTextSearch(searchText:string, abortController?: AbortController): Promise { + return axios({ + url: '/search/', + method: 'POST', + withCredentials: true, + data: {'text': searchText}, + headers: { + 'Content-Type': 'application/json' + }, + + }) + } +}); \ No newline at end of file diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 46 diff --git a/src/assets/scot-logo.png b/src/assets/scot-logo.png new file mode 100755 index 0000000000000000000000000000000000000000..a16bc92ae787791c2d15f6d66cce0bcb996f1399 GIT binary patch literal 481196 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

M~59CPP=(R|-%PipJJ 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%0AO;6CG>xe$@Gb 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%0A?pa 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

N*S6;9U8q#wYwS#kM)=?m@kfR#{cMCb%?T>uC&t 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 $num { + @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !"; + } + $prev-key: $key; + $prev-num: $num; + } + } + + // Starts at zero + // Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0. + @mixin _assert-starts-at-zero($map) { + $values: map-values($map); + $first-value: nth($values, 1); + @if $first-value != 0 { + @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}."; + } + } + + // Replace `$search` with `$replace` in `$string` + // Used on our SVG icon backgrounds for custom forms. + // + // @author Hugo Giraudel + // @param {String} $string - Initial string + // @param {String} $search - Substring to replace + // @param {String} $replace ('') - New value + // @return {String} - Updated string + @function str-replace($string, $search, $replace: "") { + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + } + + // Color contrast + @function color-yiq($color) { + $r: red($color); + $g: green($color); + $b: blue($color); + + $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000; + + @if ($yiq >= $yiq-contrasted-threshold) { + @return $yiq-text-dark; + } @else { + @return $yiq-text-light; + } + } + + // Retrieve color Sass maps + @function color($key: "blue") { + @return map-get($colors, $key); + } + + @function theme-color($key: "primary") { + @return map-get($theme-colors, $key); + } + + @function gray($key: "100") { + @return map-get($grays, $key); + } + + // Request a theme color level + @function theme-color-level($color-name: "primary", $level: 0) { + $color: theme-color($color-name); + $color-base: if($level > 0, $black, $white); + $level: abs($level); + + @return mix($color-base, $color, $level * $theme-color-interval); + } + + + // Tables + + @mixin table-row-variant($state, $background) { + // Exact selectors below required to override `.table-striped` and prevent + // inheritance to nested tables. + .table-#{$state} { + &, + > th, + > td { + background-color: $background; + } + } + + // Hover states for `.table-hover` + // Note: this is not available for cells or rows within `thead` or `tfoot`. + .table-hover { + $hover-background: darken($background, 5%); + + .table-#{$state} { + @include hover { + background-color: $hover-background; + + > td, + > th { + background-color: $hover-background; + } + } + } + } + } \ No newline at end of file diff --git a/src/assets/scss/tabulator_bootstrap4.scss b/src/assets/scss/tabulator_bootstrap4.scss new file mode 100644 index 0000000..4db23b0 --- /dev/null +++ b/src/assets/scss/tabulator_bootstrap4.scss @@ -0,0 +1,1215 @@ +@import "functions4.scss"; +@import "variables4.scss"; + +// Style conversion file, bootstrap to tabulator + +//Main Theme Variables +$backgroundColor: $table-bg !default; //background color of tabulator +$borderColor:$table-border-color !default; //border to tabulator +$textSize:$font-size-base !default; //table text size + +//header themeing +$headerBackgroundColor:#fff !default; //border to tabulator +$headerSeperatorColor:$table-border-color !default; //header bottom seperator color + +$cellPadding:$table-cell-padding !default; //padding round header + +//column header arrows +$sortArrowActive: #666 !default; +$sortArrowInactive: #bbb !default; + +//row themeing +$rowBackgroundColor:$backgroundColor !default; //table row background color +$rowAltBackgroundColor: $table-accent-bg !default; //table row background color +$rowBorderColor:$table-border-color !default; //table border color +$rowHoverBackground:$table-hover-bg !default; //row background color on hover + +$rowSelectedBackground: #9ABCEA !default; //row background color when selected +$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered + + +$editBoxColor:#1D68CD !default; //border color for edit boxes +$errorColor:#dd0000 !default; //error indication + +//footer themeing +$footerBorderColor:$pagination-border-color !default; //footer border color +$footerSeperatorColor:$table-border-color !default; //footer bottom seperator color +$footerActiveColor:$pagination-active-color !default; //footer bottom active text color + + +//Tabulator Containing Element +.tabulator{ + position: relative; + background-color: $backgroundColor; + overflow:hidden; + font-size:$textSize; + text-align: left; + width: 100%; + max-width: 100%; + // margin-bottom: $line-height-computed; + + -webkit-transform: translatez(0); + -moz-transform: translatez(0); + -ms-transform: translatez(0); + -o-transform: translatez(0); + transform: translatez(0); + + &[tabulator-layout="fitDataFill"]{ + .tabulator-tableHolder{ + .tabulator-table{ + min-width:100%; + } + } + } + + &.tabulator-block-select{ + user-select: none; + } + + //column header containing element + .tabulator-header{ + position:relative; + box-sizing: border-box; + + width:100%; + + border-top:1px solid $headerSeperatorColor; + border-bottom:2px solid $headerSeperatorColor; + background-color: $headerBackgroundColor; + font-weight:bold; + + white-space: nowrap; + overflow:hidden; + + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + + //individual column header element + .tabulator-col{ + display:inline-block; + position:relative; + box-sizing:border-box; + background-color: $headerBackgroundColor; + text-align:left; + vertical-align: bottom; + overflow: hidden; + + &.tabulator-moving{ + position: absolute; + border:1px solid $headerSeperatorColor; + background:darken($headerBackgroundColor, 10%); + pointer-events: none; + } + + //hold content of column header + .tabulator-col-content{ + box-sizing:border-box; + position: relative; + padding:$cellPadding; + + //hold title of column header + .tabulator-col-title{ + box-sizing:border-box; + width: 100%; + + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align:bottom; + + //element to hold title editor + .tabulator-title-editor{ + box-sizing: border-box; + width: 100%; + + border:1px solid #999; + + padding:1px; + + background: #fff; + } + } + + //column sorter arrow + .tabulator-arrow{ + display: inline-block; + position: absolute; + top:14px; + right:8px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid $sortArrowInactive; + } + + } + + //complex header column group + &.tabulator-col-group{ + + //gelement to hold sub columns in column group + .tabulator-col-group-cols{ + position:relative; + display: flex; + + border-top:1px solid $borderColor; + overflow: hidden; + + .tabulator-col:last-child{ + margin-right:-1px; + } + } + } + + + //hide left resize handle on first column + &:first-child{ + .tabulator-col-resize-handle.prev{ + display: none; + } + } + + //placeholder element for sortable columns + &.ui-sortable-helper{ + position: absolute; + background-color:darken($headerBackgroundColor, 10%) !important; + border:1px solid $borderColor; + } + + //header filter containing element + .tabulator-header-filter{ + position: relative; + box-sizing: border-box; + margin-top:2px; + width:100%; + text-align: center; + + //styling adjustment for inbuilt editors + textarea{ + height:auto !important; + } + + svg{ + margin-top: 3px; + } + + input{ + &::-ms-clear { + width : 0; + height: 0; + } + } + } + + + //styling child elements for sortable columns + &.tabulator-sortable{ + .tabulator-col-title{ + padding-right:25px; + } + + &:hover{ + cursor:pointer; + background-color:darken($headerBackgroundColor, 10%); + } + + &[aria-sort="none"]{ + .tabulator-col-content .tabulator-arrow{ + border-top: none; + border-bottom: 6px solid $sortArrowInactive; + } + } + + &[aria-sort="asc"]{ + .tabulator-col-content .tabulator-arrow{ + border-top: none; + border-bottom: 6px solid $sortArrowActive; + } + } + + &[aria-sort="desc"]{ + .tabulator-col-content .tabulator-arrow{ + border-top: 6px solid $sortArrowActive; + border-bottom: none; + } + } + } + + &.tabulator-col-vertical{ + .tabulator-col-content{ + .tabulator-col-title{ + writing-mode: vertical-rl; + text-orientation: mixed; + + display:flex; + align-items:center; + justify-content:center; + } + } + + &.tabulator-col-vertical-flip{ + .tabulator-col-title{ + transform: rotate(180deg); + } + } + + &.tabulator-sortable{ + .tabulator-col-title{ + padding-right:0; + padding-top:20px; + } + + &.tabulator-col-vertical-flip{ + .tabulator-col-title{ + padding-right:0; + padding-bottom:20px; + } + + } + + .tabulator-arrow{ + right:calc(50% - 6px); + } + } + } + + } + + .tabulator-frozen{ + display: inline-block; + position: absolute; + + // background-color: inherit; + + z-index: 10; + + &.tabulator-frozen-left{ + border-right:2px solid $rowBorderColor; + } + + &.tabulator-frozen-right{ + border-left:2px solid $rowBorderColor; + } + } + + .tabulator-calcs-holder{ + box-sizing:border-box; + width:100%; + + background:lighten($headerBackgroundColor, 5%) !important; + + .tabulator-row{ + background:lighten($headerBackgroundColor, 5%) !important; + + .tabulator-col-resize-handle{ + display: none; + } + } + + border-top:1px solid $rowBorderColor; + border-bottom:1px solid $headerSeperatorColor; + + overflow: hidden; + } + + .tabulator-frozen-rows-holder{ + min-width:400%; + + &:empty{ + display: none; + } + } + } + + + + //scrolling element to hold table + .tabulator-tableHolder{ + position:relative; + width:100%; + white-space: nowrap; + overflow:auto; + -webkit-overflow-scrolling: touch; + + &:focus{ + outline: none; + } + + //default placeholder element + .tabulator-placeholder{ + box-sizing:border-box; + display: flex; + align-items:center; + + &[tabulator-render-mode="virtual"]{ + position: absolute; + top:0; + left:0; + height:100%; + } + + width:100%; + + span{ + display: inline-block; + + margin:0 auto; + padding:10px; + + color:#000; + font-weight: bold; + font-size: 20px; + } + } + + //element to hold table rows + .tabulator-table{ + position:relative; + display:inline-block; + background-color:$rowBackgroundColor; + white-space: nowrap; + overflow:visible; + + .tabulator-row{ + &.tabulator-calcs{ + font-weight: bold; + background:darken($rowAltBackgroundColor, 5%) !important; + + &.tabulator-calcs-top{ + border-bottom:2px solid $rowBorderColor; + } + + &.tabulator-calcs-bottom{ + border-top:2px solid $rowBorderColor; + } + } + } + } + } + + + //column resize handles + .tabulator-col-resize-handle{ + position:absolute; + right:0; + top:0; + bottom:0; + width:5px; + + &.prev{ + left:0; + right:auto; + } + + &:hover{ + cursor:ew-resize; + } + } + + + //footer element + .tabulator-footer{ + padding:5px 10px; + border-top:2px solid $footerSeperatorColor; + text-align:right; + font-weight:bold; + white-space:nowrap; + user-select:none; + + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + + .tabulator-calcs-holder{ + box-sizing:border-box; + width:calc(100% + 20px); + margin:-5px -10px 5px -10px; + + text-align: left; + + background:lighten($backgroundColor, 5%) !important; + + .tabulator-row{ + background:lighten($backgroundColor, 5%) !important; + + .tabulator-col-resize-handle{ + display: none; + } + } + + border-bottom:1px solid $rowBorderColor; + border-top:1px solid $rowBorderColor; + + overflow: hidden; + + &:only-child{ + margin-bottom:-5px; + border-bottom:none; + } + } + + //pagination container element + .tabulator-pages{ + // margin:0 7px; + } + + //pagination button + .tabulator-page{ + display:inline-block; + + margin:0; + margin-top:5px; + padding:8px 12px; + + border:1px solid $footerBorderColor; + border-right:none; + + background:rgba(255,255,255,.2); + + color: $pagination-color; + font-family:inherit; + font-weight:normal; + font-size:inherit; + + &[data-page="first"]{ + border-top-left-radius:4px; + border-bottom-left-radius:4px; + } + + &[data-page="last"]{ + border:1px solid $footerBorderColor; + border-top-right-radius:4px; + border-bottom-right-radius:4px; + } + + &.active{ + border-color:$pagination-active-border-color; + background-color:$pagination-active-bg; + color:$footerActiveColor; + } + + &:disabled{ + border-color:$pagination-disabled-border-color; + background:$pagination-disabled-bg; + color:$pagination-disabled-color; + } + + &:not(.disabled){ + &:hover{ + cursor:pointer; + border-color:$pagination-hover-border-color; + background:$pagination-hover-bg; + color:$pagination-hover-color; + } + } + } + } + + //holding div that contains loader and covers tabulator element to prevent interaction + .tabulator-loader{ + position:absolute; + display: flex; + align-items:center; + + top:0; + left:0; + z-index:100; + + height:100%; + width:100%; + background:rgba(0,0,0,.4); + text-align:center; + + //loading message element + .tabulator-loader-msg{ + display:inline-block; + + margin:0 auto; + padding:10px 20px; + + border-radius:10px; + + background:#fff; + font-weight:bold; + font-size:16px; + + //loading message + &.tabulator-loading{ + border:4px solid #333; + color:#000; + } + + //error message + &.tabulator-error{ + border:4px solid #D00; + color:#590000; + } + } + } + + + + //Bootstrap theming classes + + &.thead-dark{ + .tabulator-header{ + border-color: $table-dark-border-color; + background-color: $table-dark-bg; + color: $table-dark-color; + + .tabulator-col{ + border-color: $table-dark-border-color; + background-color: $table-dark-bg; + color: $table-dark-color; + } + } + } + + &.table-dark{ + background-color: $table-dark-bg; + + &:not(.thead-light) .tabulator-header{ + border-color: $table-dark-border-color; + background-color: $table-dark-bg; + color: $table-dark-color; + + .tabulator-col{ + border-color: $table-dark-border-color; + background-color: $table-dark-bg; + color: $table-dark-color; + } + } + + .tabulator-tableHolder{ + color: $table-dark-color; + } + + + .tabulator-row{ + border-color: $table-dark-border-color; + + &:hover{ + background-color: $table-dark-hover-bg !important; + } + } + } + + &.table-striped{ + .tabulator-row{ + &:nth-child(even){ + background-color: $rowAltBackgroundColor; + + &.tabulator-selected{ + background-color:$rowSelectedBackground; + } + + &.tabulator-selectable:hover{ + background-color:$rowHoverBackground; + cursor: pointer; + } + + &.tabulator-selected:hover{ + background-color:$rowSelectedBackgroundHover; + cursor: pointer; + } + } + } + + &.table-dark{ + .tabulator-row{ + &:nth-child(even){ + background-color: $table-dark-accent-bg; + } + } + } + } + + &.table-bordered{ + border:1px solid $borderColor; + + .tabulator-header{ + .tabulator-col{ + border-right:1px solid $borderColor; + } + } + + .tabulator-tableHolder{ + .tabulator-table{ + .tabulator-row{ + .tabulator-cell{ + border-right:1px solid $borderColor; + } + } + } + } + } + + + &.table-borderless{ + .tabulator-header{ + border:none; + } + + .tabulator-row{ + border:none; + } + } + + &.table-sm{ + .tabulator-header{ + .tabulator-col{ + .tabulator-col-content{ + padding:$table-cell-padding-sm !important; + } + } + } + + .tabulator-tableHolder{ + .tabulator-table{ + .tabulator-row{ + min-height:$textSize + ($table-cell-padding-sm * 2); + + .tabulator-cell{ + padding:$table-cell-padding-sm !important; + } + } + } + } + } + + + //row colors + .tabulator-tableHolder{ + .tabulator-table{ + .tabulator-row{ + &.table-primary{ + background:theme-color-level("primary", -9) !important; + } + &.table-secondary{ + background:theme-color-level("secondary", -9) !important; + } + &.table-success{ + background:theme-color-level("success", -9) !important; + } + &.table-info{ + background:theme-color-level("info", -9) !important; + } + &.table-warning{ + background:theme-color-level("warning", -9) !important; + } + &.table-danger{ + background:theme-color-level("danger", -9) !important; + } + &.table-light{ + background:theme-color-level("light", -9) !important; + } + &.table-dark{ + background:theme-color-level("dark", -9) !important; + } + &.table-active{ + background:$table-active-bg !important; + } + + &.bg-primary{ + background:theme-color-level("primary", 0) !important; + } + &.bg-secondary{ + background:theme-color-level("secondary", 0) !important; + } + &.bg-success{ + background:theme-color-level("success", 0) !important; + } + &.bg-info{ + background:theme-color-level("info", 0) !important; + } + &.bg-warning{ + background:theme-color-level("warning", 0) !important; + } + &.bg-danger{ + background:theme-color-level("danger", 0) !important; + } + &.bg-light{ + background:theme-color-level("light", 0) !important; + } + &.bg-dark{ + background:theme-color-level("dark", 0) !important; + } + &.bg-active{ + background:$table-active-bg !important; + } + + .tabulator-cell{ + &.table-primary{ + background:theme-color-level("primary", -9) !important; + } + &.table-secondary{ + background:theme-color-level("secondary", -9) !important; + } + &.table-success{ + background:theme-color-level("success", -9) !important; + } + &.table-info{ + background:theme-color-level("info", -9) !important; + } + &.table-warning{ + background:theme-color-level("warning", -9) !important; + } + &.table-danger{ + background:theme-color-level("danger", -9) !important; + } + &.table-light{ + background:theme-color-level("light", -9) !important; + } + &.table-dark{ + background:theme-color-level("dark", -9) !important; + } + &.table-active{ + background:$table-active-bg !important; + } + + &.bg-primary{ + background:theme-color-level("primary", 0) !important; + } + &.bg-secondary{ + background:theme-color-level("secondary", 0) !important; + } + &.bg-success{ + background:theme-color-level("success", 0) !important; + } + &.bg-info{ + background:theme-color-level("info", 0) !important; + } + &.bg-warning{ + background:theme-color-level("warning", 0) !important; + } + &.bg-danger{ + background:theme-color-level("danger", 0) !important; + } + &.bg-light{ + background:theme-color-level("light", 0) !important; + } + &.bg-dark{ + background:theme-color-level("dark", 0) !important; + } + &.bg-active{ + background:$table-active-bg !important; + } + } + } + } + } + +} + +//row element +.tabulator-row{ + position: relative; + box-sizing: border-box; + + min-height:$textSize + ($cellPadding * 2); + background-color: $rowBackgroundColor; + border-bottom:1px solid $rowBorderColor; + + &.tabulator-selectable:hover{ + background-color:$rowHoverBackground; + cursor: pointer; + } + + &.tabulator-selected{ + background-color:$rowSelectedBackground; + } + + &.tabulator-selected:hover{ + background-color:$rowSelectedBackgroundHover; + cursor: pointer; + } + + &.tabulator-moving{ + position: absolute; + + border-top:1px solid $rowBorderColor; + border-bottom:1px solid $rowBorderColor; + + pointer-events: none !important; + z-index:15; + } + + //row resize handles + .tabulator-row-resize-handle{ + position:absolute; + right:0; + bottom:0; + left:0; + height:5px; + + &.prev{ + top:0; + bottom:auto; + } + + &:hover{ + cursor:ns-resize; + } + } + + .tabulator-frozen{ + display: inline-block; + position: absolute; + + background-color: inherit; + + z-index: 10; + + &.tabulator-frozen-left{ + border-right:2px solid $rowBorderColor; + } + + &.tabulator-frozen-right{ + border-left:2px solid $rowBorderColor; + } + } + + .tabulator-responsive-collapse{ + box-sizing:border-box; + + padding:5px; + + border-top:1px solid $rowBorderColor; + border-bottom:1px solid $rowBorderColor; + + &:empty{ + display:none; + } + + table{ + font-size:$textSize; + + tr{ + td{ + position: relative; + + &:first-of-type{ + padding-right:10px; + } + } + } + } + } + + //cell element + .tabulator-cell{ + display:inline-block; + position: relative; + box-sizing:border-box; + padding:$cellPadding; + vertical-align:middle; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + + &:last-of-type{ + border-right: none; + } + + &.tabulator-editing{ + border:1px solid $editBoxColor; + padding: 0; + + input, select{ + border:1px; + background:transparent; + } + } + + &.tabulator-validation-fail{ + border:1px solid $errorColor; + input, select{ + border:1px; + background:transparent; + + color: $errorColor; + } + } + + //hide left resize handle on first column + &:first-child{ + .tabulator-col-resize-handle.prev{ + display: none; + } + } + + //movable row handle + &.tabulator-row-handle{ + + display: inline-flex; + align-items:center; + + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + + //handle holder + .tabulator-row-handle-box{ + width:80%; + + //Hamburger element + .tabulator-row-handle-bar{ + width:100%; + height:3px; + margin-top:2px; + background:#666; + } + } + } + + .tabulator-data-tree-branch{ + display:inline-block; + vertical-align:middle; + + height:9px; + width:7px; + + margin-top:-9px; + margin-right:5px; + + border-bottom-left-radius:1px; + + border-left:2px solid $rowBorderColor; + border-bottom:2px solid $rowBorderColor; + } + + .tabulator-data-tree-control{ + + display:inline-flex; + justify-content:center; + align-items:center; + vertical-align:middle; + + height:11px; + width:11px; + + margin-right:5px; + + border:1px solid #ccc; + border-radius:2px; + background:rgba(0, 0, 0, .1); + + overflow:hidden; + + &:hover{ + cursor:pointer; + background:rgba(0, 0, 0, .2); + } + + .tabulator-data-tree-control-collapse{ + display:inline-block; + position: relative; + + height: 7px; + width: 1px; + + background: transparent; + + &:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + + height: 1px; + width: 7px; + + background: #ccc; + } + } + + .tabulator-data-tree-control-expand{ + display:inline-block; + position: relative; + + height: 7px; + width: 1px; + + background: #ccc; + + &:after { + position: absolute; + content: ""; + left: -3px; + top: 3px; + + height: 1px; + width: 7px; + + background: #ccc; + } + } + + } + + .tabulator-responsive-collapse-toggle{ + display: inline-flex; + align-items:center; + justify-content:center; + + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; + + height:15px; + width:15px; + + border-radius:20px; + background:#666; + + color:$rowBackgroundColor; + font-weight:bold; + font-size:1.1em; + + &:hover{ + opacity:.7; + } + + &.open{ + .tabulator-responsive-collapse-toggle-close{ + display:initial; + } + + .tabulator-responsive-collapse-toggle-open{ + display:none; + } + } + + .tabulator-responsive-collapse-toggle-close{ + display:none; + } + } + } + + //row grouping element + &.tabulator-group{ + + box-sizing:border-box; + border-bottom:1px solid #999; + border-right:1px solid $rowBorderColor; + border-top:1px solid #999; + padding:5px; + padding-left:10px; + background:#fafafa; + font-weight:bold; + + min-width: 100%; + + &:hover{ + cursor:pointer; + background-color:rgba(0,0,0,.1); + } + + &.tabulator-group-visible{ + .tabulator-arrow{ + margin-right:10px; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid $sortArrowActive; + border-bottom: 0; + } + } + + &.tabulator-group-level-1{ + .tabulator-arrow{ + margin-left:20px; + } + } + + &.tabulator-group-level-2{ + .tabulator-arrow{ + margin-left:40px; + } + } + + &.tabulator-group-level-3{ + .tabulator-arrow{ + margin-left:60px; + } + } + + &.tabulator-group-level-4{ + .tabulator-arrow{ + margin-left:80px; + } + } + + &.tabulator-group-level-5{ + .tabulator-arrow{ + margin-left:100px; + } + } + + //sorting arrow + .tabulator-arrow{ + display: inline-block; + width: 0; + height: 0; + margin-right:16px; + border-top: 6px solid transparent; + border-bottom: 6px solid transparent; + border-right: 0; + border-left: 6px solid $sortArrowActive; + vertical-align:middle; + } + + span{ + margin-left:10px; + color:#666; + } + } +} + +.tabulator-edit-select-list{ + position: absolute; + display:inline-block; + box-sizing:border-box; + + max-height:200px; + + background:$headerBackgroundColor; + border:1px solid $rowBorderColor; + + font-size:$textSize; + + overflow-y:auto; + -webkit-overflow-scrolling: touch; + + z-index: 10000; + + .tabulator-edit-select-list-item{ + padding:4px; + + &.active{ + color:$headerBackgroundColor; + background:$editBoxColor; + } + + &:hover{ + cursor:pointer; + + color:$headerBackgroundColor; + background:$editBoxColor; + } + } + + .tabulator-edit-select-list-group{ + border-bottom:1px solid $rowBorderColor; + + padding:4px; + padding-top:6px; + + font-weight:bold; + } +} \ No newline at end of file diff --git a/src/assets/scss/variables4.scss b/src/assets/scss/variables4.scss new file mode 100644 index 0000000..4544512 --- /dev/null +++ b/src/assets/scss/variables4.scss @@ -0,0 +1,930 @@ + + +// Variables +// +// Variables should follow the `$component-state-property-size` formula for +// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs. + + +// +// Color system +// + +// stylelint-disable +$white: #fff !default; +$gray-100: #f8f9fa !default; +$gray-200: #e9ecef !default; +$gray-300: #dee2e6 !default; +$gray-400: #ced4da !default; +$gray-500: #adb5bd !default; +$gray-600: #6c757d !default; +$gray-700: #495057 !default; +$gray-800: #343a40 !default; +$gray-900: #212529 !default; +$black: #000 !default; + +$grays: () !default; +$grays: map-merge(( + "100": $gray-100, + "200": $gray-200, + "300": $gray-300, + "400": $gray-400, + "500": $gray-500, + "600": $gray-600, + "700": $gray-700, + "800": $gray-800, + "900": $gray-900 +), $grays); + +$blue: #007bff !default; +$indigo: #6610f2 !default; +$purple: #6f42c1 !default; +$pink: #e83e8c !default; +$red: #dc3545 !default; +$orange: #fd7e14 !default; +$yellow: #ffc107 !default; +$green: #28a745 !default; +$teal: #20c997 !default; +$cyan: #17a2b8 !default; + +$colors: () !default; +$colors: map-merge(( + "blue": $blue, + "indigo": $indigo, + "purple": $purple, + "pink": $pink, + "red": $red, + "orange": $orange, + "yellow": $yellow, + "green": $green, + "teal": $teal, + "cyan": $cyan, + "white": $white, + "gray": $gray-600, + "gray-dark": $gray-800 +), $colors); + +$primary: $blue !default; +$secondary: $gray-600 !default; +$success: $green !default; +$info: $cyan !default; +$warning: $yellow !default; +$danger: $red !default; +$light: $gray-100 !default; +$dark: $gray-800 !default; + +$theme-colors: () !default; +$theme-colors: map-merge(( + "primary": $primary, + "secondary": $secondary, + "success": $success, + "info": $info, + "warning": $warning, + "danger": $danger, + "light": $light, + "dark": $dark +), $theme-colors); +// stylelint-enable + +// Set a specific jump point for requesting color jumps +$theme-color-interval: 8% !default; + +// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255. +$yiq-contrasted-threshold: 150 !default; + +// Customize the light and dark text colors for use in our YIQ color contrast function. +$yiq-text-dark: $gray-900 !default; +$yiq-text-light: $white !default; + +// Options +// +// Quickly modify global styling by enabling or disabling optional features. + +$enable-caret: true !default; +$enable-rounded: true !default; +$enable-shadows: false !default; +$enable-gradients: false !default; +$enable-transitions: true !default; +$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS +$enable-grid-classes: true !default; +$enable-print-styles: true !default; + + +// Spacing +// +// Control the default styling of most Bootstrap elements by modifying these +// variables. Mostly focused on spacing. +// You can add more entries to the $spacers map, should you need more variation. + +// stylelint-disable +$spacer: 1rem !default; +$spacers: () !default; +$spacers: map-merge(( + 0: 0, + 1: ($spacer * .25), + 2: ($spacer * .5), + 3: $spacer, + 4: ($spacer * 1.5), + 5: ($spacer * 3) +), $spacers); + +// This variable affects the `.h-*` and `.w-*` classes. +$sizes: () !default; +$sizes: map-merge(( + 25: 25%, + 50: 50%, + 75: 75%, + 100: 100%, + auto: auto +), $sizes); +// stylelint-enable + +// Body +// +// Settings for the `` element. + +$body-bg: $white !default; +$body-color: $gray-900 !default; + +// Links +// +// Style anchor elements. + +$link-color: theme-color("primary") !default; +$link-decoration: none !default; +$link-hover-color: darken($link-color, 15%) !default; +$link-hover-decoration: underline !default; + +// Paragraphs +// +// Style p element. + +$paragraph-margin-bottom: 1rem !default; + + +// Grid breakpoints +// +// Define the minimum dimensions at which your layout will change, +// adapting to different screen sizes, for use in media queries. + +$grid-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1200px +) !default; + +@include _assert-ascending($grid-breakpoints, "$grid-breakpoints"); +@include _assert-starts-at-zero($grid-breakpoints); + + +// Grid containers +// +// Define the maximum width of `.container` for different screen sizes. + +$container-max-widths: ( + sm: 540px, + md: 720px, + lg: 960px, + xl: 1140px +) !default; + +@include _assert-ascending($container-max-widths, "$container-max-widths"); + + +// Grid columns +// +// Set the number of columns and specify the width of the gutters. + +$grid-columns: 12 !default; +$grid-gutter-width: 30px !default; + +// Components +// +// Define common padding and border radius sizes and more. + +$line-height-lg: 1.5 !default; +$line-height-sm: 1.5 !default; + +$border-width: 1px !default; +$border-color: $gray-300 !default; + +$border-radius: .25rem !default; +$border-radius-lg: .3rem !default; +$border-radius-sm: .2rem !default; + +$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default; +$box-shadow: 0 .5rem 1rem rgba($black, .15) !default; +$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default; + +$component-active-color: $white !default; +$component-active-bg: theme-color("primary") !default; + +$caret-width: .3em !default; + +$transition-base: all .2s ease-in-out !default; +$transition-fade: opacity .15s linear !default; +$transition-collapse: height .35s ease !default; + + +// Fonts +// +// Font, line-height, and color for body text, headings, and more. + +// stylelint-disable value-keyword-case +$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; +$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default; +$font-family-base: $font-family-sans-serif !default; +// stylelint-enable value-keyword-case + +$font-size-base: 1rem !default; // Assumes the browser default, typically `16px` +$font-size-lg: ($font-size-base * 1.25) !default; +$font-size-sm: ($font-size-base * .875) !default; + +$font-weight-light: 300 !default; +$font-weight-normal: 400 !default; +$font-weight-bold: 700 !default; + +$font-weight-base: $font-weight-normal !default; +$line-height-base: 1.5 !default; + +$h1-font-size: $font-size-base * 2.5 !default; +$h2-font-size: $font-size-base * 2 !default; +$h3-font-size: $font-size-base * 1.75 !default; +$h4-font-size: $font-size-base * 1.5 !default; +$h5-font-size: $font-size-base * 1.25 !default; +$h6-font-size: $font-size-base !default; + +$headings-margin-bottom: ($spacer / 2) !default; +$headings-font-family: inherit !default; +$headings-font-weight: 500 !default; +$headings-line-height: 1.2 !default; +$headings-color: inherit !default; + +$display1-size: 6rem !default; +$display2-size: 5.5rem !default; +$display3-size: 4.5rem !default; +$display4-size: 3.5rem !default; + +$display1-weight: 300 !default; +$display2-weight: 300 !default; +$display3-weight: 300 !default; +$display4-weight: 300 !default; +$display-line-height: $headings-line-height !default; + +$lead-font-size: ($font-size-base * 1.25) !default; +$lead-font-weight: 300 !default; + +$small-font-size: 80% !default; + +$text-muted: $gray-600 !default; + +$blockquote-small-color: $gray-600 !default; +$blockquote-font-size: ($font-size-base * 1.25) !default; + +$hr-border-color: rgba($black, .1) !default; +$hr-border-width: $border-width !default; + +$mark-padding: .2em !default; + +$dt-font-weight: $font-weight-bold !default; + +$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default; +$nested-kbd-font-weight: $font-weight-bold !default; + +$list-inline-padding: .5rem !default; + +$mark-bg: #fcf8e3 !default; + +$hr-margin-y: $spacer !default; + + +// Tables +// +// Customizes the `.table` component with basic values, each used across all table variations. + +$table-cell-padding: .75rem !default; +$table-cell-padding-sm: .3rem !default; + +$table-bg: transparent !default; +$table-accent-bg: rgba($black, .05) !default; +$table-hover-bg: rgba($black, .075) !default; +$table-active-bg: $table-hover-bg !default; + +$table-border-width: $border-width !default; +$table-border-color: $gray-300 !default; + +$table-head-bg: $gray-200 !default; +$table-head-color: $gray-700 !default; + +$table-dark-bg: $gray-900 !default; +$table-dark-accent-bg: rgba($white, .05) !default; +$table-dark-hover-bg: rgba($white, .075) !default; +$table-dark-border-color: lighten($gray-900, 7.5%) !default; +$table-dark-color: $body-bg !default; + +$table-striped-order: odd !default; + +$table-caption-color: $text-muted !default; + +// Buttons + Forms +// +// Shared variables that are reassigned to `$input-` and `$btn-` specific variables. + +$input-btn-padding-y: .375rem !default; +$input-btn-padding-x: .75rem !default; +$input-btn-line-height: $line-height-base !default; + +$input-btn-focus-width: .2rem !default; +$input-btn-focus-color: rgba($component-active-bg, .25) !default; +$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default; + +$input-btn-padding-y-sm: .25rem !default; +$input-btn-padding-x-sm: .5rem !default; +$input-btn-line-height-sm: $line-height-sm !default; + +$input-btn-padding-y-lg: .5rem !default; +$input-btn-padding-x-lg: 1rem !default; +$input-btn-line-height-lg: $line-height-lg !default; + +$input-btn-border-width: $border-width !default; + + +// Buttons +// +// For each of Bootstrap's buttons, define text, background, and border color. + +$btn-padding-y: $input-btn-padding-y !default; +$btn-padding-x: $input-btn-padding-x !default; +$btn-line-height: $input-btn-line-height !default; + +$btn-padding-y-sm: $input-btn-padding-y-sm !default; +$btn-padding-x-sm: $input-btn-padding-x-sm !default; +$btn-line-height-sm: $input-btn-line-height-sm !default; + +$btn-padding-y-lg: $input-btn-padding-y-lg !default; +$btn-padding-x-lg: $input-btn-padding-x-lg !default; +$btn-line-height-lg: $input-btn-line-height-lg !default; + +$btn-border-width: $input-btn-border-width !default; + +$btn-font-weight: $font-weight-normal !default; +$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default; +$btn-focus-width: $input-btn-focus-width !default; +$btn-focus-box-shadow: $input-btn-focus-box-shadow !default; +$btn-disabled-opacity: .65 !default; +$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default; + +$btn-link-disabled-color: $gray-600 !default; + +$btn-block-spacing-y: .5rem !default; + +// Allows for customizing button radius independently from global border radius +$btn-border-radius: $border-radius !default; +$btn-border-radius-lg: $border-radius-lg !default; +$btn-border-radius-sm: $border-radius-sm !default; + +$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default; + + +// Forms + +$label-margin-bottom: .5rem !default; + +$input-padding-y: $input-btn-padding-y !default; +$input-padding-x: $input-btn-padding-x !default; +$input-line-height: $input-btn-line-height !default; + +$input-padding-y-sm: $input-btn-padding-y-sm !default; +$input-padding-x-sm: $input-btn-padding-x-sm !default; +$input-line-height-sm: $input-btn-line-height-sm !default; + +$input-padding-y-lg: $input-btn-padding-y-lg !default; +$input-padding-x-lg: $input-btn-padding-x-lg !default; +$input-line-height-lg: $input-btn-line-height-lg !default; + +$input-bg: $white !default; +$input-disabled-bg: $gray-200 !default; + +$input-color: $gray-700 !default; +$input-border-color: $gray-400 !default; +$input-border-width: $input-btn-border-width !default; +$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default; + +$input-border-radius: $border-radius !default; +$input-border-radius-lg: $border-radius-lg !default; +$input-border-radius-sm: $border-radius-sm !default; + +$input-focus-bg: $input-bg !default; +$input-focus-border-color: lighten($component-active-bg, 25%) !default; +$input-focus-color: $input-color !default; +$input-focus-width: $input-btn-focus-width !default; +$input-focus-box-shadow: $input-btn-focus-box-shadow !default; + +$input-placeholder-color: $gray-600 !default; +$input-plaintext-color: $body-color !default; + +$input-height-border: $input-border-width * 2 !default; + +$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default; +$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default; + +$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default; +$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default; + +$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default; +$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default; + +$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default; + +$form-text-margin-top: .25rem !default; + +$form-check-input-gutter: 1.25rem !default; +$form-check-input-margin-y: .3rem !default; +$form-check-input-margin-x: .25rem !default; + +$form-check-inline-margin-x: .75rem !default; +$form-check-inline-input-margin-x: .3125rem !default; + +$form-group-margin-bottom: 1rem !default; + +$input-group-addon-color: $input-color !default; +$input-group-addon-bg: $gray-200 !default; +$input-group-addon-border-color: $input-border-color !default; + +$custom-control-gutter: 1.5rem !default; +$custom-control-spacer-x: 1rem !default; + +$custom-control-indicator-size: 1rem !default; +$custom-control-indicator-bg: $gray-300 !default; +$custom-control-indicator-bg-size: 50% 50% !default; +$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default; + +$custom-control-indicator-disabled-bg: $gray-200 !default; +$custom-control-label-disabled-color: $gray-600 !default; + +$custom-control-indicator-checked-color: $component-active-color !default; +$custom-control-indicator-checked-bg: $component-active-bg !default; +$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default; +$custom-control-indicator-checked-box-shadow: none !default; + +$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default; + +$custom-control-indicator-active-color: $component-active-color !default; +$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default; +$custom-control-indicator-active-box-shadow: none !default; + +$custom-checkbox-indicator-border-radius: $border-radius !default; +$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default; + +$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default; +$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default; +$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default; +$custom-checkbox-indicator-indeterminate-box-shadow: none !default; + +$custom-radio-indicator-border-radius: 50% !default; +$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default; + +$custom-select-padding-y: .375rem !default; +$custom-select-padding-x: .75rem !default; +$custom-select-height: $input-height !default; +$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator +$custom-select-line-height: $input-btn-line-height !default; +$custom-select-color: $input-color !default; +$custom-select-disabled-color: $gray-600 !default; +$custom-select-bg: $input-bg !default; +$custom-select-disabled-bg: $gray-200 !default; +$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions +$custom-select-indicator-color: $gray-800 !default; +$custom-select-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), "#", "%23") !default; +$custom-select-border-width: $input-btn-border-width !default; +$custom-select-border-color: $input-border-color !default; +$custom-select-border-radius: $border-radius !default; + +$custom-select-focus-border-color: $input-focus-border-color !default; +$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default; + +$custom-select-font-size-sm: 75% !default; +$custom-select-height-sm: $input-height-sm !default; + +$custom-select-font-size-lg: 125% !default; +$custom-select-height-lg: $input-height-lg !default; + +$custom-range-track-width: 100% !default; +$custom-range-track-height: .5rem !default; +$custom-range-track-cursor: pointer !default; +$custom-range-track-bg: $gray-300 !default; +$custom-range-track-border-radius: 1rem !default; +$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default; + +$custom-range-thumb-width: 1rem !default; +$custom-range-thumb-height: $custom-range-thumb-width !default; +$custom-range-thumb-bg: $component-active-bg !default; +$custom-range-thumb-border: 0 !default; +$custom-range-thumb-border-radius: 1rem !default; +$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default; +$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default; +$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default; + +$custom-file-height: $input-height !default; +$custom-file-focus-border-color: $input-focus-border-color !default; +$custom-file-focus-box-shadow: $input-btn-focus-box-shadow !default; + +$custom-file-padding-y: $input-btn-padding-y !default; +$custom-file-padding-x: $input-btn-padding-x !default; +$custom-file-line-height: $input-btn-line-height !default; +$custom-file-color: $input-color !default; +$custom-file-bg: $input-bg !default; +$custom-file-border-width: $input-btn-border-width !default; +$custom-file-border-color: $input-border-color !default; +$custom-file-border-radius: $input-border-radius !default; +$custom-file-box-shadow: $input-box-shadow !default; +$custom-file-button-color: $custom-file-color !default; +$custom-file-button-bg: $input-group-addon-bg !default; +$custom-file-text: ( + en: "Browse" +) !default; + + +// Form validation +$form-feedback-margin-top: $form-text-margin-top !default; +$form-feedback-font-size: $small-font-size !default; +$form-feedback-valid-color: theme-color("success") !default; +$form-feedback-invalid-color: theme-color("danger") !default; + + +// Dropdowns +// +// Dropdown menu container and contents. + +$dropdown-min-width: 10rem !default; +$dropdown-padding-y: .5rem !default; +$dropdown-spacer: .125rem !default; +$dropdown-bg: $white !default; +$dropdown-border-color: rgba($black, .15) !default; +$dropdown-border-radius: $border-radius !default; +$dropdown-border-width: $border-width !default; +$dropdown-divider-bg: $gray-200 !default; +$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default; + +$dropdown-link-color: $gray-900 !default; +$dropdown-link-hover-color: darken($gray-900, 5%) !default; +$dropdown-link-hover-bg: $gray-100 !default; + +$dropdown-link-active-color: $component-active-color !default; +$dropdown-link-active-bg: $component-active-bg !default; + +$dropdown-link-disabled-color: $gray-600 !default; + +$dropdown-item-padding-y: .25rem !default; +$dropdown-item-padding-x: 1.5rem !default; + +$dropdown-header-color: $gray-600 !default; + + +// Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. + +$zindex-dropdown: 1000 !default; +$zindex-sticky: 1020 !default; +$zindex-fixed: 1030 !default; +$zindex-modal-backdrop: 1040 !default; +$zindex-modal: 1050 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; + +// Navs + +$nav-link-padding-y: .5rem !default; +$nav-link-padding-x: 1rem !default; +$nav-link-disabled-color: $gray-600 !default; + +$nav-tabs-border-color: $gray-300 !default; +$nav-tabs-border-width: $border-width !default; +$nav-tabs-border-radius: $border-radius !default; +$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default; +$nav-tabs-link-active-color: $gray-700 !default; +$nav-tabs-link-active-bg: $body-bg !default; +$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default; + +$nav-pills-border-radius: $border-radius !default; +$nav-pills-link-active-color: $component-active-color !default; +$nav-pills-link-active-bg: $component-active-bg !default; + +$nav-divider-color: $gray-200 !default; +$nav-divider-margin-y: ($spacer / 2) !default; + +// Navbar + +$navbar-padding-y: ($spacer / 2) !default; +$navbar-padding-x: $spacer !default; + +$navbar-nav-link-padding-x: .5rem !default; + +$navbar-brand-font-size: $font-size-lg !default; +// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link +$nav-link-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default; +$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default; +$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default; + +$navbar-toggler-padding-y: .25rem !default; +$navbar-toggler-padding-x: .75rem !default; +$navbar-toggler-font-size: $font-size-lg !default; +$navbar-toggler-border-radius: $btn-border-radius !default; + +$navbar-dark-color: rgba($white, .5) !default; +$navbar-dark-hover-color: rgba($white, .75) !default; +$navbar-dark-active-color: $white !default; +$navbar-dark-disabled-color: rgba($white, .25) !default; +$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default; +$navbar-dark-toggler-border-color: rgba($white, .1) !default; + +$navbar-light-color: rgba($black, .5) !default; +$navbar-light-hover-color: rgba($black, .7) !default; +$navbar-light-active-color: rgba($black, .9) !default; +$navbar-light-disabled-color: rgba($black, .3) !default; +$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default; +$navbar-light-toggler-border-color: rgba($black, .1) !default; + +// Pagination + +$pagination-padding-y: .5rem !default; +$pagination-padding-x: .75rem !default; +$pagination-padding-y-sm: .25rem !default; +$pagination-padding-x-sm: .5rem !default; +$pagination-padding-y-lg: .75rem !default; +$pagination-padding-x-lg: 1.5rem !default; +$pagination-line-height: 1.25 !default; + +$pagination-color: $link-color !default; +$pagination-bg: $white !default; +$pagination-border-width: $border-width !default; +$pagination-border-color: $gray-300 !default; + +$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default; +$pagination-focus-outline: 0 !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-200 !default; +$pagination-hover-border-color: $gray-300 !default; + +$pagination-active-color: $component-active-color !default; +$pagination-active-bg: $component-active-bg !default; +$pagination-active-border-color: $pagination-active-bg !default; + +$pagination-disabled-color: $gray-600 !default; +$pagination-disabled-bg: $white !default; +$pagination-disabled-border-color: $gray-300 !default; + + +// Jumbotron + +$jumbotron-padding: 2rem !default; +$jumbotron-bg: $gray-200 !default; + + +// Cards + +$card-spacer-y: .75rem !default; +$card-spacer-x: 1.25rem !default; +$card-border-width: $border-width !default; +$card-border-radius: $border-radius !default; +$card-border-color: rgba($black, .125) !default; +$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default; +$card-cap-bg: rgba($black, .03) !default; +$card-bg: $white !default; + +$card-img-overlay-padding: 1.25rem !default; + +$card-group-margin: ($grid-gutter-width / 2) !default; +$card-deck-margin: $card-group-margin !default; + +$card-columns-count: 3 !default; +$card-columns-gap: 1.25rem !default; +$card-columns-margin: $card-spacer-y !default; + + +// Tooltips + +$tooltip-font-size: $font-size-sm !default; +$tooltip-max-width: 200px !default; +$tooltip-color: $white !default; +$tooltip-bg: $black !default; +$tooltip-border-radius: $border-radius !default; +$tooltip-opacity: .9 !default; +$tooltip-padding-y: .25rem !default; +$tooltip-padding-x: .5rem !default; +$tooltip-margin: 0 !default; + +$tooltip-arrow-width: .8rem !default; +$tooltip-arrow-height: .4rem !default; +$tooltip-arrow-color: $tooltip-bg !default; + + +// Popovers + +$popover-font-size: $font-size-sm !default; +$popover-bg: $white !default; +$popover-max-width: 276px !default; +$popover-border-width: $border-width !default; +$popover-border-color: rgba($black, .2) !default; +$popover-border-radius: $border-radius-lg !default; +$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default; + +$popover-header-bg: darken($popover-bg, 3%) !default; +$popover-header-color: $headings-color !default; +$popover-header-padding-y: .5rem !default; +$popover-header-padding-x: .75rem !default; + +$popover-body-color: $body-color !default; +$popover-body-padding-y: $popover-header-padding-y !default; +$popover-body-padding-x: $popover-header-padding-x !default; + +$popover-arrow-width: 1rem !default; +$popover-arrow-height: .5rem !default; +$popover-arrow-color: $popover-bg !default; + +$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default; + + +// Badges + +$badge-font-size: 75% !default; +$badge-font-weight: $font-weight-bold !default; +$badge-padding-y: .25em !default; +$badge-padding-x: .4em !default; +$badge-border-radius: $border-radius !default; + +$badge-pill-padding-x: .6em !default; +// Use a higher than normal value to ensure completely rounded edges when +// customizing padding or font-size on labels. +$badge-pill-border-radius: 10rem !default; + + +// Modals + +// Padding applied to the modal body +$modal-inner-padding: 1rem !default; + +$modal-dialog-margin: .5rem !default; +$modal-dialog-margin-y-sm-up: 1.75rem !default; + +$modal-title-line-height: $line-height-base !default; + +$modal-content-bg: $white !default; +$modal-content-border-color: rgba($black, .2) !default; +$modal-content-border-width: $border-width !default; +$modal-content-border-radius: $border-radius-lg !default; +$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default; +$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default; + +$modal-backdrop-bg: $black !default; +$modal-backdrop-opacity: .5 !default; +$modal-header-border-color: $gray-200 !default; +$modal-footer-border-color: $modal-header-border-color !default; +$modal-header-border-width: $modal-content-border-width !default; +$modal-footer-border-width: $modal-header-border-width !default; +$modal-header-padding: 1rem !default; + +$modal-lg: 800px !default; +$modal-md: 500px !default; +$modal-sm: 300px !default; + +$modal-transition: transform .3s ease-out !default; + + +// Alerts +// +// Define alert colors, border radius, and padding. + +$alert-padding-y: .75rem !default; +$alert-padding-x: 1.25rem !default; +$alert-margin-bottom: 1rem !default; +$alert-border-radius: $border-radius !default; +$alert-link-font-weight: $font-weight-bold !default; +$alert-border-width: $border-width !default; + +$alert-bg-level: -10 !default; +$alert-border-level: -9 !default; +$alert-color-level: 6 !default; + + +// Progress bars + +$progress-height: 1rem !default; +$progress-font-size: ($font-size-base * .75) !default; +$progress-bg: $gray-200 !default; +$progress-border-radius: $border-radius !default; +$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default; +$progress-bar-color: $white !default; +$progress-bar-bg: theme-color("primary") !default; +$progress-bar-animation-timing: 1s linear infinite !default; +$progress-bar-transition: width .6s ease !default; + +// List group + +$list-group-bg: $white !default; +$list-group-border-color: rgba($black, .125) !default; +$list-group-border-width: $border-width !default; +$list-group-border-radius: $border-radius !default; + +$list-group-item-padding-y: .75rem !default; +$list-group-item-padding-x: 1.25rem !default; + +$list-group-hover-bg: $gray-100 !default; +$list-group-active-color: $component-active-color !default; +$list-group-active-bg: $component-active-bg !default; +$list-group-active-border-color: $list-group-active-bg !default; + +$list-group-disabled-color: $gray-600 !default; +$list-group-disabled-bg: $list-group-bg !default; + +$list-group-action-color: $gray-700 !default; +$list-group-action-hover-color: $list-group-action-color !default; + +$list-group-action-active-color: $body-color !default; +$list-group-action-active-bg: $gray-200 !default; + + +// Image thumbnails + +$thumbnail-padding: .25rem !default; +$thumbnail-bg: $body-bg !default; +$thumbnail-border-width: $border-width !default; +$thumbnail-border-color: $gray-300 !default; +$thumbnail-border-radius: $border-radius !default; +$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default; + + +// Figures + +$figure-caption-font-size: 90% !default; +$figure-caption-color: $gray-600 !default; + + +// Breadcrumbs + +$breadcrumb-padding-y: .75rem !default; +$breadcrumb-padding-x: 1rem !default; +$breadcrumb-item-padding: .5rem !default; + +$breadcrumb-margin-bottom: 1rem !default; + +$breadcrumb-bg: $gray-200 !default; +$breadcrumb-divider-color: $gray-600 !default; +$breadcrumb-active-color: $gray-600 !default; +$breadcrumb-divider: quote("/") !default; + +$breadcrumb-border-radius: $border-radius !default; + + +// Carousel + +$carousel-control-color: $white !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; + +$carousel-indicator-width: 30px !default; +$carousel-indicator-height: 3px !default; +$carousel-indicator-spacer: 3px !default; +$carousel-indicator-active-bg: $white !default; + +$carousel-caption-width: 70% !default; +$carousel-caption-color: $white !default; + +$carousel-control-icon-width: 20px !default; + +$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), "#", "%23") !default; +$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), "#", "%23") !default; + +$carousel-transition: transform .6s ease !default; // Define transform transition first if using multiple transitons (e.g., `transform 2s ease, opacity .5s ease-out`) + + +// Close + +$close-font-size: $font-size-base * 1.5 !default; +$close-font-weight: $font-weight-bold !default; +$close-color: $black !default; +$close-text-shadow: 0 1px 0 $white !default; + +// Code + +$code-font-size: 87.5% !default; +$code-color: $pink !default; + +$kbd-padding-y: .2rem !default; +$kbd-padding-x: .4rem !default; +$kbd-font-size: $code-font-size !default; +$kbd-color: $white !default; +$kbd-bg: $gray-900 !default; + +$pre-color: $gray-900 !default; +$pre-scrollable-max-height: 340px !default; + + +// Printing +$print-page-size: a3 !default; +$print-body-min-width: map-get($grid-breakpoints, "lg") !default; \ No newline at end of file diff --git a/src/components/AdminComponents/AdminNavBar.vue b/src/components/AdminComponents/AdminNavBar.vue new file mode 100644 index 0000000..161efc3 --- /dev/null +++ b/src/components/AdminComponents/AdminNavBar.vue @@ -0,0 +1,298 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/AuthMethodForm.vue b/src/components/AdminComponents/AuthMethodForm.vue new file mode 100755 index 0000000..8c9ef2c --- /dev/null +++ b/src/components/AdminComponents/AuthMethodForm.vue @@ -0,0 +1,129 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/AuthMethodsTable.vue b/src/components/AdminComponents/AuthMethodsTable.vue new file mode 100755 index 0000000..d68e578 --- /dev/null +++ b/src/components/AdminComponents/AuthMethodsTable.vue @@ -0,0 +1,70 @@ + + + diff --git a/src/components/AdminComponents/DefaultPermissions.vue b/src/components/AdminComponents/DefaultPermissions.vue new file mode 100755 index 0000000..8e91aab --- /dev/null +++ b/src/components/AdminComponents/DefaultPermissions.vue @@ -0,0 +1,279 @@ + + + + diff --git a/src/components/AdminComponents/GlobalSettings.vue b/src/components/AdminComponents/GlobalSettings.vue new file mode 100755 index 0000000..7af61fb --- /dev/null +++ b/src/components/AdminComponents/GlobalSettings.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/components/AdminComponents/PlatformsPanel/OrchestrationPanel.vue b/src/components/AdminComponents/PlatformsPanel/OrchestrationPanel.vue new file mode 100644 index 0000000..86cc8aa --- /dev/null +++ b/src/components/AdminComponents/PlatformsPanel/OrchestrationPanel.vue @@ -0,0 +1,142 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/PlatformsPanel/PlatformPanel.vue b/src/components/AdminComponents/PlatformsPanel/PlatformPanel.vue new file mode 100644 index 0000000..5c55c19 --- /dev/null +++ b/src/components/AdminComponents/PlatformsPanel/PlatformPanel.vue @@ -0,0 +1,142 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/PlatformsPanel/SplunkConfigForm.vue b/src/components/AdminComponents/PlatformsPanel/SplunkConfigForm.vue new file mode 100644 index 0000000..8ad021b --- /dev/null +++ b/src/components/AdminComponents/PlatformsPanel/SplunkConfigForm.vue @@ -0,0 +1,119 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/RoleForm.vue b/src/components/AdminComponents/RoleForm.vue new file mode 100755 index 0000000..88f1ed5 --- /dev/null +++ b/src/components/AdminComponents/RoleForm.vue @@ -0,0 +1,121 @@ + + + diff --git a/src/components/AdminComponents/RolesTable.vue b/src/components/AdminComponents/RolesTable.vue new file mode 100755 index 0000000..7b63eae --- /dev/null +++ b/src/components/AdminComponents/RolesTable.vue @@ -0,0 +1,67 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/StorageProviderForm.vue b/src/components/AdminComponents/StorageProviderForm.vue new file mode 100755 index 0000000..881c1b9 --- /dev/null +++ b/src/components/AdminComponents/StorageProviderForm.vue @@ -0,0 +1,120 @@ + + + \ No newline at end of file diff --git a/src/components/AdminComponents/StorageProviderTable.vue b/src/components/AdminComponents/StorageProviderTable.vue new file mode 100755 index 0000000..dff25b8 --- /dev/null +++ b/src/components/AdminComponents/StorageProviderTable.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/components/AdminComponents/UserForm.vue b/src/components/AdminComponents/UserForm.vue new file mode 100755 index 0000000..4233166 --- /dev/null +++ b/src/components/AdminComponents/UserForm.vue @@ -0,0 +1,238 @@ + + + diff --git a/src/components/AdminComponents/UsersTable.vue b/src/components/AdminComponents/UsersTable.vue new file mode 100755 index 0000000..7d469bd --- /dev/null +++ b/src/components/AdminComponents/UsersTable.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/CalendarComponents/IRCalendarComponent.vue b/src/components/CalendarComponents/IRCalendarComponent.vue new file mode 100644 index 0000000..c654dc5 --- /dev/null +++ b/src/components/CalendarComponents/IRCalendarComponent.vue @@ -0,0 +1,290 @@ + + + \ No newline at end of file diff --git a/src/components/EnrichmentPaneComponents/JsonTreePane.vue b/src/components/EnrichmentPaneComponents/JsonTreePane.vue new file mode 100644 index 0000000..d605a42 --- /dev/null +++ b/src/components/EnrichmentPaneComponents/JsonTreePane.vue @@ -0,0 +1,78 @@ + + + + \ No newline at end of file diff --git a/src/components/EnrichmentPaneComponents/LineChartPane.vue b/src/components/EnrichmentPaneComponents/LineChartPane.vue new file mode 100644 index 0000000..8600741 --- /dev/null +++ b/src/components/EnrichmentPaneComponents/LineChartPane.vue @@ -0,0 +1,53 @@ + + + \ No newline at end of file diff --git a/src/components/EnrichmentPaneComponents/MarkdownPane.vue b/src/components/EnrichmentPaneComponents/MarkdownPane.vue new file mode 100644 index 0000000..841dc78 --- /dev/null +++ b/src/components/EnrichmentPaneComponents/MarkdownPane.vue @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/src/components/EnrichmentPaneComponents/PlainTextPane.vue b/src/components/EnrichmentPaneComponents/PlainTextPane.vue new file mode 100644 index 0000000..827a2a3 --- /dev/null +++ b/src/components/EnrichmentPaneComponents/PlainTextPane.vue @@ -0,0 +1,27 @@ + + + + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CountryIconComponents/AC.vue b/src/components/EntityClassComponents/CountryIconComponents/AC.vue new file mode 100644 index 0000000..fe94013 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AC.vue @@ -0,0 +1,83 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AD.vue b/src/components/EntityClassComponents/CountryIconComponents/AD.vue new file mode 100644 index 0000000..2eeadbc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AD.vue @@ -0,0 +1,150 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AE.vue b/src/components/EntityClassComponents/CountryIconComponents/AE.vue new file mode 100644 index 0000000..65f2a4c --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AE.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AF.vue b/src/components/EntityClassComponents/CountryIconComponents/AF.vue new file mode 100644 index 0000000..17e33dc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AF.vue @@ -0,0 +1,83 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AG.vue b/src/components/EntityClassComponents/CountryIconComponents/AG.vue new file mode 100644 index 0000000..9ed1af9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AG.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AI.vue b/src/components/EntityClassComponents/CountryIconComponents/AI.vue new file mode 100644 index 0000000..35c2c23 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AI.vue @@ -0,0 +1,765 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AL.vue b/src/components/EntityClassComponents/CountryIconComponents/AL.vue new file mode 100644 index 0000000..9807059 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AL.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AM.vue b/src/components/EntityClassComponents/CountryIconComponents/AM.vue new file mode 100644 index 0000000..15234c0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AM.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AO.vue b/src/components/EntityClassComponents/CountryIconComponents/AO.vue new file mode 100644 index 0000000..9fa28a2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AO.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AQ.vue b/src/components/EntityClassComponents/CountryIconComponents/AQ.vue new file mode 100644 index 0000000..41460ca --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AQ.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AR.vue b/src/components/EntityClassComponents/CountryIconComponents/AR.vue new file mode 100644 index 0000000..e41d8cd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AR.vue @@ -0,0 +1,33 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AS.vue b/src/components/EntityClassComponents/CountryIconComponents/AS.vue new file mode 100644 index 0000000..3d95a64 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AS.vue @@ -0,0 +1,82 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AT.vue b/src/components/EntityClassComponents/CountryIconComponents/AT.vue new file mode 100644 index 0000000..7b7ccda --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AT.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AU.vue b/src/components/EntityClassComponents/CountryIconComponents/AU.vue new file mode 100644 index 0000000..5da87af --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AU.vue @@ -0,0 +1,19 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AW.vue b/src/components/EntityClassComponents/CountryIconComponents/AW.vue new file mode 100644 index 0000000..ee1ea04 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AW.vue @@ -0,0 +1,188 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AX.vue b/src/components/EntityClassComponents/CountryIconComponents/AX.vue new file mode 100644 index 0000000..2324189 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AX.vue @@ -0,0 +1,20 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/AZ.vue b/src/components/EntityClassComponents/CountryIconComponents/AZ.vue new file mode 100644 index 0000000..84fa33f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/AZ.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BA.vue b/src/components/EntityClassComponents/CountryIconComponents/BA.vue new file mode 100644 index 0000000..5565621 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BA.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BB.vue b/src/components/EntityClassComponents/CountryIconComponents/BB.vue new file mode 100644 index 0000000..51385e5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BB.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BD.vue b/src/components/EntityClassComponents/CountryIconComponents/BD.vue new file mode 100644 index 0000000..0b067de --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BD.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BE.vue b/src/components/EntityClassComponents/CountryIconComponents/BE.vue new file mode 100644 index 0000000..e0dd75a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BE.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BF.vue b/src/components/EntityClassComponents/CountryIconComponents/BF.vue new file mode 100644 index 0000000..18eaa3d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BF.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BG.vue b/src/components/EntityClassComponents/CountryIconComponents/BG.vue new file mode 100644 index 0000000..4514771 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BG.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BH.vue b/src/components/EntityClassComponents/CountryIconComponents/BH.vue new file mode 100644 index 0000000..506ef08 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BH.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BI.vue b/src/components/EntityClassComponents/CountryIconComponents/BI.vue new file mode 100644 index 0000000..561ce97 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BI.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BJ.vue b/src/components/EntityClassComponents/CountryIconComponents/BJ.vue new file mode 100644 index 0000000..9fba307 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BJ.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BL.vue b/src/components/EntityClassComponents/CountryIconComponents/BL.vue new file mode 100644 index 0000000..ae11017 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BL.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BM.vue b/src/components/EntityClassComponents/CountryIconComponents/BM.vue new file mode 100644 index 0000000..d5e4d09 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BM.vue @@ -0,0 +1,101 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BN.vue b/src/components/EntityClassComponents/CountryIconComponents/BN.vue new file mode 100644 index 0000000..dbae4aa --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BN.vue @@ -0,0 +1,38 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BO.vue b/src/components/EntityClassComponents/CountryIconComponents/BO.vue new file mode 100644 index 0000000..80e8420 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BO.vue @@ -0,0 +1,680 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BQ.vue b/src/components/EntityClassComponents/CountryIconComponents/BQ.vue new file mode 100644 index 0000000..064f68d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BQ.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BR.vue b/src/components/EntityClassComponents/CountryIconComponents/BR.vue new file mode 100644 index 0000000..d0e6393 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BR.vue @@ -0,0 +1,47 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BS.vue b/src/components/EntityClassComponents/CountryIconComponents/BS.vue new file mode 100644 index 0000000..9c6b583 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BS.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BT.vue b/src/components/EntityClassComponents/CountryIconComponents/BT.vue new file mode 100644 index 0000000..f21d325 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BT.vue @@ -0,0 +1,91 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BV.vue b/src/components/EntityClassComponents/CountryIconComponents/BV.vue new file mode 100644 index 0000000..f38d915 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BV.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BW.vue b/src/components/EntityClassComponents/CountryIconComponents/BW.vue new file mode 100644 index 0000000..9f78eee --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BW.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BY.vue b/src/components/EntityClassComponents/CountryIconComponents/BY.vue new file mode 100644 index 0000000..625f649 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BY.vue @@ -0,0 +1,24 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/BZ.vue b/src/components/EntityClassComponents/CountryIconComponents/BZ.vue new file mode 100644 index 0000000..37a3716 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/BZ.vue @@ -0,0 +1,147 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CA.vue b/src/components/EntityClassComponents/CountryIconComponents/CA.vue new file mode 100644 index 0000000..b6aba13 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CA.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CC.vue b/src/components/EntityClassComponents/CountryIconComponents/CC.vue new file mode 100644 index 0000000..ae7e506 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CC.vue @@ -0,0 +1,21 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CD.vue b/src/components/EntityClassComponents/CountryIconComponents/CD.vue new file mode 100644 index 0000000..2c153f4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CD.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CF.vue b/src/components/EntityClassComponents/CountryIconComponents/CF.vue new file mode 100644 index 0000000..30bfca9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CF.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CG.vue b/src/components/EntityClassComponents/CountryIconComponents/CG.vue new file mode 100644 index 0000000..0d5c93a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CG.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CH.vue b/src/components/EntityClassComponents/CountryIconComponents/CH.vue new file mode 100644 index 0000000..8e4d98e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CH.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CI.vue b/src/components/EntityClassComponents/CountryIconComponents/CI.vue new file mode 100644 index 0000000..b8c4333 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CI.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CK.vue b/src/components/EntityClassComponents/CountryIconComponents/CK.vue new file mode 100644 index 0000000..0849b14 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CK.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CL.vue b/src/components/EntityClassComponents/CountryIconComponents/CL.vue new file mode 100644 index 0000000..1d64ea8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CL.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CM.vue b/src/components/EntityClassComponents/CountryIconComponents/CM.vue new file mode 100644 index 0000000..091d173 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CM.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CN.vue b/src/components/EntityClassComponents/CountryIconComponents/CN.vue new file mode 100644 index 0000000..e830cf8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CN.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CO.vue b/src/components/EntityClassComponents/CountryIconComponents/CO.vue new file mode 100644 index 0000000..fe0d717 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CO.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CP.vue b/src/components/EntityClassComponents/CountryIconComponents/CP.vue new file mode 100644 index 0000000..5686fce --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CP.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CR.vue b/src/components/EntityClassComponents/CountryIconComponents/CR.vue new file mode 100644 index 0000000..1d79dff --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CR.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CU.vue b/src/components/EntityClassComponents/CountryIconComponents/CU.vue new file mode 100644 index 0000000..1ea6263 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CU.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CV.vue b/src/components/EntityClassComponents/CountryIconComponents/CV.vue new file mode 100644 index 0000000..0c28751 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CV.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CW.vue b/src/components/EntityClassComponents/CountryIconComponents/CW.vue new file mode 100644 index 0000000..94908d9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CW.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CX.vue b/src/components/EntityClassComponents/CountryIconComponents/CX.vue new file mode 100644 index 0000000..a6d4fa4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CX.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CY.vue b/src/components/EntityClassComponents/CountryIconComponents/CY.vue new file mode 100644 index 0000000..6417cc8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CY.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/CZ.vue b/src/components/EntityClassComponents/CountryIconComponents/CZ.vue new file mode 100644 index 0000000..8b1a54a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/CZ.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DE.vue b/src/components/EntityClassComponents/CountryIconComponents/DE.vue new file mode 100644 index 0000000..2ec4f44 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DE.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DG.vue b/src/components/EntityClassComponents/CountryIconComponents/DG.vue new file mode 100644 index 0000000..b7bbb75 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DG.vue @@ -0,0 +1,136 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DJ.vue b/src/components/EntityClassComponents/CountryIconComponents/DJ.vue new file mode 100644 index 0000000..75d78ac --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DJ.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DK.vue b/src/components/EntityClassComponents/CountryIconComponents/DK.vue new file mode 100644 index 0000000..fad51d7 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DK.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DM.vue b/src/components/EntityClassComponents/CountryIconComponents/DM.vue new file mode 100644 index 0000000..e0bd4d4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DM.vue @@ -0,0 +1,154 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DO.vue b/src/components/EntityClassComponents/CountryIconComponents/DO.vue new file mode 100644 index 0000000..79c506d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DO.vue @@ -0,0 +1,6747 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/DZ.vue b/src/components/EntityClassComponents/CountryIconComponents/DZ.vue new file mode 100644 index 0000000..d945337 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/DZ.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EA.vue b/src/components/EntityClassComponents/CountryIconComponents/EA.vue new file mode 100644 index 0000000..2f5624d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EA.vue @@ -0,0 +1,549 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EC.vue b/src/components/EntityClassComponents/CountryIconComponents/EC.vue new file mode 100644 index 0000000..82ebee5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EC.vue @@ -0,0 +1,140 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EE.vue b/src/components/EntityClassComponents/CountryIconComponents/EE.vue new file mode 100644 index 0000000..b30afa6 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EE.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EG.vue b/src/components/EntityClassComponents/CountryIconComponents/EG.vue new file mode 100644 index 0000000..7304176 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EG.vue @@ -0,0 +1,40 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EH.vue b/src/components/EntityClassComponents/CountryIconComponents/EH.vue new file mode 100644 index 0000000..1ff0878 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EH.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ER.vue b/src/components/EntityClassComponents/CountryIconComponents/ER.vue new file mode 100644 index 0000000..0d68f04 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ER.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ES-CT.vue b/src/components/EntityClassComponents/CountryIconComponents/ES-CT.vue new file mode 100644 index 0000000..dce376e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ES-CT.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ES-GA.vue b/src/components/EntityClassComponents/CountryIconComponents/ES-GA.vue new file mode 100644 index 0000000..1678381 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ES-GA.vue @@ -0,0 +1,191 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ES.vue b/src/components/EntityClassComponents/CountryIconComponents/ES.vue new file mode 100644 index 0000000..55d238f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ES.vue @@ -0,0 +1,549 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ET.vue b/src/components/EntityClassComponents/CountryIconComponents/ET.vue new file mode 100644 index 0000000..7e1b074 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ET.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/EU.vue b/src/components/EntityClassComponents/CountryIconComponents/EU.vue new file mode 100644 index 0000000..a9995d8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/EU.vue @@ -0,0 +1,30 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FI.vue b/src/components/EntityClassComponents/CountryIconComponents/FI.vue new file mode 100644 index 0000000..1e0220b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FI.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FJ.vue b/src/components/EntityClassComponents/CountryIconComponents/FJ.vue new file mode 100644 index 0000000..5cf92e4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FJ.vue @@ -0,0 +1,127 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FK.vue b/src/components/EntityClassComponents/CountryIconComponents/FK.vue new file mode 100644 index 0000000..807f454 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FK.vue @@ -0,0 +1,95 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FM.vue b/src/components/EntityClassComponents/CountryIconComponents/FM.vue new file mode 100644 index 0000000..cbc85a6 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FM.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FO.vue b/src/components/EntityClassComponents/CountryIconComponents/FO.vue new file mode 100644 index 0000000..b185b1e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FO.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/FR.vue b/src/components/EntityClassComponents/CountryIconComponents/FR.vue new file mode 100644 index 0000000..5efc7f9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/FR.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GA.vue b/src/components/EntityClassComponents/CountryIconComponents/GA.vue new file mode 100644 index 0000000..43189a2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GA.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GB-ENG.vue b/src/components/EntityClassComponents/CountryIconComponents/GB-ENG.vue new file mode 100644 index 0000000..9f09692 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GB-ENG.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GB-NIR.vue b/src/components/EntityClassComponents/CountryIconComponents/GB-NIR.vue new file mode 100644 index 0000000..e352bb0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GB-NIR.vue @@ -0,0 +1,133 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GB-SCT.vue b/src/components/EntityClassComponents/CountryIconComponents/GB-SCT.vue new file mode 100644 index 0000000..e9da46b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GB-SCT.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GB-WLS.vue b/src/components/EntityClassComponents/CountryIconComponents/GB-WLS.vue new file mode 100644 index 0000000..727a25e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GB-WLS.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GB.vue b/src/components/EntityClassComponents/CountryIconComponents/GB.vue new file mode 100644 index 0000000..3b32c02 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GB.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GD.vue b/src/components/EntityClassComponents/CountryIconComponents/GD.vue new file mode 100644 index 0000000..3016b40 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GD.vue @@ -0,0 +1,29 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GE.vue b/src/components/EntityClassComponents/CountryIconComponents/GE.vue new file mode 100644 index 0000000..b2a8158 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GE.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GF.vue b/src/components/EntityClassComponents/CountryIconComponents/GF.vue new file mode 100644 index 0000000..e904010 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GF.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GG.vue b/src/components/EntityClassComponents/CountryIconComponents/GG.vue new file mode 100644 index 0000000..a3da82e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GG.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GH.vue b/src/components/EntityClassComponents/CountryIconComponents/GH.vue new file mode 100644 index 0000000..a069ef4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GH.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GI.vue b/src/components/EntityClassComponents/CountryIconComponents/GI.vue new file mode 100644 index 0000000..89627b3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GI.vue @@ -0,0 +1,34 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GL.vue b/src/components/EntityClassComponents/CountryIconComponents/GL.vue new file mode 100644 index 0000000..e062aa7 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GL.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GM.vue b/src/components/EntityClassComponents/CountryIconComponents/GM.vue new file mode 100644 index 0000000..50be680 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GM.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GN.vue b/src/components/EntityClassComponents/CountryIconComponents/GN.vue new file mode 100644 index 0000000..903f6f0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GN.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GP.vue b/src/components/EntityClassComponents/CountryIconComponents/GP.vue new file mode 100644 index 0000000..9afa7b9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GP.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GQ.vue b/src/components/EntityClassComponents/CountryIconComponents/GQ.vue new file mode 100644 index 0000000..ee53671 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GQ.vue @@ -0,0 +1,25 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GR.vue b/src/components/EntityClassComponents/CountryIconComponents/GR.vue new file mode 100644 index 0000000..4251f6b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GR.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GS.vue b/src/components/EntityClassComponents/CountryIconComponents/GS.vue new file mode 100644 index 0000000..a344348 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GS.vue @@ -0,0 +1,247 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GT.vue b/src/components/EntityClassComponents/CountryIconComponents/GT.vue new file mode 100644 index 0000000..ebc9169 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GT.vue @@ -0,0 +1,206 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GU.vue b/src/components/EntityClassComponents/CountryIconComponents/GU.vue new file mode 100644 index 0000000..9fe4f60 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GU.vue @@ -0,0 +1,41 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GW.vue b/src/components/EntityClassComponents/CountryIconComponents/GW.vue new file mode 100644 index 0000000..a8eb87e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GW.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/GY.vue b/src/components/EntityClassComponents/CountryIconComponents/GY.vue new file mode 100644 index 0000000..c468ed4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/GY.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HK.vue b/src/components/EntityClassComponents/CountryIconComponents/HK.vue new file mode 100644 index 0000000..db37dcd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HK.vue @@ -0,0 +1,32 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HM.vue b/src/components/EntityClassComponents/CountryIconComponents/HM.vue new file mode 100644 index 0000000..0a8b8ba --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HM.vue @@ -0,0 +1,19 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HN.vue b/src/components/EntityClassComponents/CountryIconComponents/HN.vue new file mode 100644 index 0000000..91350de --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HN.vue @@ -0,0 +1,20 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HR.vue b/src/components/EntityClassComponents/CountryIconComponents/HR.vue new file mode 100644 index 0000000..17234e6 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HR.vue @@ -0,0 +1,58 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HT.vue b/src/components/EntityClassComponents/CountryIconComponents/HT.vue new file mode 100644 index 0000000..5566cf6 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HT.vue @@ -0,0 +1,118 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/HU.vue b/src/components/EntityClassComponents/CountryIconComponents/HU.vue new file mode 100644 index 0000000..bf3c741 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/HU.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IC.vue b/src/components/EntityClassComponents/CountryIconComponents/IC.vue new file mode 100644 index 0000000..f28f594 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IC.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ID.vue b/src/components/EntityClassComponents/CountryIconComponents/ID.vue new file mode 100644 index 0000000..3929edc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ID.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IE.vue b/src/components/EntityClassComponents/CountryIconComponents/IE.vue new file mode 100644 index 0000000..9245a43 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IE.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IL.vue b/src/components/EntityClassComponents/CountryIconComponents/IL.vue new file mode 100644 index 0000000..a020201 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IL.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IM.vue b/src/components/EntityClassComponents/CountryIconComponents/IM.vue new file mode 100644 index 0000000..4dae291 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IM.vue @@ -0,0 +1,38 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IN.vue b/src/components/EntityClassComponents/CountryIconComponents/IN.vue new file mode 100644 index 0000000..05e1abc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IN.vue @@ -0,0 +1,27 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IO.vue b/src/components/EntityClassComponents/CountryIconComponents/IO.vue new file mode 100644 index 0000000..b7bbb75 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IO.vue @@ -0,0 +1,136 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IQ.vue b/src/components/EntityClassComponents/CountryIconComponents/IQ.vue new file mode 100644 index 0000000..2fac461 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IQ.vue @@ -0,0 +1,12 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IR.vue b/src/components/EntityClassComponents/CountryIconComponents/IR.vue new file mode 100644 index 0000000..9c83afa --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IR.vue @@ -0,0 +1,221 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IS.vue b/src/components/EntityClassComponents/CountryIconComponents/IS.vue new file mode 100644 index 0000000..7ae069f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IS.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/IT.vue b/src/components/EntityClassComponents/CountryIconComponents/IT.vue new file mode 100644 index 0000000..7be219e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/IT.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/JE.vue b/src/components/EntityClassComponents/CountryIconComponents/JE.vue new file mode 100644 index 0000000..1fda6c0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/JE.vue @@ -0,0 +1,49 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/JM.vue b/src/components/EntityClassComponents/CountryIconComponents/JM.vue new file mode 100644 index 0000000..b2133d9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/JM.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/JO.vue b/src/components/EntityClassComponents/CountryIconComponents/JO.vue new file mode 100644 index 0000000..fed4aef --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/JO.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/JP.vue b/src/components/EntityClassComponents/CountryIconComponents/JP.vue new file mode 100644 index 0000000..b4630cd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/JP.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KE.vue b/src/components/EntityClassComponents/CountryIconComponents/KE.vue new file mode 100644 index 0000000..5bc4816 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KE.vue @@ -0,0 +1,25 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KG.vue b/src/components/EntityClassComponents/CountryIconComponents/KG.vue new file mode 100644 index 0000000..b01e052 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KG.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KH.vue b/src/components/EntityClassComponents/CountryIconComponents/KH.vue new file mode 100644 index 0000000..6f6f396 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KH.vue @@ -0,0 +1,63 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KI.vue b/src/components/EntityClassComponents/CountryIconComponents/KI.vue new file mode 100644 index 0000000..a4c20cf --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KI.vue @@ -0,0 +1,38 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KM.vue b/src/components/EntityClassComponents/CountryIconComponents/KM.vue new file mode 100644 index 0000000..f2f7df4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KM.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KN.vue b/src/components/EntityClassComponents/CountryIconComponents/KN.vue new file mode 100644 index 0000000..20499b5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KN.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KP.vue b/src/components/EntityClassComponents/CountryIconComponents/KP.vue new file mode 100644 index 0000000..d10a767 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KP.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KR.vue b/src/components/EntityClassComponents/CountryIconComponents/KR.vue new file mode 100644 index 0000000..a7aae2d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KR.vue @@ -0,0 +1,24 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KW.vue b/src/components/EntityClassComponents/CountryIconComponents/KW.vue new file mode 100644 index 0000000..701afb5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KW.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KY.vue b/src/components/EntityClassComponents/CountryIconComponents/KY.vue new file mode 100644 index 0000000..7fdf9c4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KY.vue @@ -0,0 +1,227 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/KZ.vue b/src/components/EntityClassComponents/CountryIconComponents/KZ.vue new file mode 100644 index 0000000..51423e1 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/KZ.vue @@ -0,0 +1,25 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LA.vue b/src/components/EntityClassComponents/CountryIconComponents/LA.vue new file mode 100644 index 0000000..37df81a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LA.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LB.vue b/src/components/EntityClassComponents/CountryIconComponents/LB.vue new file mode 100644 index 0000000..5e3d1e9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LB.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LC.vue b/src/components/EntityClassComponents/CountryIconComponents/LC.vue new file mode 100644 index 0000000..7ec8f7c --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LC.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LI.vue b/src/components/EntityClassComponents/CountryIconComponents/LI.vue new file mode 100644 index 0000000..ac5ce22 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LI.vue @@ -0,0 +1,45 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LK.vue b/src/components/EntityClassComponents/CountryIconComponents/LK.vue new file mode 100644 index 0000000..490cb89 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LK.vue @@ -0,0 +1,24 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LR.vue b/src/components/EntityClassComponents/CountryIconComponents/LR.vue new file mode 100644 index 0000000..1521ca2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LR.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LS.vue b/src/components/EntityClassComponents/CountryIconComponents/LS.vue new file mode 100644 index 0000000..66e96b3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LS.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LT.vue b/src/components/EntityClassComponents/CountryIconComponents/LT.vue new file mode 100644 index 0000000..c93819d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LT.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LU.vue b/src/components/EntityClassComponents/CountryIconComponents/LU.vue new file mode 100644 index 0000000..eecf7cf --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LU.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LV.vue b/src/components/EntityClassComponents/CountryIconComponents/LV.vue new file mode 100644 index 0000000..58a73bb --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LV.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/LY.vue b/src/components/EntityClassComponents/CountryIconComponents/LY.vue new file mode 100644 index 0000000..561d67e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/LY.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MA.vue b/src/components/EntityClassComponents/CountryIconComponents/MA.vue new file mode 100644 index 0000000..5caee97 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MA.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MC.vue b/src/components/EntityClassComponents/CountryIconComponents/MC.vue new file mode 100644 index 0000000..a1c693a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MC.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MD.vue b/src/components/EntityClassComponents/CountryIconComponents/MD.vue new file mode 100644 index 0000000..16ccc49 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MD.vue @@ -0,0 +1,73 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ME.vue b/src/components/EntityClassComponents/CountryIconComponents/ME.vue new file mode 100644 index 0000000..135fab4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ME.vue @@ -0,0 +1,120 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MF.vue b/src/components/EntityClassComponents/CountryIconComponents/MF.vue new file mode 100644 index 0000000..d6ad448 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MF.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MG.vue b/src/components/EntityClassComponents/CountryIconComponents/MG.vue new file mode 100644 index 0000000..0eba8ff --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MG.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MH.vue b/src/components/EntityClassComponents/CountryIconComponents/MH.vue new file mode 100644 index 0000000..6c7dbf5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MH.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MK.vue b/src/components/EntityClassComponents/CountryIconComponents/MK.vue new file mode 100644 index 0000000..6016d0e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MK.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ML.vue b/src/components/EntityClassComponents/CountryIconComponents/ML.vue new file mode 100644 index 0000000..2f6f0e9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ML.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MM.vue b/src/components/EntityClassComponents/CountryIconComponents/MM.vue new file mode 100644 index 0000000..39de7e0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MM.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MN.vue b/src/components/EntityClassComponents/CountryIconComponents/MN.vue new file mode 100644 index 0000000..2c41a7f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MN.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MO.vue b/src/components/EntityClassComponents/CountryIconComponents/MO.vue new file mode 100644 index 0000000..9c5fd89 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MO.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MP.vue b/src/components/EntityClassComponents/CountryIconComponents/MP.vue new file mode 100644 index 0000000..8371202 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MP.vue @@ -0,0 +1,88 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MQ.vue b/src/components/EntityClassComponents/CountryIconComponents/MQ.vue new file mode 100644 index 0000000..a8ec121 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MQ.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MR.vue b/src/components/EntityClassComponents/CountryIconComponents/MR.vue new file mode 100644 index 0000000..2ae26d3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MR.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MS.vue b/src/components/EntityClassComponents/CountryIconComponents/MS.vue new file mode 100644 index 0000000..8066bc1 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MS.vue @@ -0,0 +1,72 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MT.vue b/src/components/EntityClassComponents/CountryIconComponents/MT.vue new file mode 100644 index 0000000..eb1b84d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MT.vue @@ -0,0 +1,52 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MU.vue b/src/components/EntityClassComponents/CountryIconComponents/MU.vue new file mode 100644 index 0000000..32a007b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MU.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MV.vue b/src/components/EntityClassComponents/CountryIconComponents/MV.vue new file mode 100644 index 0000000..00d2f28 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MV.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MW.vue b/src/components/EntityClassComponents/CountryIconComponents/MW.vue new file mode 100644 index 0000000..d98d4cb --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MW.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MX.vue b/src/components/EntityClassComponents/CountryIconComponents/MX.vue new file mode 100644 index 0000000..f7c4eeb --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MX.vue @@ -0,0 +1,380 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MY.vue b/src/components/EntityClassComponents/CountryIconComponents/MY.vue new file mode 100644 index 0000000..47fb170 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MY.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/MZ.vue b/src/components/EntityClassComponents/CountryIconComponents/MZ.vue new file mode 100644 index 0000000..ae243cc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/MZ.vue @@ -0,0 +1,23 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NA.vue b/src/components/EntityClassComponents/CountryIconComponents/NA.vue new file mode 100644 index 0000000..dd8e806 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NA.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NC.vue b/src/components/EntityClassComponents/CountryIconComponents/NC.vue new file mode 100644 index 0000000..1be0f3d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NC.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NE.vue b/src/components/EntityClassComponents/CountryIconComponents/NE.vue new file mode 100644 index 0000000..6ebb3cd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NE.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NF.vue b/src/components/EntityClassComponents/CountryIconComponents/NF.vue new file mode 100644 index 0000000..b025938 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NF.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NG.vue b/src/components/EntityClassComponents/CountryIconComponents/NG.vue new file mode 100644 index 0000000..17cfd69 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NG.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NI.vue b/src/components/EntityClassComponents/CountryIconComponents/NI.vue new file mode 100644 index 0000000..f6086c4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NI.vue @@ -0,0 +1,131 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NL.vue b/src/components/EntityClassComponents/CountryIconComponents/NL.vue new file mode 100644 index 0000000..e499b85 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NL.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NO.vue b/src/components/EntityClassComponents/CountryIconComponents/NO.vue new file mode 100644 index 0000000..b7b97db --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NO.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NP.vue b/src/components/EntityClassComponents/CountryIconComponents/NP.vue new file mode 100644 index 0000000..6bafb6f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NP.vue @@ -0,0 +1,21 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NR.vue b/src/components/EntityClassComponents/CountryIconComponents/NR.vue new file mode 100644 index 0000000..b82d916 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NR.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NU.vue b/src/components/EntityClassComponents/CountryIconComponents/NU.vue new file mode 100644 index 0000000..ee5bfbc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NU.vue @@ -0,0 +1,28 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/NZ.vue b/src/components/EntityClassComponents/CountryIconComponents/NZ.vue new file mode 100644 index 0000000..96531d2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/NZ.vue @@ -0,0 +1,44 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/OM.vue b/src/components/EntityClassComponents/CountryIconComponents/OM.vue new file mode 100644 index 0000000..a3dad9e --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/OM.vue @@ -0,0 +1,117 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PA.vue b/src/components/EntityClassComponents/CountryIconComponents/PA.vue new file mode 100644 index 0000000..07fc3a9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PA.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PE.vue b/src/components/EntityClassComponents/CountryIconComponents/PE.vue new file mode 100644 index 0000000..8b3eab1 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PE.vue @@ -0,0 +1,246 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PF.vue b/src/components/EntityClassComponents/CountryIconComponents/PF.vue new file mode 100644 index 0000000..b6dbaa6 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PF.vue @@ -0,0 +1,20 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PG.vue b/src/components/EntityClassComponents/CountryIconComponents/PG.vue new file mode 100644 index 0000000..0823772 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PG.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PH.vue b/src/components/EntityClassComponents/CountryIconComponents/PH.vue new file mode 100644 index 0000000..917750b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PH.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PK.vue b/src/components/EntityClassComponents/CountryIconComponents/PK.vue new file mode 100644 index 0000000..ea390c7 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PK.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PL.vue b/src/components/EntityClassComponents/CountryIconComponents/PL.vue new file mode 100644 index 0000000..62618fd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PL.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PM.vue b/src/components/EntityClassComponents/CountryIconComponents/PM.vue new file mode 100644 index 0000000..391cb10 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PM.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PN.vue b/src/components/EntityClassComponents/CountryIconComponents/PN.vue new file mode 100644 index 0000000..ed3459d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PN.vue @@ -0,0 +1,102 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PR.vue b/src/components/EntityClassComponents/CountryIconComponents/PR.vue new file mode 100644 index 0000000..9eca275 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PR.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PS.vue b/src/components/EntityClassComponents/CountryIconComponents/PS.vue new file mode 100644 index 0000000..eff37bd --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PS.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PT.vue b/src/components/EntityClassComponents/CountryIconComponents/PT.vue new file mode 100644 index 0000000..98655d7 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PT.vue @@ -0,0 +1,59 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PW.vue b/src/components/EntityClassComponents/CountryIconComponents/PW.vue new file mode 100644 index 0000000..c53ce6d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PW.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/PY.vue b/src/components/EntityClassComponents/CountryIconComponents/PY.vue new file mode 100644 index 0000000..18c89ca --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/PY.vue @@ -0,0 +1,158 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/QA.vue b/src/components/EntityClassComponents/CountryIconComponents/QA.vue new file mode 100644 index 0000000..60181ed --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/QA.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/RE.vue b/src/components/EntityClassComponents/CountryIconComponents/RE.vue new file mode 100644 index 0000000..816b098 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/RE.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/RO.vue b/src/components/EntityClassComponents/CountryIconComponents/RO.vue new file mode 100644 index 0000000..f38b89d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/RO.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/RS.vue b/src/components/EntityClassComponents/CountryIconComponents/RS.vue new file mode 100644 index 0000000..6501b6b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/RS.vue @@ -0,0 +1,298 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/RU.vue b/src/components/EntityClassComponents/CountryIconComponents/RU.vue new file mode 100644 index 0000000..2f93c11 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/RU.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/RW.vue b/src/components/EntityClassComponents/CountryIconComponents/RW.vue new file mode 100644 index 0000000..c9ea862 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/RW.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SA.vue b/src/components/EntityClassComponents/CountryIconComponents/SA.vue new file mode 100644 index 0000000..5421a50 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SA.vue @@ -0,0 +1,28 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SB.vue b/src/components/EntityClassComponents/CountryIconComponents/SB.vue new file mode 100644 index 0000000..429fe8f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SB.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SC.vue b/src/components/EntityClassComponents/CountryIconComponents/SC.vue new file mode 100644 index 0000000..1003485 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SC.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SD.vue b/src/components/EntityClassComponents/CountryIconComponents/SD.vue new file mode 100644 index 0000000..58290e9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SD.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SE.vue b/src/components/EntityClassComponents/CountryIconComponents/SE.vue new file mode 100644 index 0000000..2123fb4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SE.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SG.vue b/src/components/EntityClassComponents/CountryIconComponents/SG.vue new file mode 100644 index 0000000..ad8725b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SG.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SH.vue b/src/components/EntityClassComponents/CountryIconComponents/SH.vue new file mode 100644 index 0000000..6a5163f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SH.vue @@ -0,0 +1,83 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SI.vue b/src/components/EntityClassComponents/CountryIconComponents/SI.vue new file mode 100644 index 0000000..bc22971 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SI.vue @@ -0,0 +1,20 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SJ.vue b/src/components/EntityClassComponents/CountryIconComponents/SJ.vue new file mode 100644 index 0000000..6a17e37 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SJ.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SK.vue b/src/components/EntityClassComponents/CountryIconComponents/SK.vue new file mode 100644 index 0000000..52f3ec1 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SK.vue @@ -0,0 +1,11 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SL.vue b/src/components/EntityClassComponents/CountryIconComponents/SL.vue new file mode 100644 index 0000000..bd59bbc --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SL.vue @@ -0,0 +1,14 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SM.vue b/src/components/EntityClassComponents/CountryIconComponents/SM.vue new file mode 100644 index 0000000..fe51a1c --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SM.vue @@ -0,0 +1,91 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SN.vue b/src/components/EntityClassComponents/CountryIconComponents/SN.vue new file mode 100644 index 0000000..fbe6d79 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SN.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SO.vue b/src/components/EntityClassComponents/CountryIconComponents/SO.vue new file mode 100644 index 0000000..d891ad5 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SO.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SR.vue b/src/components/EntityClassComponents/CountryIconComponents/SR.vue new file mode 100644 index 0000000..9444415 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SR.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SS.vue b/src/components/EntityClassComponents/CountryIconComponents/SS.vue new file mode 100644 index 0000000..0c521ab --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SS.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ST.vue b/src/components/EntityClassComponents/CountryIconComponents/ST.vue new file mode 100644 index 0000000..9037e9c --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ST.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SV.vue b/src/components/EntityClassComponents/CountryIconComponents/SV.vue new file mode 100644 index 0000000..1b98d16 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SV.vue @@ -0,0 +1,596 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SX.vue b/src/components/EntityClassComponents/CountryIconComponents/SX.vue new file mode 100644 index 0000000..a168d53 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SX.vue @@ -0,0 +1,58 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SY.vue b/src/components/EntityClassComponents/CountryIconComponents/SY.vue new file mode 100644 index 0000000..a91bd24 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SY.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/SZ.vue b/src/components/EntityClassComponents/CountryIconComponents/SZ.vue new file mode 100644 index 0000000..246de05 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/SZ.vue @@ -0,0 +1,47 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TA.vue b/src/components/EntityClassComponents/CountryIconComponents/TA.vue new file mode 100644 index 0000000..8ff1611 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TA.vue @@ -0,0 +1,83 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TC.vue b/src/components/EntityClassComponents/CountryIconComponents/TC.vue new file mode 100644 index 0000000..cfffc24 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TC.vue @@ -0,0 +1,54 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TD.vue b/src/components/EntityClassComponents/CountryIconComponents/TD.vue new file mode 100644 index 0000000..3700016 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TD.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TF.vue b/src/components/EntityClassComponents/CountryIconComponents/TF.vue new file mode 100644 index 0000000..c9f14e8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TF.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TG.vue b/src/components/EntityClassComponents/CountryIconComponents/TG.vue new file mode 100644 index 0000000..0676c10 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TG.vue @@ -0,0 +1,16 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TH.vue b/src/components/EntityClassComponents/CountryIconComponents/TH.vue new file mode 100644 index 0000000..9324b83 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TH.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TJ.vue b/src/components/EntityClassComponents/CountryIconComponents/TJ.vue new file mode 100644 index 0000000..2570903 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TJ.vue @@ -0,0 +1,28 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TK.vue b/src/components/EntityClassComponents/CountryIconComponents/TK.vue new file mode 100644 index 0000000..5b8d8b3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TK.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TL.vue b/src/components/EntityClassComponents/CountryIconComponents/TL.vue new file mode 100644 index 0000000..3e243b1 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TL.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TM.vue b/src/components/EntityClassComponents/CountryIconComponents/TM.vue new file mode 100644 index 0000000..ecb0571 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TM.vue @@ -0,0 +1,205 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TN.vue b/src/components/EntityClassComponents/CountryIconComponents/TN.vue new file mode 100644 index 0000000..795c0f2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TN.vue @@ -0,0 +1,15 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TO.vue b/src/components/EntityClassComponents/CountryIconComponents/TO.vue new file mode 100644 index 0000000..9d4c3c3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TO.vue @@ -0,0 +1,12 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TR.vue b/src/components/EntityClassComponents/CountryIconComponents/TR.vue new file mode 100644 index 0000000..4c4eab4 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TR.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TT.vue b/src/components/EntityClassComponents/CountryIconComponents/TT.vue new file mode 100644 index 0000000..ae15f63 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TT.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TV.vue b/src/components/EntityClassComponents/CountryIconComponents/TV.vue new file mode 100644 index 0000000..018bba2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TV.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TW.vue b/src/components/EntityClassComponents/CountryIconComponents/TW.vue new file mode 100644 index 0000000..2f48b1f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TW.vue @@ -0,0 +1,34 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/TZ.vue b/src/components/EntityClassComponents/CountryIconComponents/TZ.vue new file mode 100644 index 0000000..b4b79d8 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/TZ.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UA.vue b/src/components/EntityClassComponents/CountryIconComponents/UA.vue new file mode 100644 index 0000000..38e9727 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UA.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UG.vue b/src/components/EntityClassComponents/CountryIconComponents/UG.vue new file mode 100644 index 0000000..a5fcf4b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UG.vue @@ -0,0 +1,32 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UM.vue b/src/components/EntityClassComponents/CountryIconComponents/UM.vue new file mode 100644 index 0000000..2d0a954 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UM.vue @@ -0,0 +1,17 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UN.vue b/src/components/EntityClassComponents/CountryIconComponents/UN.vue new file mode 100644 index 0000000..c6e982c --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UN.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/US.vue b/src/components/EntityClassComponents/CountryIconComponents/US.vue new file mode 100644 index 0000000..37ccbbe --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/US.vue @@ -0,0 +1,12 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UY.vue b/src/components/EntityClassComponents/CountryIconComponents/UY.vue new file mode 100644 index 0000000..77bd109 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UY.vue @@ -0,0 +1,30 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/UZ.vue b/src/components/EntityClassComponents/CountryIconComponents/UZ.vue new file mode 100644 index 0000000..dca615b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/UZ.vue @@ -0,0 +1,32 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VA.vue b/src/components/EntityClassComponents/CountryIconComponents/VA.vue new file mode 100644 index 0000000..144f253 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VA.vue @@ -0,0 +1,481 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VC.vue b/src/components/EntityClassComponents/CountryIconComponents/VC.vue new file mode 100644 index 0000000..fb2bfc3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VC.vue @@ -0,0 +1,10 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VE.vue b/src/components/EntityClassComponents/CountryIconComponents/VE.vue new file mode 100644 index 0000000..ed400ad --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VE.vue @@ -0,0 +1,28 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VG.vue b/src/components/EntityClassComponents/CountryIconComponents/VG.vue new file mode 100644 index 0000000..a559994 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VG.vue @@ -0,0 +1,129 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VI.vue b/src/components/EntityClassComponents/CountryIconComponents/VI.vue new file mode 100644 index 0000000..addf7b0 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VI.vue @@ -0,0 +1,30 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VN.vue b/src/components/EntityClassComponents/CountryIconComponents/VN.vue new file mode 100644 index 0000000..cb198a3 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VN.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/VU.vue b/src/components/EntityClassComponents/CountryIconComponents/VU.vue new file mode 100644 index 0000000..2baf78b --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/VU.vue @@ -0,0 +1,20 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/WF.vue b/src/components/EntityClassComponents/CountryIconComponents/WF.vue new file mode 100644 index 0000000..27e9d6d --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/WF.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/WS.vue b/src/components/EntityClassComponents/CountryIconComponents/WS.vue new file mode 100644 index 0000000..bf8d83a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/WS.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/XK.vue b/src/components/EntityClassComponents/CountryIconComponents/XK.vue new file mode 100644 index 0000000..80d1c4f --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/XK.vue @@ -0,0 +1,18 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/XX.vue b/src/components/EntityClassComponents/CountryIconComponents/XX.vue new file mode 100644 index 0000000..34a73ed --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/XX.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/YE.vue b/src/components/EntityClassComponents/CountryIconComponents/YE.vue new file mode 100644 index 0000000..c0d245a --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/YE.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/YT.vue b/src/components/EntityClassComponents/CountryIconComponents/YT.vue new file mode 100644 index 0000000..51e2486 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/YT.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ZA.vue b/src/components/EntityClassComponents/CountryIconComponents/ZA.vue new file mode 100644 index 0000000..215d5a2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ZA.vue @@ -0,0 +1,19 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ZM.vue b/src/components/EntityClassComponents/CountryIconComponents/ZM.vue new file mode 100644 index 0000000..6af40a9 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ZM.vue @@ -0,0 +1,29 @@ + diff --git a/src/components/EntityClassComponents/CountryIconComponents/ZW.vue b/src/components/EntityClassComponents/CountryIconComponents/ZW.vue new file mode 100644 index 0000000..211dae2 --- /dev/null +++ b/src/components/EntityClassComponents/CountryIconComponents/ZW.vue @@ -0,0 +1,23 @@ + diff --git a/src/components/EntityClassComponents/CyberIconComponents/AnonymousIPIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/AnonymousIPIcon.vue new file mode 100644 index 0000000..259a4f8 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/AnonymousIPIcon.vue @@ -0,0 +1,44 @@ + diff --git a/src/components/EntityClassComponents/CyberIconComponents/FireWallIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/FireWallIcon.vue new file mode 100644 index 0000000..c16daf6 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/FireWallIcon.vue @@ -0,0 +1,147 @@ + diff --git a/src/components/EntityClassComponents/CyberIconComponents/KEVIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/KEVIcon.vue new file mode 100755 index 0000000..d2ddc64 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/KEVIcon.vue @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ProxyIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/ProxyIcon.vue new file mode 100644 index 0000000..9e2fe3b --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ProxyIcon.vue @@ -0,0 +1,1159 @@ + diff --git a/src/components/EntityClassComponents/CyberIconComponents/SandiaThunderBirdIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/SandiaThunderBirdIcon.vue new file mode 100644 index 0000000..790de89 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/SandiaThunderBirdIcon.vue @@ -0,0 +1,58 @@ + + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ScannerIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/ScannerIcon.vue new file mode 100644 index 0000000..259a4f8 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ScannerIcon.vue @@ -0,0 +1,44 @@ + diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIcon.vue new file mode 100755 index 0000000..fbe02f3 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIcon.vue @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconBlue.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconBlue.vue new file mode 100755 index 0000000..2e05813 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconBlue.vue @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconRed.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconRed.vue new file mode 100755 index 0000000..20d9ec6 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorIconRed.vue @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIcon.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIcon.vue new file mode 100755 index 0000000..8b3d87b --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIcon.vue @@ -0,0 +1,148 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconBlue.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconBlue.vue new file mode 100755 index 0000000..fd6cee2 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconBlue.vue @@ -0,0 +1,148 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconRed.vue b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconRed.vue new file mode 100755 index 0000000..cd65020 --- /dev/null +++ b/src/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconRed.vue @@ -0,0 +1,148 @@ + \ No newline at end of file diff --git a/src/components/EntityClassComponents/EntityClassIconComboBox.vue b/src/components/EntityClassComponents/EntityClassIconComboBox.vue new file mode 100644 index 0000000..a79aabd --- /dev/null +++ b/src/components/EntityClassComponents/EntityClassIconComboBox.vue @@ -0,0 +1,145 @@ + + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/AddTagSourceDialog.vue b/src/components/IRElementComponents/AddTagSourceDialog.vue new file mode 100755 index 0000000..d7d5153 --- /dev/null +++ b/src/components/IRElementComponents/AddTagSourceDialog.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/EntryEntityDialog.vue b/src/components/IRElementComponents/EntryEntityDialog.vue new file mode 100755 index 0000000..79ccf13 --- /dev/null +++ b/src/components/IRElementComponents/EntryEntityDialog.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/HistoryDialog.vue b/src/components/IRElementComponents/HistoryDialog.vue new file mode 100755 index 0000000..a02462c --- /dev/null +++ b/src/components/IRElementComponents/HistoryDialog.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/MetaCard.vue b/src/components/IRElementComponents/MetaCard.vue new file mode 100644 index 0000000..cea66ed --- /dev/null +++ b/src/components/IRElementComponents/MetaCard.vue @@ -0,0 +1,1371 @@ + + + + diff --git a/src/components/IRElementComponents/NewEntityMenu.vue b/src/components/IRElementComponents/NewEntityMenu.vue new file mode 100644 index 0000000..ecf576b --- /dev/null +++ b/src/components/IRElementComponents/NewEntityMenu.vue @@ -0,0 +1,99 @@ + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/PermissionsPicker.vue b/src/components/IRElementComponents/PermissionsPicker.vue new file mode 100755 index 0000000..6adc172 --- /dev/null +++ b/src/components/IRElementComponents/PermissionsPicker.vue @@ -0,0 +1,168 @@ + + + \ No newline at end of file diff --git a/src/components/IRElementComponents/SelectedIRElement.vue b/src/components/IRElementComponents/SelectedIRElement.vue new file mode 100644 index 0000000..dadb542 --- /dev/null +++ b/src/components/IRElementComponents/SelectedIRElement.vue @@ -0,0 +1,387 @@ + + + + + diff --git a/src/components/IRElementComponents/TLPPicker.vue b/src/components/IRElementComponents/TLPPicker.vue new file mode 100755 index 0000000..8f3734b --- /dev/null +++ b/src/components/IRElementComponents/TLPPicker.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/src/components/InboxComponents/InboxElements/AlertInboxElement.vue b/src/components/InboxComponents/InboxElements/AlertInboxElement.vue new file mode 100644 index 0000000..fd7146a --- /dev/null +++ b/src/components/InboxComponents/InboxElements/AlertInboxElement.vue @@ -0,0 +1,106 @@ + + + \ No newline at end of file diff --git a/src/components/InboxComponents/InboxElements/EventInboxElement.vue b/src/components/InboxComponents/InboxElements/EventInboxElement.vue new file mode 100644 index 0000000..163d225 --- /dev/null +++ b/src/components/InboxComponents/InboxElements/EventInboxElement.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/components/InboxComponents/InboxNavDrawer.vue b/src/components/InboxComponents/InboxNavDrawer.vue new file mode 100644 index 0000000..b9b2a6d --- /dev/null +++ b/src/components/InboxComponents/InboxNavDrawer.vue @@ -0,0 +1,121 @@ + + + diff --git a/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellEdit.vue b/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellEdit.vue new file mode 100644 index 0000000..efa02a1 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellEdit.vue @@ -0,0 +1,102 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellView.vue b/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellView.vue new file mode 100644 index 0000000..5dc6160 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/ActionCell/ActionCellView.vue @@ -0,0 +1,60 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/EntryCell.vue b/src/components/JournalComponents/EntryCellComponents/EntryCell.vue new file mode 100644 index 0000000..73562bc --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/EntryCell.vue @@ -0,0 +1,245 @@ + + + + + + + + + + + + diff --git a/src/components/JournalComponents/EntryCellComponents/EntryCellViewSystemBar.vue b/src/components/JournalComponents/EntryCellComponents/EntryCellViewSystemBar.vue new file mode 100644 index 0000000..2c7d132 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/EntryCellViewSystemBar.vue @@ -0,0 +1,391 @@ + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/FullScreenEntryCell.vue b/src/components/JournalComponents/EntryCellComponents/FullScreenEntryCell.vue new file mode 100644 index 0000000..c85f9f9 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/FullScreenEntryCell.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/PromotedCell/PromotedCellView.vue b/src/components/JournalComponents/EntryCellComponents/PromotedCell/PromotedCellView.vue new file mode 100644 index 0000000..cff22d6 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/PromotedCell/PromotedCellView.vue @@ -0,0 +1,288 @@ + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/SummaryCell/SummaryCellView.vue b/src/components/JournalComponents/EntryCellComponents/SummaryCell/SummaryCellView.vue new file mode 100644 index 0000000..b22e17e --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/SummaryCell/SummaryCellView.vue @@ -0,0 +1,54 @@ + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorCancelPlugin.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorCancelPlugin.js new file mode 100644 index 0000000..ac257d6 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorCancelPlugin.js @@ -0,0 +1,29 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; +import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview'; +import cancelIcon from '@ckeditor/ckeditor5-core/theme/icons/cancel.svg' +class EditorCancelPlugin extends Plugin { + init() { + const editor = this.editor; + + editor.ui.componentFactory.add( 'editorCancelPlugin', locale => { + const view = new ButtonView( locale ); + + view.set( { + label: 'Cancel', + icon: cancelIcon, + tooltip: true, + withText: true, + class: "mb-n9 large-right-neg-margin red--text" // Somewhat-evil margin hacking (button must be on right of top toolbar row to work) + } ); + + view.on( 'execute', () => { + window.journal.$root.$emit(`onEditorCancel+${this.editor.entryId}+${this.editor.fullScreen}`, this.editor.entryId) + + } ); + + return view; + } ); + } +} + +export default EditorCancelPlugin; \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorSavePlugin.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorSavePlugin.js new file mode 100644 index 0000000..3270472 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorSavePlugin.js @@ -0,0 +1,31 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; +import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview'; +import pencilIcon from '@ckeditor/ckeditor5-core/theme/icons/check.svg' +class EditorSavePlugin extends Plugin { + init() { + const editor = this.editor; + editor.ui.componentFactory.add( 'editorSavePlugin', locale => { + const view = new ButtonView( locale ); + + view.set( { + label: 'Submit', + icon: pencilIcon, + tooltip: true, + withText: true, + class: "ml-auto mb-n9 green--text" // Somewhat-evil margin hacking (button must be on left of top toolbar row to work) + } ); + + view.on('execute', () => { + this.editor.getData() // Force data update before we save + view.isEnabled = false + window.journal.$root.$emit(`onEditorSave+${this.editor.entryId}+${this.editor.fullScreen}`, + { entryId: this.editor.entryId, submitButtonView: view }) + }); + + + return view; + } ); + } +} + +export default EditorSavePlugin; \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairComponent.vue b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairComponent.vue new file mode 100644 index 0000000..2843c54 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairComponent.vue @@ -0,0 +1,183 @@ + + + + + + diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPlugin.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPlugin.js new file mode 100644 index 0000000..a3d761e --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPlugin.js @@ -0,0 +1,10 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin' +import FlairPluginEditing from './FlairPluginEditing' +import FlairPluginUI from './FlairPluginUI' + +export default class FlairPlugin extends Plugin{ + + static get requires() { + return [FlairPluginEditing, FlairPluginUI] + } +} \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginEditing.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginEditing.js new file mode 100644 index 0000000..cf96552 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginEditing.js @@ -0,0 +1,83 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin' +import Widget from '@ckeditor/ckeditor5-widget/src/widget' +import { toWidget } from '@ckeditor/ckeditor5-widget/src/utils' +import store from '@/store' +import Vue from 'vue' +import Vuetify from 'vuetify/lib' +import { EntryClassEnum, IRElement, IRElementQuickButton, IRElementType, Entry, NewEntry, IRElementStatus} from '@/store/modules/IRElements/types' +export default class FlairPluginEditing extends Plugin { + static get requires(){ + return [Widget] + } +init(){ + this._defineSchema() + this._defineConverters() +} + +_defineSchema() { + const schema = this.editor.model.schema + schema.register('flairEntity', { + allowWhere: ['$text', 'flairEntity'], + isInline: true, + isObject: true, + allowAttributes: ['id', 'value', 'type'] + }); +} + +_defineConverters(){ + const conversion = this.editor.conversion + + + conversion + .for('upcast') + .elementToElement({ + view:{ + name:'span', + classes: ['entity'] + }, + model: ( viewElement, { writer } ) => { + let flairChildren = [] + const value = viewElement.getAttribute('data-entity-value') + const type = viewElement.getAttribute('data-entity-type') + + if (viewElement.childCount > 1) + { + flairChildren = viewElement._children.filter((el) => el._classes != undefined && el._classes.has('entity')) + flairChildren = flairChildren.map((el) => { + + return {value: el.getAttribute('data-entity-value'), type: el.getAttribute('data-entity-type')} + + } ) + } + const flairEntityElement = writer.createElement( 'flairEntity', + { value: value, type: type, children: JSON.stringify(flairChildren) + }) + return flairEntityElement + } + }) + + conversion + .for( 'editingDowncast' ) + .elementToElement( { + model: 'flairEntity', + view: ( modelItem, { writer:viewWriter } ) => createFlairEntityView(this.editor, modelItem, viewWriter) + + } ); + + + conversion.for('dataDowncast').elementToElement({ + model: 'flairEntity', + view: (modelItem, {writer: viewWriter}) => createFlairEntityView(this.editor, modelItem, viewWriter) + }) + + function createFlairEntityView(editor, modelItem, viewWriter){ + const type = modelItem.getAttribute('type') + const value = modelItem.getAttribute('value') + const children = modelItem.getAttribute('children') + const flairView = viewWriter.createRawElement( 'span', { class:'entityFlair', value:value, type:type, children:children}) + return flairView + } + +} + +} \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginUI.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginUI.js new file mode 100644 index 0000000..2ac60ba --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPluginUI.js @@ -0,0 +1,8 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin' + +export default class FlairPluginUI extends Plugin { +init(){ + //console.log('FlairPluginUI init() got called') +} + +} \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairedTextComponent.vue b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairedTextComponent.vue new file mode 100755 index 0000000..87a9cc1 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairedTextComponent.vue @@ -0,0 +1,99 @@ + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellEdit.vue b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellEdit.vue new file mode 100644 index 0000000..fdb05ac --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellEdit.vue @@ -0,0 +1,468 @@ + + + + + + diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellView.vue b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellView.vue new file mode 100644 index 0000000..d6eeec3 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/WYSIWYGCellView.vue @@ -0,0 +1,146 @@ + + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/imageUploadPlugin.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/imageUploadPlugin.js new file mode 100755 index 0000000..3629ed6 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/imageUploadPlugin.js @@ -0,0 +1,53 @@ +import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; +import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository'; + +export default class ScotUploadAdapter extends Plugin { + static get requires() { + return [FileRepository] + } + + static get pluginName() { + return 'ScotUploadAdapter' + } + + init() { + const options = this.editor.config.get('scotUpload') + this.editor.plugins.get(FileRepository).createUploadAdapter = loader => { + return new Adapter(loader, options) + } + } +} + +class Adapter { + constructor(loader, options) { + this.loader = loader + this.options = options + } + + upload() { + return this.loader.file.then(file => new Promise((resolve, reject) => { + this.abortController = new AbortController(); + const progressCallback = (evt) => { + if (evt.lengthComputable) { + this.loader.uploadTotal = evt.total; + this.loader.uploaded = evt.loaded; + } + } + try { + this.options.uploadFunction(file, progressCallback, this.abortController).then(resp => { + const urls = { "default": process.env.VUE_APP_API_BASE + "/file/download/" + resp.data.id.toString() } + resolve({ urls, ...resp }) + }) + } + catch (e) { + reject("Failed to upload file: " + file.name + " Error: " + e) + } + })) + } + + abort() { + if (this.abortController) { + this.abortController.abort() + } + } +} \ No newline at end of file diff --git a/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/uploadPlugin.js b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/uploadPlugin.js new file mode 100644 index 0000000..5785a59 --- /dev/null +++ b/src/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/uploadPlugin.js @@ -0,0 +1,62 @@ +import Plugin from "@ckeditor/ckeditor5-core/src/plugin"; +import ButtonView from "@ckeditor/ckeditor5-ui/src/button/buttonview"; +import icon from "@ckeditor/ckeditor5-ckfinder/theme/icons/browse-files.svg"; + +export default class InsertFile extends Plugin { + init() { + const editor = this.editor; + editor.editing.view.document.on( + "drop", + async (event, data) => { + if ( + data.dataTransfer.files && + !data.dataTransfer.files[0].type.includes("image") + ) { + event.stop(); + data.preventDefault(); + this.insert(data.dataTransfer.files[0], editor); + } + }, + { priority: "high" } + ); + + editor.editing.view.document.on( + "dragover", + (event, data) => { + event.stop(); + data.preventDefault(); + }, + { priority: "high" } + ); + + editor.ui.componentFactory.add("insertFile", (locale) => { + const inputElement = document.createElement("input"); + inputElement.type = "file"; + inputElement.accept = + ".doc,.docx,.pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf"; + inputElement.addEventListener("change", (event) => { + this.insert(event.target.files[0], editor); + }); + + const view = new ButtonView(locale); + + view.set({ + label: "Insert file", + icon: icon, + tooltip: true, + }); + + view.on("execute", () => { + inputElement.dispatchEvent(new MouseEvent("click")); + }); + + return view; + }); + } + + insert(file, editor) { + if (file) { + console.log('HERE I SHOULD INSERT') + } + } +} diff --git a/src/components/JournalComponents/Journal.vue b/src/components/JournalComponents/Journal.vue new file mode 100644 index 0000000..38e85d5 --- /dev/null +++ b/src/components/JournalComponents/Journal.vue @@ -0,0 +1,155 @@ + + + + + + \ No newline at end of file diff --git a/src/components/JournalComponents/LinkedElementJournal.vue b/src/components/JournalComponents/LinkedElementJournal.vue new file mode 100644 index 0000000..a7ce807 --- /dev/null +++ b/src/components/JournalComponents/LinkedElementJournal.vue @@ -0,0 +1,53 @@ + + + + + + + + \ No newline at end of file diff --git a/src/components/NavigationComponents/ScotExternalLinks.vue b/src/components/NavigationComponents/ScotExternalLinks.vue new file mode 100644 index 0000000..47b6d12 --- /dev/null +++ b/src/components/NavigationComponents/ScotExternalLinks.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/src/components/NavigationComponents/ScotNavBar.vue b/src/components/NavigationComponents/ScotNavBar.vue new file mode 100644 index 0000000..e7a48f1 --- /dev/null +++ b/src/components/NavigationComponents/ScotNavBar.vue @@ -0,0 +1,332 @@ + + + + diff --git a/src/components/PaneComponents/AlertTablePaneVuetify.vue b/src/components/PaneComponents/AlertTablePaneVuetify.vue new file mode 100644 index 0000000..6c88256 --- /dev/null +++ b/src/components/PaneComponents/AlertTablePaneVuetify.vue @@ -0,0 +1,398 @@ + + + + + diff --git a/src/components/PaneComponents/EditEntityClassPane.vue b/src/components/PaneComponents/EditEntityClassPane.vue new file mode 100755 index 0000000..f2f2b9d --- /dev/null +++ b/src/components/PaneComponents/EditEntityClassPane.vue @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EditFeedPane.vue b/src/components/PaneComponents/EditFeedPane.vue new file mode 100755 index 0000000..feb0157 --- /dev/null +++ b/src/components/PaneComponents/EditFeedPane.vue @@ -0,0 +1,73 @@ + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EditIncidentPane.vue b/src/components/PaneComponents/EditIncidentPane.vue new file mode 100755 index 0000000..6fa8c54 --- /dev/null +++ b/src/components/PaneComponents/EditIncidentPane.vue @@ -0,0 +1,311 @@ + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EditPivotPane.vue b/src/components/PaneComponents/EditPivotPane.vue new file mode 100755 index 0000000..69278c3 --- /dev/null +++ b/src/components/PaneComponents/EditPivotPane.vue @@ -0,0 +1,153 @@ + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EditSignaturePane.vue b/src/components/PaneComponents/EditSignaturePane.vue new file mode 100755 index 0000000..356ffd9 --- /dev/null +++ b/src/components/PaneComponents/EditSignaturePane.vue @@ -0,0 +1,106 @@ + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EntitiesPane.vue b/src/components/PaneComponents/EntitiesPane.vue new file mode 100644 index 0000000..d62bc07 --- /dev/null +++ b/src/components/PaneComponents/EntitiesPane.vue @@ -0,0 +1,165 @@ + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/EntityAppearancesPane.vue b/src/components/PaneComponents/EntityAppearancesPane.vue new file mode 100644 index 0000000..7706cb0 --- /dev/null +++ b/src/components/PaneComponents/EntityAppearancesPane.vue @@ -0,0 +1,139 @@ + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/FilesPane.vue b/src/components/PaneComponents/FilesPane.vue new file mode 100644 index 0000000..d50ea04 --- /dev/null +++ b/src/components/PaneComponents/FilesPane.vue @@ -0,0 +1,110 @@ + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/FlairPane.vue b/src/components/PaneComponents/FlairPane.vue new file mode 100644 index 0000000..cbec434 --- /dev/null +++ b/src/components/PaneComponents/FlairPane.vue @@ -0,0 +1,251 @@ + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/GuideSignaturesPane.vue b/src/components/PaneComponents/GuideSignaturesPane.vue new file mode 100755 index 0000000..ccdae37 --- /dev/null +++ b/src/components/PaneComponents/GuideSignaturesPane.vue @@ -0,0 +1,127 @@ + + + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/GuidesPane.vue b/src/components/PaneComponents/GuidesPane.vue new file mode 100644 index 0000000..6aae48d --- /dev/null +++ b/src/components/PaneComponents/GuidesPane.vue @@ -0,0 +1,152 @@ + + + + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/PromotedAlertsPane.vue b/src/components/PaneComponents/PromotedAlertsPane.vue new file mode 100755 index 0000000..d45b2ec --- /dev/null +++ b/src/components/PaneComponents/PromotedAlertsPane.vue @@ -0,0 +1,224 @@ + + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/SignatureBodyPane.vue b/src/components/PaneComponents/SignatureBodyPane.vue new file mode 100755 index 0000000..97dc692 --- /dev/null +++ b/src/components/PaneComponents/SignatureBodyPane.vue @@ -0,0 +1,68 @@ + + + \ No newline at end of file diff --git a/src/components/PaneComponents/SignatureStatsPane.vue b/src/components/PaneComponents/SignatureStatsPane.vue new file mode 100755 index 0000000..f64f5e2 --- /dev/null +++ b/src/components/PaneComponents/SignatureStatsPane.vue @@ -0,0 +1,96 @@ + + + + \ No newline at end of file diff --git a/src/components/PaneComponents/SignaturesPane.vue b/src/components/PaneComponents/SignaturesPane.vue new file mode 100644 index 0000000..d1514ec --- /dev/null +++ b/src/components/PaneComponents/SignaturesPane.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file diff --git a/src/components/PivotComponents/PivotAttachEntityClass.vue b/src/components/PivotComponents/PivotAttachEntityClass.vue new file mode 100644 index 0000000..e28a225 --- /dev/null +++ b/src/components/PivotComponents/PivotAttachEntityClass.vue @@ -0,0 +1,158 @@ + + + + \ No newline at end of file diff --git a/src/components/PivotComponents/PivotAttachEntityType.vue b/src/components/PivotComponents/PivotAttachEntityType.vue new file mode 100644 index 0000000..47ea33f --- /dev/null +++ b/src/components/PivotComponents/PivotAttachEntityType.vue @@ -0,0 +1,149 @@ + + + + \ No newline at end of file diff --git a/src/components/QueueTableComponents/QueueTableVuetify.vue b/src/components/QueueTableComponents/QueueTableVuetify.vue new file mode 100644 index 0000000..9384e27 --- /dev/null +++ b/src/components/QueueTableComponents/QueueTableVuetify.vue @@ -0,0 +1,863 @@ + + + + + diff --git a/src/components/ThreatModelComponents/MitreICSModel.vue b/src/components/ThreatModelComponents/MitreICSModel.vue new file mode 100644 index 0000000..efbb8d7 --- /dev/null +++ b/src/components/ThreatModelComponents/MitreICSModel.vue @@ -0,0 +1,122 @@ + + + \ No newline at end of file diff --git a/src/components/ThreatModelComponents/MitreModel.vue b/src/components/ThreatModelComponents/MitreModel.vue new file mode 100644 index 0000000..cb6c120 --- /dev/null +++ b/src/components/ThreatModelComponents/MitreModel.vue @@ -0,0 +1,120 @@ + + + \ No newline at end of file diff --git a/src/components/UserSettingsComponent/ApiKeys.vue b/src/components/UserSettingsComponent/ApiKeys.vue new file mode 100755 index 0000000..5b729b4 --- /dev/null +++ b/src/components/UserSettingsComponent/ApiKeys.vue @@ -0,0 +1,117 @@ + + + \ No newline at end of file diff --git a/src/components/UserSettingsComponent/AuditLogs.vue b/src/components/UserSettingsComponent/AuditLogs.vue new file mode 100755 index 0000000..b596dcd --- /dev/null +++ b/src/components/UserSettingsComponent/AuditLogs.vue @@ -0,0 +1,458 @@ + + + + \ No newline at end of file diff --git a/src/components/UserSettingsComponent/QuickSettingsDrawer.vue b/src/components/UserSettingsComponent/QuickSettingsDrawer.vue new file mode 100644 index 0000000..e08475b --- /dev/null +++ b/src/components/UserSettingsComponent/QuickSettingsDrawer.vue @@ -0,0 +1,144 @@ + + + diff --git a/src/components/UserSettingsComponent/UserPreferences.vue b/src/components/UserSettingsComponent/UserPreferences.vue new file mode 100755 index 0000000..12f6d41 --- /dev/null +++ b/src/components/UserSettingsComponent/UserPreferences.vue @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/src/components/UserSettingsComponent/UserProfile.vue b/src/components/UserSettingsComponent/UserProfile.vue new file mode 100755 index 0000000..411abcb --- /dev/null +++ b/src/components/UserSettingsComponent/UserProfile.vue @@ -0,0 +1,116 @@ + + + \ No newline at end of file diff --git a/src/constants.ts b/src/constants.ts new file mode 100755 index 0000000..0663a8e --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,15 @@ +const default_title: string = "SCOT 4.0" +const default_incident_summary: string = "\ +\ +\ +\ +\ +\ +
DescriptionPlace description of the incident here
Related IndicatorsPlace IOCs here
Source DetailsPlace wource port, ip, protocol, etc. here
Compromised System DetailsPlace details about compromised system here
Recovery/Mitigation ActionsPlace recovery/mitigation details here
Physical Location of SystemPlace the city and state of system location
Detection DetailsPlace source, methods, or tools used to identify incident
" +const plain_alert_columns: Array = ["_raw", "search", "columns"] + +export { + default_title, + default_incident_summary, + plain_alert_columns +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..7d03ac1 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,158 @@ +import Vue from 'vue' +import qs from 'qs' +import App from './App.vue' +import router from './router' +import vuetify from './plugins/vuetify' +import axios from "axios" +import store from "./store" +import VueAxios from "vue-axios" +import Auth from "@/api/auth" +import Elements from "@/api/elements" +import User from "@/api/user" +import File from "@/api/file" +import VueCookies from "vue-cookies" +import Storage from '@/storage/localForage' +import localforage from 'localforage' +import Team from './api/team' +import StorageProvider from './api/storage_provider' +import { ValidationProvider } from 'vee-validate'; +import VModal from 'vue-js-modal' +import VueObserveVisibility from 'vue-observe-visibility' +import VueMeta from 'vue-meta' +Vue.use(VueObserveVisibility) +Vue.config.productionTip = false + +Vue.component('ValidationProvider', ValidationProvider); +Vue.use(VueMeta) + +Vue.use(VModal, { + dialog: true +}) + +const vueAxios = axios.create({ + paramsSerializer: params => qs.stringify(params, { arrayFormat: "repeat" }) +}) + +vueAxios.interceptors.response.use(response => response, + error => { + const navigatedRoute = router.currentRoute + if (error.response && error.response.status === 401 && error.response.config.url != "/logout" && !error.response.config.url.startsWith("/login") && navigatedRoute.path != "/login") { + store.dispatch("user/logout").then(() => { + if (navigatedRoute.name) { + Vue.prototype.$storage.setItem('loginRedirect', navigatedRoute.path) + } + if (router.currentRoute.path != '/login') { + router.push('/login') + } + }) + } + return Promise.reject(error) + } +) + +Vue.use(VueAxios, vueAxios) +Vue.use(VueCookies) +Vue.prototype.$storage = Storage() +Vue.prototype.$storage.storageConfig({ driver: localforage.INDEXEDDB, name: 'scot-cache' }) +const factories = { auth: Auth(Vue.axios), elements: Elements(Vue.axios), user: User(Vue.axios), storageProvider: StorageProvider(Vue.axios), team: Team(Vue.axios), file: File(Vue.axios) } +Vue.prototype.$api = factories + +Vue.axios.defaults.baseURL = process.env.VUE_APP_API_BASE + +function interceptClickEvent(e:any) { + let href; + const target = e.target || e.srcElement; + if (target.tagName === 'A') { + href = target.getAttribute('href'); + if (!href.startsWith('#')) { + const url = (new URL(href)) + e.preventDefault() + console.log(window.location.hostname) + console.log(url.hostname) + if (window.location.hostname != url.hostname) { + const answer = window.confirm('You are navigating to an external link. Are you sure you want to proceed?') + if (answer === true) { + window.open(url, '_blank') + + } + } + } + } +} + +//listen for link click events at the document level +if (document.addEventListener) { + document.addEventListener('click', interceptClickEvent); +} + + + +// This is a router guard that checks to make sure the user is currently logged in. If the user is not +// then this guard will route them back to login instead. + +router.beforeEach(async (to, _from, next) => { + try { + const urlParams = new URLSearchParams(window.location.search) + + const code = urlParams.get('code') + const state = urlParams.get('state') + if (to.name == 'Landing' && code && state) { + await store.dispatch('user/completeAzureAD', { code, state }) + if (store.getters['user/isLoggedIn']) { + const redirectUrl = await Vue.prototype.$storage.getItem('loginRedirect') + const currentUrlNoParams = new URL(location.pathname + location.hash, window.location.origin) + if (redirectUrl) { + Vue.prototype.$storage.removeItem('loginRedirect') + let fullRedirectHref = currentUrlNoParams.href + redirectUrl + if (currentUrlNoParams.href.endsWith('/')) { + fullRedirectHref = currentUrlNoParams.href + redirectUrl.substring(1) + } + window.location.replace(fullRedirectHref) + } + else { + window.location.replace(currentUrlNoParams) + } + } + } + else if (to.name !== 'Login' && (store.getters['user/isLoggedIn'] === false || store.getters['user/loginExpiration'] < new Date())) { + // See if our http only cookie is still set by doing a /api/whoami request. + await store.dispatch('user/retrieveUserInfo') + if (store.getters['user/isLoggedIn'] != false) { + // If our firehose is undefined, let's connect to it. This means we have a logged in user so we're ok to connect. + await store.dispatch('user/connectToFirehose') + // Every 10 seconds, reconnect to the firehose if we aren't connected to it + setInterval(() => { + if (store.getters['user/firehose'] == undefined) { + store.dispatch('user/connectToFirehose', { 'reconnect': true }) + } + }, 10000) + const matomoId = store.getters['user/currentUser'].email + window._paq.push(['setUserId', matomoId]) + next() + } + else { + Vue.prototype.$storage.setItem('loginRedirect', to.path) + next({ name: 'Login' }) + } + } + else if (to.name == 'Admin' && store.getters['user/currentUser'].is_superuser != true) { + next({ name: 'Landing' }) + } + else { + next() + } + } + catch (e) { + console.log(e) + } +}) + + + + +export default new Vue({ + router, + store, + vuetify, + render: h => h(App) +}).$mount('#app') diff --git a/src/plugins/matomo.ts b/src/plugins/matomo.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/plugins/resizable-vuetify-columns.js b/src/plugins/resizable-vuetify-columns.js new file mode 100644 index 0000000..27d0641 --- /dev/null +++ b/src/plugins/resizable-vuetify-columns.js @@ -0,0 +1,95 @@ +export default { + install(Vue) { + Vue.directive('columns-resizable', { + componentUpdated(el, binding, vnode, oldVnode) { + let nodeName = el.nodeName; + if (['TABLE', 'THEAD'].indexOf(nodeName) < 0) { + console.log('step 1') + el = el.querySelector('table'); // looking for the closest table + if (!el) return; + nodeName = 'TABLE'; + } + const table = nodeName === 'TABLE' ? el : el.parentElement; + const thead = table.querySelector('thead'); + const ths = thead.querySelectorAll('th'); + const barHeight = nodeName === 'TABLE' ? table.offsetHeight : thead.offsetHeight; + + const resizeContainer = document.createElement('div'); + table.style.position = 'relative'; + resizeContainer.style.position = 'relative'; + resizeContainer.style.width = table.offsetWidth + 'px'; + resizeContainer.className = "vue-columns-resizable"; + table.parentElement.insertBefore(resizeContainer, table); + + let moving = false; + let movingIndex = 0; + + ths.forEach((th, index) => { + th.style.width = th.offsetWidth + 'px'; + + if (index + 1 >= ths.length) return; + + const nextTh = ths[index + 1]; + const bar = document.createElement('div'); + + bar.style.position = 'absolute'; + bar.style.left = nextTh.offsetLeft - 4 + 'px'; + bar.style.top = 0; + bar.style.height = barHeight + 'px'; + bar.style.width = '8px'; + bar.style.cursor = 'col-resize'; + bar.style.zIndex = 1; + bar.className = 'columns-resize-bar'; + + bar.addEventListener('mousedown', () => { + moving = true; + movingIndex = index; + document.body.style.cursor = 'col-resize'; + document.body.style.userSelect = 'none'; + }); + + resizeContainer.appendChild(bar); + }); + + const bars = resizeContainer.querySelectorAll('.columns-resize-bar'); + + document.addEventListener('mouseup', () => { + if (!moving) return; + + moving = false; + document.body.style.cursor = ''; + document.body.style.userSelect = ''; + + bars.forEach((bar, index) => { + const th = ths[index]; + const nextTh = ths[index + 1]; + th.style.width = th.offsetWidth + 'px'; + bar.style.left = nextTh.offsetLeft - 4 + 'px'; + }); + }); + + const cutPx = str => +str.replace('px', ''); + + const handleResize = e => { + if (moving) { + + const th = ths[movingIndex]; + const nextTh = ths[movingIndex + 1]; + const bar = bars[movingIndex]; + th.style.width = cutPx(th.style.width) + e.movementX + 'px'; + nextTh.style.width = cutPx(nextTh.style.width) - e.movementX + 'px'; + bar.style.left = nextTh.offsetLeft - 4 + e.movementX + 'px'; + console.log(th) + console.log(bar) + } + }; + + resizeContainer.addEventListener('mousemove', handleResize); + table.addEventListener('mousemove', handleResize); + + + }, + }); + + }, + }; \ No newline at end of file diff --git a/src/plugins/vuetify.ts b/src/plugins/vuetify.ts new file mode 100644 index 0000000..5d214cb --- /dev/null +++ b/src/plugins/vuetify.ts @@ -0,0 +1,1097 @@ +import '@mdi/font/css/materialdesignicons.css' +import Vue from 'vue'; +import Vuetify from 'vuetify'; +import AC from '@/components/EntityClassComponents/CountryIconComponents/AC.vue' +import GM from "@/components/EntityClassComponents/CountryIconComponents/GM.vue" +import IT from "@/components/EntityClassComponents/CountryIconComponents/IT.vue" +import HU from "@/components/EntityClassComponents/CountryIconComponents/HU.vue" +import UA from "@/components/EntityClassComponents/CountryIconComponents/UA.vue" +import TN from "@/components/EntityClassComponents/CountryIconComponents/TN.vue" +import SA from "@/components/EntityClassComponents/CountryIconComponents/SA.vue" +import LK from "@/components/EntityClassComponents/CountryIconComponents/LK.vue" +import PE from "@/components/EntityClassComponents/CountryIconComponents/PE.vue" +import MM from "@/components/EntityClassComponents/CountryIconComponents/MM.vue" +import GB from "@/components/EntityClassComponents/CountryIconComponents/GB.vue" +import PN from "@/components/EntityClassComponents/CountryIconComponents/PN.vue" +import JM from "@/components/EntityClassComponents/CountryIconComponents/JM.vue" +import NE from "@/components/EntityClassComponents/CountryIconComponents/NE.vue" +import BI from "@/components/EntityClassComponents/CountryIconComponents/BI.vue" +import CX from "@/components/EntityClassComponents/CountryIconComponents/CX.vue" +import EH from "@/components/EntityClassComponents/CountryIconComponents/EH.vue" +import XK from "@/components/EntityClassComponents/CountryIconComponents/XK.vue" +import LY from "@/components/EntityClassComponents/CountryIconComponents/LY.vue" +import DE from "@/components/EntityClassComponents/CountryIconComponents/DE.vue" +import FO from "@/components/EntityClassComponents/CountryIconComponents/FO.vue" +import EA from "@/components/EntityClassComponents/CountryIconComponents/EA.vue" +import PK from "@/components/EntityClassComponents/CountryIconComponents/PK.vue" +import UM from "@/components/EntityClassComponents/CountryIconComponents/UM.vue" +import KY from "@/components/EntityClassComponents/CountryIconComponents/KY.vue" +import TR from "@/components/EntityClassComponents/CountryIconComponents/TR.vue" +import NZ from "@/components/EntityClassComponents/CountryIconComponents/NZ.vue" +import GQ from "@/components/EntityClassComponents/CountryIconComponents/GQ.vue" +import IO from "@/components/EntityClassComponents/CountryIconComponents/IO.vue" +import BE from "@/components/EntityClassComponents/CountryIconComponents/BE.vue" +import DJ from "@/components/EntityClassComponents/CountryIconComponents/DJ.vue" +import CI from "@/components/EntityClassComponents/CountryIconComponents/CI.vue" +import GN from "@/components/EntityClassComponents/CountryIconComponents/GN.vue" +import MQ from "@/components/EntityClassComponents/CountryIconComponents/MQ.vue" +import CU from "@/components/EntityClassComponents/CountryIconComponents/CU.vue" +import CW from "@/components/EntityClassComponents/CountryIconComponents/CW.vue" +import HN from "@/components/EntityClassComponents/CountryIconComponents/HN.vue" +import AG from "@/components/EntityClassComponents/CountryIconComponents/AG.vue" +import MF from "@/components/EntityClassComponents/CountryIconComponents/MF.vue" +import GG from "@/components/EntityClassComponents/CountryIconComponents/GG.vue" +import TZ from "@/components/EntityClassComponents/CountryIconComponents/TZ.vue" +import TO from "@/components/EntityClassComponents/CountryIconComponents/TO.vue" +import ZA from "@/components/EntityClassComponents/CountryIconComponents/ZA.vue" +import RE from "@/components/EntityClassComponents/CountryIconComponents/RE.vue" +import CM from "@/components/EntityClassComponents/CountryIconComponents/CM.vue" +import GI from "@/components/EntityClassComponents/CountryIconComponents/GI.vue" +import MA from "@/components/EntityClassComponents/CountryIconComponents/MA.vue" +import AT from "@/components/EntityClassComponents/CountryIconComponents/AT.vue" +import MN from "@/components/EntityClassComponents/CountryIconComponents/MN.vue" +import GA from "@/components/EntityClassComponents/CountryIconComponents/GA.vue" +import ST from "@/components/EntityClassComponents/CountryIconComponents/ST.vue" +import VN from "@/components/EntityClassComponents/CountryIconComponents/VN.vue" +import TL from "@/components/EntityClassComponents/CountryIconComponents/TL.vue" +import GD from "@/components/EntityClassComponents/CountryIconComponents/GD.vue" +import SY from "@/components/EntityClassComponents/CountryIconComponents/SY.vue" +import BM from "@/components/EntityClassComponents/CountryIconComponents/BM.vue" +import QA from "@/components/EntityClassComponents/CountryIconComponents/QA.vue" +import SI from "@/components/EntityClassComponents/CountryIconComponents/SI.vue" +import MR from "@/components/EntityClassComponents/CountryIconComponents/MR.vue" +import MW from "@/components/EntityClassComponents/CountryIconComponents/MW.vue" +import SH from "@/components/EntityClassComponents/CountryIconComponents/SH.vue" +import KR from "@/components/EntityClassComponents/CountryIconComponents/KR.vue" +import MT from "@/components/EntityClassComponents/CountryIconComponents/MT.vue" +import ME from "@/components/EntityClassComponents/CountryIconComponents/ME.vue" +import MH from "@/components/EntityClassComponents/CountryIconComponents/MH.vue" +import MC from "@/components/EntityClassComponents/CountryIconComponents/MC.vue" +import SZ from "@/components/EntityClassComponents/CountryIconComponents/SZ.vue" +import JP from "@/components/EntityClassComponents/CountryIconComponents/JP.vue" +import ML from "@/components/EntityClassComponents/CountryIconComponents/ML.vue" +import BR from "@/components/EntityClassComponents/CountryIconComponents/BR.vue" +import US from "@/components/EntityClassComponents/CountryIconComponents/US.vue" +import TD from "@/components/EntityClassComponents/CountryIconComponents/TD.vue" +import TA from "@/components/EntityClassComponents/CountryIconComponents/TA.vue" +import GF from "@/components/EntityClassComponents/CountryIconComponents/GF.vue" +import AU from "@/components/EntityClassComponents/CountryIconComponents/AU.vue" +import MP from "@/components/EntityClassComponents/CountryIconComponents/MP.vue" +import CP from "@/components/EntityClassComponents/CountryIconComponents/CP.vue" +import MS from "@/components/EntityClassComponents/CountryIconComponents/MS.vue" +import LT from "@/components/EntityClassComponents/CountryIconComponents/LT.vue" +import NF from "@/components/EntityClassComponents/CountryIconComponents/NF.vue" +import RO from "@/components/EntityClassComponents/CountryIconComponents/RO.vue" +import DK from "@/components/EntityClassComponents/CountryIconComponents/DK.vue" +import BZ from "@/components/EntityClassComponents/CountryIconComponents/BZ.vue" +import UG from "@/components/EntityClassComponents/CountryIconComponents/UG.vue" +import UZ from "@/components/EntityClassComponents/CountryIconComponents/UZ.vue" +import VG from "@/components/EntityClassComponents/CountryIconComponents/VG.vue" +import YE from "@/components/EntityClassComponents/CountryIconComponents/YE.vue" +import EG from "@/components/EntityClassComponents/CountryIconComponents/EG.vue" +import TJ from "@/components/EntityClassComponents/CountryIconComponents/TJ.vue" +import CF from "@/components/EntityClassComponents/CountryIconComponents/CF.vue" +import CK from "@/components/EntityClassComponents/CountryIconComponents/CK.vue" +import RW from "@/components/EntityClassComponents/CountryIconComponents/RW.vue" +import BW from "@/components/EntityClassComponents/CountryIconComponents/BW.vue" +import CH from "@/components/EntityClassComponents/CountryIconComponents/CH.vue" +import LV from "@/components/EntityClassComponents/CountryIconComponents/LV.vue" +import MD from "@/components/EntityClassComponents/CountryIconComponents/MD.vue" +import SM from "@/components/EntityClassComponents/CountryIconComponents/SM.vue" +import PA from "@/components/EntityClassComponents/CountryIconComponents/PA.vue" +import ES from "@/components/EntityClassComponents/CountryIconComponents/ES.vue" +import TC from "@/components/EntityClassComponents/CountryIconComponents/TC.vue" +import VE from "@/components/EntityClassComponents/CountryIconComponents/VE.vue" +import CC from "@/components/EntityClassComponents/CountryIconComponents/CC.vue" +import BD from "@/components/EntityClassComponents/CountryIconComponents/BD.vue" +import HK from "@/components/EntityClassComponents/CountryIconComponents/HK.vue" +import IR from "@/components/EntityClassComponents/CountryIconComponents/IR.vue" +import SD from "@/components/EntityClassComponents/CountryIconComponents/SD.vue" +import CD from "@/components/EntityClassComponents/CountryIconComponents/CD.vue" +import NL from "@/components/EntityClassComponents/CountryIconComponents/NL.vue" +import WS from "@/components/EntityClassComponents/CountryIconComponents/WS.vue" +import CZ from "@/components/EntityClassComponents/CountryIconComponents/CZ.vue" +import ZM from "@/components/EntityClassComponents/CountryIconComponents/ZM.vue" +import KN from "@/components/EntityClassComponents/CountryIconComponents/KN.vue" +import WF from "@/components/EntityClassComponents/CountryIconComponents/WF.vue" +import TG from "@/components/EntityClassComponents/CountryIconComponents/TG.vue" +import NU from "@/components/EntityClassComponents/CountryIconComponents/NU.vue" +import CL from "@/components/EntityClassComponents/CountryIconComponents/CL.vue" +import MO from "@/components/EntityClassComponents/CountryIconComponents/MO.vue" +import FJ from "@/components/EntityClassComponents/CountryIconComponents/FJ.vue" +import LS from "@/components/EntityClassComponents/CountryIconComponents/LS.vue" +import BF from "@/components/EntityClassComponents/CountryIconComponents/BF.vue" +import GW from "@/components/EntityClassComponents/CountryIconComponents/GW.vue" +import FK from "@/components/EntityClassComponents/CountryIconComponents/FK.vue" +import PW from "@/components/EntityClassComponents/CountryIconComponents/PW.vue" +import SL from "@/components/EntityClassComponents/CountryIconComponents/SL.vue" +import BT from "@/components/EntityClassComponents/CountryIconComponents/BT.vue" +import BG from "@/components/EntityClassComponents/CountryIconComponents/BG.vue" +import AW from "@/components/EntityClassComponents/CountryIconComponents/AW.vue" +import MU from "@/components/EntityClassComponents/CountryIconComponents/MU.vue" +import GR from "@/components/EntityClassComponents/CountryIconComponents/GR.vue" +import DO from "@/components/EntityClassComponents/CountryIconComponents/DO.vue" +import TW from "@/components/EntityClassComponents/CountryIconComponents/TW.vue" +import GY from "@/components/EntityClassComponents/CountryIconComponents/GY.vue" +import KW from "@/components/EntityClassComponents/CountryIconComponents/KW.vue" +import MV from "@/components/EntityClassComponents/CountryIconComponents/MV.vue" +import AO from "@/components/EntityClassComponents/CountryIconComponents/AO.vue" +import CN from "@/components/EntityClassComponents/CountryIconComponents/CN.vue" +import SN from "@/components/EntityClassComponents/CountryIconComponents/SN.vue" +import SK from "@/components/EntityClassComponents/CountryIconComponents/SK.vue" +import AL from "@/components/EntityClassComponents/CountryIconComponents/AL.vue" +import FI from "@/components/EntityClassComponents/CountryIconComponents/FI.vue" +import GU from "@/components/EntityClassComponents/CountryIconComponents/GU.vue" +import VC from "@/components/EntityClassComponents/CountryIconComponents/VC.vue" +import MX from "@/components/EntityClassComponents/CountryIconComponents/MX.vue" +import DG from "@/components/EntityClassComponents/CountryIconComponents/DG.vue" +import GE from "@/components/EntityClassComponents/CountryIconComponents/GE.vue" +import FM from "@/components/EntityClassComponents/CountryIconComponents/FM.vue" +import BY from "@/components/EntityClassComponents/CountryIconComponents/BY.vue" +import EC from "@/components/EntityClassComponents/CountryIconComponents/EC.vue" +import NG from "@/components/EntityClassComponents/CountryIconComponents/NG.vue" +import HT from "@/components/EntityClassComponents/CountryIconComponents/HT.vue" +import MZ from "@/components/EntityClassComponents/CountryIconComponents/MZ.vue" +import DZ from "@/components/EntityClassComponents/CountryIconComponents/DZ.vue" +import ZW from "@/components/EntityClassComponents/CountryIconComponents/ZW.vue" +import BH from "@/components/EntityClassComponents/CountryIconComponents/BH.vue" +import GH from "@/components/EntityClassComponents/CountryIconComponents/GH.vue" +import SS from "@/components/EntityClassComponents/CountryIconComponents/SS.vue" +import PL from "@/components/EntityClassComponents/CountryIconComponents/PL.vue" +import IL from "@/components/EntityClassComponents/CountryIconComponents/IL.vue" +import LU from "@/components/EntityClassComponents/CountryIconComponents/LU.vue" +import TH from "@/components/EntityClassComponents/CountryIconComponents/TH.vue" +import PG from "@/components/EntityClassComponents/CountryIconComponents/PG.vue" +import JE from "@/components/EntityClassComponents/CountryIconComponents/JE.vue" +import CG from "@/components/EntityClassComponents/CountryIconComponents/CG.vue" +import MG from "@/components/EntityClassComponents/CountryIconComponents/MG.vue" +import VU from "@/components/EntityClassComponents/CountryIconComponents/VU.vue" +import PF from "@/components/EntityClassComponents/CountryIconComponents/PF.vue" +import PR from "@/components/EntityClassComponents/CountryIconComponents/PR.vue" +import KG from "@/components/EntityClassComponents/CountryIconComponents/KG.vue" +import JO from "@/components/EntityClassComponents/CountryIconComponents/JO.vue" +import LA from "@/components/EntityClassComponents/CountryIconComponents/LA.vue" +import MY from "@/components/EntityClassComponents/CountryIconComponents/MY.vue" +import TK from "@/components/EntityClassComponents/CountryIconComponents/TK.vue" +import SB from "@/components/EntityClassComponents/CountryIconComponents/SB.vue" +import TF from "@/components/EntityClassComponents/CountryIconComponents/TF.vue" +import AS from "@/components/EntityClassComponents/CountryIconComponents/AS.vue" +import NA from "@/components/EntityClassComponents/CountryIconComponents/NA.vue" +import BB from "@/components/EntityClassComponents/CountryIconComponents/BB.vue" +import SE from "@/components/EntityClassComponents/CountryIconComponents/SE.vue" +import DM from "@/components/EntityClassComponents/CountryIconComponents/DM.vue" +import CO from "@/components/EntityClassComponents/CountryIconComponents/CO.vue" +import XX from "@/components/EntityClassComponents/CountryIconComponents/XX.vue" +import HM from "@/components/EntityClassComponents/CountryIconComponents/HM.vue" +import EE from "@/components/EntityClassComponents/CountryIconComponents/EE.vue" +import ET from "@/components/EntityClassComponents/CountryIconComponents/ET.vue" +import BV from "@/components/EntityClassComponents/CountryIconComponents/BV.vue" +import NC from "@/components/EntityClassComponents/CountryIconComponents/NC.vue" +import IM from "@/components/EntityClassComponents/CountryIconComponents/IM.vue" +import KI from "@/components/EntityClassComponents/CountryIconComponents/KI.vue" +import AM from "@/components/EntityClassComponents/CountryIconComponents/AM.vue" +import IS from "@/components/EntityClassComponents/CountryIconComponents/IS.vue" +import IC from "@/components/EntityClassComponents/CountryIconComponents/IC.vue" +import SV from "@/components/EntityClassComponents/CountryIconComponents/SV.vue" +import NI from "@/components/EntityClassComponents/CountryIconComponents/NI.vue" +import IQ from "@/components/EntityClassComponents/CountryIconComponents/IQ.vue" +import AX from "@/components/EntityClassComponents/CountryIconComponents/AX.vue" +import UY from "@/components/EntityClassComponents/CountryIconComponents/UY.vue" +import BS from "@/components/EntityClassComponents/CountryIconComponents/BS.vue" +import NP from "@/components/EntityClassComponents/CountryIconComponents/NP.vue" +import NO from "@/components/EntityClassComponents/CountryIconComponents/NO.vue" +import EU from "@/components/EntityClassComponents/CountryIconComponents/EU.vue" +import NR from "@/components/EntityClassComponents/CountryIconComponents/NR.vue" +import AZ from "@/components/EntityClassComponents/CountryIconComponents/AZ.vue" +import SR from "@/components/EntityClassComponents/CountryIconComponents/SR.vue" +import AF from "@/components/EntityClassComponents/CountryIconComponents/AF.vue" +import GT from "@/components/EntityClassComponents/CountryIconComponents/GT.vue" +import VA from "@/components/EntityClassComponents/CountryIconComponents/VA.vue" +import CV from "@/components/EntityClassComponents/CountryIconComponents/CV.vue" +import AE from "@/components/EntityClassComponents/CountryIconComponents/AE.vue" +import HR from "@/components/EntityClassComponents/CountryIconComponents/HR.vue" +import PS from "@/components/EntityClassComponents/CountryIconComponents/PS.vue" +import IN from "@/components/EntityClassComponents/CountryIconComponents/IN.vue" +import VI from "@/components/EntityClassComponents/CountryIconComponents/VI.vue" +import LR from "@/components/EntityClassComponents/CountryIconComponents/LR.vue" +import SX from "@/components/EntityClassComponents/CountryIconComponents/SX.vue" +import SG from "@/components/EntityClassComponents/CountryIconComponents/SG.vue" +import OM from "@/components/EntityClassComponents/CountryIconComponents/OM.vue" +import BO from "@/components/EntityClassComponents/CountryIconComponents/BO.vue" +import IE from "@/components/EntityClassComponents/CountryIconComponents/IE.vue" +import TM from "@/components/EntityClassComponents/CountryIconComponents/TM.vue" +import AR from "@/components/EntityClassComponents/CountryIconComponents/AR.vue" +import AI from "@/components/EntityClassComponents/CountryIconComponents/AI.vue" +import KH from "@/components/EntityClassComponents/CountryIconComponents/KH.vue" +import LI from "@/components/EntityClassComponents/CountryIconComponents/LI.vue" +import KP from "@/components/EntityClassComponents/CountryIconComponents/KP.vue" +import BA from "@/components/EntityClassComponents/CountryIconComponents/BA.vue" +import PH from "@/components/EntityClassComponents/CountryIconComponents/PH.vue" +import CY from "@/components/EntityClassComponents/CountryIconComponents/CY.vue" +import AQ from "@/components/EntityClassComponents/CountryIconComponents/AQ.vue" +import YT from "@/components/EntityClassComponents/CountryIconComponents/YT.vue" +import TT from "@/components/EntityClassComponents/CountryIconComponents/TT.vue" +import BJ from "@/components/EntityClassComponents/CountryIconComponents/BJ.vue" +import FR from "@/components/EntityClassComponents/CountryIconComponents/FR.vue" +import RS from "@/components/EntityClassComponents/CountryIconComponents/RS.vue" +import SO from "@/components/EntityClassComponents/CountryIconComponents/SO.vue" +import BN from "@/components/EntityClassComponents/CountryIconComponents/BN.vue" +import LC from "@/components/EntityClassComponents/CountryIconComponents/LC.vue" +import BL from "@/components/EntityClassComponents/CountryIconComponents/BL.vue" +import LB from "@/components/EntityClassComponents/CountryIconComponents/LB.vue" +import PY from "@/components/EntityClassComponents/CountryIconComponents/PY.vue" +import MK from "@/components/EntityClassComponents/CountryIconComponents/MK.vue" +import PT from "@/components/EntityClassComponents/CountryIconComponents/PT.vue" +import KM from "@/components/EntityClassComponents/CountryIconComponents/KM.vue" +import KZ from "@/components/EntityClassComponents/CountryIconComponents/KZ.vue" +import PM from "@/components/EntityClassComponents/CountryIconComponents/PM.vue" +import BQ from "@/components/EntityClassComponents/CountryIconComponents/BQ.vue" +import GL from "@/components/EntityClassComponents/CountryIconComponents/GL.vue" +import ID from "@/components/EntityClassComponents/CountryIconComponents/ID.vue" +import RU from "@/components/EntityClassComponents/CountryIconComponents/RU.vue" +import GS from "@/components/EntityClassComponents/CountryIconComponents/GS.vue" +import KE from "@/components/EntityClassComponents/CountryIconComponents/KE.vue" +import TV from "@/components/EntityClassComponents/CountryIconComponents/TV.vue" +import SC from "@/components/EntityClassComponents/CountryIconComponents/SC.vue" +import AD from "@/components/EntityClassComponents/CountryIconComponents/AD.vue" +import UN from "@/components/EntityClassComponents/CountryIconComponents/UN.vue" +import SJ from "@/components/EntityClassComponents/CountryIconComponents/SJ.vue" +import CA from "@/components/EntityClassComponents/CountryIconComponents/CA.vue" +import ER from "@/components/EntityClassComponents/CountryIconComponents/ER.vue" +import GP from "@/components/EntityClassComponents/CountryIconComponents/GP.vue" +import CR from "@/components/EntityClassComponents/CountryIconComponents/CR.vue" +import ScannerIcon from "@/components/EntityClassComponents/CyberIconComponents/ScannerIcon.vue" +import ProxyIcon from "@/components/EntityClassComponents/CyberIconComponents/ProxyIcon.vue" +import FireWallIcon from "@/components/EntityClassComponents/CyberIconComponents/FireWallIcon.vue" +import AnonymousIPIcon from "@/components/EntityClassComponents/CyberIconComponents/AnonymousIPIcon.vue" +import SandiaThunderBirdIcon from "@/components/EntityClassComponents/CyberIconComponents/SandiaThunderBirdIcon.vue" +import ThreatActorIcon from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorIcon.vue" +import ThreatActorInternalIcon from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIcon.vue" +import ThreatActorIconBlue from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorIconBlue.vue" +import ThreatActorInternalIconBlue from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconBlue.vue" +import ThreatActorIconRed from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorIconRed.vue" +import ThreatActorInternalIconRed from "@/components/EntityClassComponents/CyberIconComponents/ThreatActorInternalIconRed.vue" +import KEVIcon from "@/components/EntityClassComponents/CyberIconComponents/KEVIcon.vue" + +Vue.use(Vuetify); + +export default new Vuetify({ + icons: { + iconfont: 'mdi', + values: { + sandia_thunderbird: { + component: SandiaThunderBirdIcon + }, + anonymous_ip: { + component: AnonymousIPIcon + }, + firewall: { + component: FireWallIcon + }, + public_proxy: { + component: ProxyIcon + }, + scanner: { + component: ScannerIcon + }, + threat_actor: { + component: ThreatActorIcon + }, + threat_actor_internal: { + component: ThreatActorInternalIcon + }, + threat_actor_blue: { + component: ThreatActorIconBlue + }, + threat_actor_internal_blue: { + component: ThreatActorInternalIconBlue + }, + threat_actor_red: { + component: ThreatActorIconRed + }, + threat_actor_internal_red: { + component: ThreatActorInternalIconRed + }, + kev: { + component: KEVIcon + }, + gm_flag: { + component: GM + }, + it_flag: { + component: IT + }, + hu_flag: { + component: HU + }, + ua_flag: { + component: UA + }, + tn_flag: { + component: TN + }, + sa_flag: { + component: SA + }, + lk_flag: { + component: LK + }, + pe_flag: { + component: PE + }, + mm_flag: { + component: MM + }, + gb_flag: { + component: GB + }, + pn_flag: { + component: PN + }, + jm_flag: { + component: JM + }, + ne_flag: { + component: NE + }, + bi_flag: { + component: BI + }, + cx_flag: { + component: CX + }, + eh_flag: { + component: EH + }, + xk_flag: { + component: XK + }, + ly_flag: { + component: LY + }, + de_flag: { + component: DE + }, + fo_flag: { + component: FO + }, + ea_flag: { + component: EA + }, + pk_flag: { + component: PK + }, + um_flag: { + component: UM + }, + ky_flag: { + component: KY + }, + tr_flag: { + component: TR + }, + nz_flag: { + component: NZ + }, + gq_flag: { + component: GQ + }, + io_flag: { + component: IO + }, + be_flag: { + component: BE + }, + dj_flag: { + component: DJ + }, + ci_flag: { + component: CI + }, + gn_flag: { + component: GN + }, + mq_flag: { + component: MQ + }, + cu_flag: { + component: CU + }, + cw_flag: { + component: CW + }, + hn_flag: { + component: HN + }, + ag_flag: { + component: AG + }, + mf_flag: { + component: MF + }, + gg_flag: { + component: GG + }, + tz_flag: { + component: TZ + }, + to_flag: { + component: TO + }, + za_flag: { + component: ZA + }, + re_flag: { + component: RE + }, + cm_flag: { + component: CM + }, + gi_flag: { + component: GI + }, + ma_flag: { + component: MA + }, + at_flag: { + component: AT + }, + mn_flag: { + component: MN + }, + ga_flag: { + component: GA + }, + st_flag: { + component: ST + }, + vn_flag: { + component: VN + }, + tl_flag: { + component: TL + }, + gd_flag: { + component: GD + }, + sy_flag: { + component: SY + }, + bm_flag: { + component: BM + }, + qa_flag: { + component: QA + }, + si_flag: { + component: SI + }, + mr_flag: { + component: MR + }, + mw_flag: { + component: MW + }, + sh_flag: { + component: SH + }, + kr_flag: { + component: KR + }, + mt_flag: { + component: MT + }, + me_flag: { + component: ME + }, + mh_flag: { + component: MH + }, + mc_flag: { + component: MC + }, + sz_flag: { + component: SZ + }, + jp_flag: { + component: JP + }, + ml_flag: { + component: ML + }, + br_flag: { + component: BR + }, + us_flag: { + component: US + }, + td_flag: { + component: TD + }, + ta_flag: { + component: TA + }, + gf_flag: { + component: GF + }, + au_flag: { + component: AU + }, + mp_flag: { + component: MP + }, + cp_flag: { + component: CP + }, + ms_flag: { + component: MS + }, + lt_flag: { + component: LT + }, + nf_flag: { + component: NF + }, + ro_flag: { + component: RO + }, + dk_flag: { + component: DK + }, + bz_flag: { + component: BZ + }, + ug_flag: { + component: UG + }, + uz_flag: { + component: UZ + }, + vg_flag: { + component: VG + }, + ye_flag: { + component: YE + }, + eg_flag: { + component: EG + }, + tj_flag: { + component: TJ + }, + cf_flag: { + component: CF + }, + ck_flag: { + component: CK + }, + rw_flag: { + component: RW + }, + bw_flag: { + component: BW + }, + ch_flag: { + component: CH + }, + lv_flag: { + component: LV + }, + md_flag: { + component: MD + }, + sm_flag: { + component: SM + }, + pa_flag: { + component: PA + }, + es_flag: { + component: ES + }, + tc_flag: { + component: TC + }, + ve_flag: { + component: VE + }, + cc_flag: { + component: CC + }, + bd_flag: { + component: BD + }, + hk_flag: { + component: HK + }, + ir_flag: { + component: IR + }, + sd_flag: { + component: SD + }, + cd_flag: { + component: CD + }, + nl_flag: { + component: NL + }, + ws_flag: { + component: WS + }, + cz_flag: { + component: CZ + }, + zm_flag: { + component: ZM + }, + kn_flag: { + component: KN + }, + wf_flag: { + component: WF + }, + tg_flag: { + component: TG + }, + nu_flag: { + component: NU + }, + cl_flag: { + component: CL + }, + mo_flag: { + component: MO + }, + fj_flag: { + component: FJ + }, + ls_flag: { + component: LS + }, + bf_flag: { + component: BF + }, + gw_flag: { + component: GW + }, + fk_flag: { + component: FK + }, + pw_flag: { + component: PW + }, + sl_flag: { + component: SL + }, + bt_flag: { + component: BT + }, + bg_flag: { + component: BG + }, + aw_flag: { + component: AW + }, + mu_flag: { + component: MU + }, + gr_flag: { + component: GR + }, + do_flag: { + component: DO + }, + tw_flag: { + component: TW + }, + gy_flag: { + component: GY + }, + kw_flag: { + component: KW + }, + mv_flag: { + component: MV + }, + ao_flag: { + component: AO + }, + cn_flag: { + component: CN + }, + sn_flag: { + component: SN + }, + sk_flag: { + component: SK + }, + al_flag: { + component: AL + }, + fi_flag: { + component: FI + }, + gu_flag: { + component: GU + }, + vc_flag: { + component: VC + }, + mx_flag: { + component: MX + }, + dg_flag: { + component: DG + }, + ge_flag: { + component: GE + }, + fm_flag: { + component: FM + }, + by_flag: { + component: BY + }, + ec_flag: { + component: EC + }, + ng_flag: { + component: NG + }, + ht_flag: { + component: HT + }, + mz_flag: { + component: MZ + }, + dz_flag: { + component: DZ + }, + zw_flag: { + component: ZW + }, + bh_flag: { + component: BH + }, + gh_flag: { + component: GH + }, + ss_flag: { + component: SS + }, + pl_flag: { + component: PL + }, + il_flag: { + component: IL + }, + lu_flag: { + component: LU + }, + th_flag: { + component: TH + }, + pg_flag: { + component: PG + }, + je_flag: { + component: JE + }, + cg_flag: { + component: CG + }, + mg_flag: { + component: MG + }, + vu_flag: { + component: VU + }, + pf_flag: { + component: PF + }, + pr_flag: { + component: PR + }, + kg_flag: { + component: KG + }, + jo_flag: { + component: JO + }, + la_flag: { + component: LA + }, + my_flag: { + component: MY + }, + tk_flag: { + component: TK + }, + sb_flag: { + component: SB + }, + tf_flag: { + component: TF + }, + as_flag: { + component: AS + }, + na_flag: { + component: NA + }, + bb_flag: { + component: BB + }, + se_flag: { + component: SE + }, + dm_flag: { + component: DM + }, + co_flag: { + component: CO + }, + xx_flag: { + component: XX + }, + hm_flag: { + component: HM + }, + ee_flag: { + component: EE + }, + et_flag: { + component: ET + }, + bv_flag: { + component: BV + }, + nc_flag: { + component: NC + }, + im_flag: { + component: IM + }, + ki_flag: { + component: KI + }, + am_flag: { + component: AM + }, + is_flag: { + component: IS + }, + ic_flag: { + component: IC + }, + sv_flag: { + component: SV + }, + ni_flag: { + component: NI + }, + iq_flag: { + component: IQ + }, + ax_flag: { + component: AX + }, + uy_flag: { + component: UY + }, + bs_flag: { + component: BS + }, + np_flag: { + component: NP + }, + no_flag: { + component: NO + }, + eu_flag: { + component: EU + }, + nr_flag: { + component: NR + }, + az_flag: { + component: AZ + }, + sr_flag: { + component: SR + }, + af_flag: { + component: AF + }, + gt_flag: { + component: GT + }, + va_flag: { + component: VA + }, + cv_flag: { + component: CV + }, + ae_flag: { + component: AE + }, + hr_flag: { + component: HR + }, + ps_flag: { + component: PS + }, + in_flag: { + component: IN + }, + vi_flag: { + component: VI + }, + lr_flag: { + component: LR + }, + sx_flag: { + component: SX + }, + sg_flag: { + component: SG + }, + om_flag: { + component: OM + }, + bo_flag: { + component: BO + }, + ie_flag: { + component: IE + }, + tm_flag: { + component: TM + }, + ar_flag: { + component: AR + }, + ai_flag: { + component: AI + }, + kh_flag: { + component: KH + }, + li_flag: { + component: LI + }, + kp_flag: { + component: KP + }, + ba_flag: { + component: BA + }, + ph_flag: { + component: PH + }, + cy_flag: { + component: CY + }, + aq_flag: { + component: AQ + }, + yt_flag: { + component: YT + }, + tt_flag: { + component: TT + }, + bj_flag: { + component: BJ + }, + fr_flag: { + component: FR + }, + rs_flag: { + component: RS + }, + so_flag: { + component: SO + }, + ac_flag: { + component: AC + }, + bn_flag: { + component: BN + }, + lc_flag: { + component: LC + }, + bl_flag: { + component: BL + }, + lb_flag: { + component: LB + }, + py_flag: { + component: PY + }, + mk_flag: { + component: MK + }, + pt_flag: { + component: PT + }, + km_flag: { + component: KM + }, + kz_flag: { + component: KZ + }, + pm_flag: { + component: PM + }, + bq_flag: { + component: BQ + }, + gl_flag: { + component: GL + }, + id_flag: { + component: ID + }, + ru_flag: { + component: RU + }, + gs_flag: { + component: GS + }, + ke_flag: { + component: KE + }, + tv_flag: { + component: TV + }, + sc_flag: { + component: SC + }, + ad_flag: { + component: AD + }, + un_flag: { + component: UN + }, + sj_flag: { + component: SJ + }, + ca_flag: { + component: CA + }, + er_flag: { + component: ER + }, + gp_flag: { + component: GP + }, + cr_flag: { + component: CR + } + } + }, +}); diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..83aaade --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,199 @@ +import Vue from 'vue' +import VueRouter, { RouteConfig } from 'vue-router' +import Login from '../views/Login.vue' +import Response from '../views/Response.vue' +import ComingSoon from '../views/ComingSoon.vue' +import Landing from '../views/Landing.vue' +import Calendar from '../views/Calendar.vue' +import ThreatModel from '../views/ThreatModel.vue' +import Admin from '../views/Admin.vue' +import FullScreenEntry from '../views/FullScreenEntry.vue' +import EntityClassIcons from '../views/EntityClassIcons.vue' +import { IRElementType } from '@/store/modules/IRElements/types' +import UserSettingsView from '../views/UserSettings.vue' +Vue.use(VueRouter) + +const routes: Array = [ + { + path: '/login', + name: 'Login', + component: Login + }, + { + path: '/team/calendar', + name: 'Calendar', + component: Calendar + }, + { + path: '/threat_model/:type?', + name: 'ThreatModel', + component: ThreatModel + }, + { + path: '/admin', + name: 'Admin', + component: Admin + }, + { + path: '/', + name: 'Landing', + component: Landing + }, + { + path: '/entities/:id?/:entryId?', + name: 'Entities', + component: Response, + meta: { itemType: IRElementType.Entity }, + alias: '/entity/:id?/:entryId?' + }, + { + path: '/entity_classes_list', + name: 'EntityClasses', + component: EntityClassIcons + }, + { + path: '/alertgroups/:id?/:entryId?', + name: 'Alertgroups', + component: Response, + meta: { itemType: IRElementType.Alertgroup }, + alias: '/alertgroup/:id?/:entryId?' + }, + { + path: '/events/:id?/:entryId?', + name: 'Events', + component: Response, + meta: { itemType: IRElementType.Event }, + alias: '/event/:id?/:entryId?' + }, + { + path: '/vuln_feeds/:id?/:entryId?', + name: 'Queue', + component: Response, + meta: { itemType: IRElementType.VulnFeed }, + alias: '/vuln_feed/:id?/:entryId?' + }, + { + path: '/vuln_tracks/:id?/:entryId?', + name: 'Tracking', + component: Response, + meta: { itemType: IRElementType.VulnTrack }, + alias: '/vuln_track/:id?/:entryId?' + }, + { + path: '/events/:id?/:entryId?', + name: 'Events', + component: Response, + meta: { itemType: IRElementType.Event }, + alias: '/event/:id?/:entryId?' + }, + { + path: '/signatures/:id?/:entryId?', + name: 'Signatures', + component: Response, + meta: { itemType: IRElementType.Signature }, + alias: '/signature/:id?/:entryId?' + }, + { + path: '/incidents/:id?/:entryId?', + name: 'Incidents', + component: Response, + meta: { itemType: IRElementType.Incident }, + alias: '/incident/:id?/:entryId?' + }, + { + path: '/intels/:id?/:entryId?', + name: 'Intels', + component: Response, + meta: { itemType: IRElementType.Intel }, + alias: '/intel/:id?/:entryId?' + }, + { + path: '/dispatches/:id?/:entryId?', + name: 'Dispatches', + component: Response, + meta: { itemType: IRElementType.Dispatch }, + alias: '/dispatch/:id?/:entryId?' + }, + { + path: '/products/:id?/:entryId?', + name: 'Products', + component: Response, + meta: { itemType: IRElementType.Product }, + alias: '/product/:id?/:entryId?' + }, + { + path: '/feeds/:id?/:entryId?', + name: 'Feed', + component: Response, + meta: { itemType: IRElementType.Feed }, + alias: '/feed/:id?/:entryId?' + }, + { + path: '/tasks/:id?/:target_type?/:target_id?', + name: 'Task', + component: Response, + meta: { itemType: IRElementType.Entry, extraFilters: { "entry_class": "task" } }, + alias: '/task/:id?/:target_type?/:target_id?' + }, + { + path: '/guides/:id?/:entryId?', + name: 'Guide', + component: Response, + meta: { itemType: IRElementType.Guide }, + alias: '/guide/:id?/:entryId?' + }, + { + path: '/pivots/:id?', + name: 'Pivot', + component: Response, + meta: { itemType: IRElementType.Pivot }, + alias: '/pivot/:id?' + }, + { + path: '/entity_classes/:id?', + name: 'EntityClass', + component: Response, + meta: { itemType: IRElementType.EntityClass } + }, + { + path: '/hunts/:id?/:entryId?', + name: 'Hunts', + component: ComingSoon + }, + { + path: '/actors/:id?/:entryId?', + name: 'Actors', + component: ComingSoon + }, + { + path: '/profile', + name: 'UserSettings', + component: UserSettingsView, + }, + { + path: '/coming_soon', + name: 'Coming Soon', + component: ComingSoon, + }, + { + path: '/:elementType/:elementId/entry/:entryId/fullScreen', + name: 'FullScreenEntry', + component: FullScreenEntry + }, +] + +const router = new VueRouter({ + routes +}) + + + +router.afterEach((to, from) => { + const toDepth = to.path.split('/').length + const fromDepth = from.path.split('/').length + if(to !=undefined && to.meta!=undefined && (to.name=='FullScreenEntry' || from.name=='FullScreenEntry')){ + to.meta.transitionName = 'fade' + } +}) + +export default router diff --git a/src/shims-ckeditor.d.ts b/src/shims-ckeditor.d.ts new file mode 100644 index 0000000..d9a2ddb --- /dev/null +++ b/src/shims-ckeditor.d.ts @@ -0,0 +1,58 @@ +declare module '@ckeditor/ckeditor5-vue2' +declare module '@ckeditor/ckeditor5-utils'; +declare module '@ckeditor/ckeditor5-vue' +declare module '@ckeditor/ckeditor5-editor-classic/src/classiceditor'; +declare module '@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice'; +declare module '@ckeditor/ckeditor5-list/src/list'; +declare module '@ckeditor/ckeditor5-list/src/listproperties'; +declare module '@ckeditor/ckeditor5-alignment/src/alignment'; +declare module '@ckeditor/ckeditor5-basic-styles/src/code'; +declare module '@ckeditor/ckeditor5-basic-styles/src/strikethrough'; +declare module '@ckeditor/ckeditor5-basic-styles/src/subscript'; +declare module '@ckeditor/ckeditor5-basic-styles/src/superscript'; +declare module '@ckeditor/ckeditor5-basic-styles/src/underline'; +declare module '@ckeditor/ckeditor5-font/src/font'; +declare module '@ckeditor/ckeditor5-font/src/fontfamily'; +declare module '@ckeditor/ckeditor5-font/src/fontsize'; +declare module '@ckeditor/ckeditor5-font/src/fontcolor'; +declare module '@ckeditor/ckeditor5-font/src/fontbackgroundcolor'; +declare module '@ckeditor/ckeditor5-horizontal-line/src/horizontalline'; +declare module '@ckeditor/ckeditor5-indent/src/indent'; +declare module '@ckeditor/ckeditor5-indent/src/indentblock'; +declare module '@ckeditor/ckeditor5-image/src/imageresize'; +declare module '@ckeditor/ckeditor5-table/src/tableproperties'; +declare module '@ckeditor/ckeditor5-table/src/tablecellproperties'; +declare module '@ckeditor/ckeditor5-build-classic/src/ckeditor'; +declare module '@ckeditor/ckeditor5-build-classic'; +declare module '@ckeditor/ckeditor5-essentials/src/essentials'; +declare module '@ckeditor/ckeditor5-basic-styles/src/bold'; +declare module '@ckeditor/ckeditor5-basic-styles/src/italic'; +declare module '@ckeditor/ckeditor5-link/src/link'; +declare module '@ckeditor/ckeditor5-paragraph/src/paragraph' +declare module '@ckeditor/ckeditor5-image/src/image' +declare module '@ckeditor/ckeditor5-image/src/imageupload'; +declare module '@ckeditor/ckeditor5-image/src/imagetoolbar'; +declare module '@ckeditor/ckeditor5-image/src/imagestyle'; +declare module '@ckeditor/ckeditor5-image/src/imagecaption'; +declare module '@ckeditor/ckeditor5-image/src/autoimage'; +declare module '@ckeditor/ckeditor5-code-block/src/codeblock' +declare module '@ckeditor/ckeditor5-clipboard/src/clipboard'; +declare module '@ckeditor/ckeditor5-clipboard/src/clipboardpipeline'; +declare module '@ckeditor/ckeditor5-paragraph/src/paragraphbuttonui'; +declare module '@ckeditor/ckeditor5-table/src/table'; +declare module '@ckeditor/ckeditor5-table/src/tableclipboard'; +declare module '@ckeditor/ckeditor5-table/src/tabletoolbar'; +declare module '@ckeditor/ckeditor5-table/src/tablecaption'; +declare module '@ckeditor/ckeditor5-table/src/tablecolumnresize'; +declare module '@ckeditor/ckeditor5-heading/src/heading'; +declare module '@ckeditor/ckeditor5-source-editing/src/sourceediting' +declare module '@ckeditor/ckeditor5-html-support/src/generalhtmlsupport' +declare module '@ckeditor/ckeditor5-inspector' +declare module '@ckeditor/ckeditor5-clipboard/src/dragdrop' +declare module '@/components/JournalComponents/EntryCellComponents/WYSIWYGCell/FlairPlugin/FlairPlugin' +declare module '@/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorSavePlugin' +declare module '@/components/JournalComponents/EntryCellComponents/WYSIWYGCell/EditorCancelPlugin' +declare module '@/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/uploadPlugin' +declare module '@/components/JournalComponents/EntryCellComponents/WYSIWYGCell/fileUploadPlugin/imageUploadPlugin' +declare module '@ckeditor/ckeditor5-upload/src/filerepository' +declare module '@ckeditor/ckeditor5-upload/src/adapters/base64uploadadapter' diff --git a/src/shims-remixicon.d.ts b/src/shims-remixicon.d.ts new file mode 100644 index 0000000..59dcbf4 --- /dev/null +++ b/src/shims-remixicon.d.ts @@ -0,0 +1 @@ +declare module 'remixicon/fonts/remixicon.symbol.svg' \ No newline at end of file diff --git a/src/shims-tsx.d.ts b/src/shims-tsx.d.ts new file mode 100644 index 0000000..c656c68 --- /dev/null +++ b/src/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue' + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any + } + } +} diff --git a/src/shims-vee-validate.d.ts b/src/shims-vee-validate.d.ts new file mode 100644 index 0000000..14f04db --- /dev/null +++ b/src/shims-vee-validate.d.ts @@ -0,0 +1 @@ +declare module 'vee-validate/dist/vee-validate.full' diff --git a/src/shims-vue-matomo.d.ts b/src/shims-vue-matomo.d.ts new file mode 100644 index 0000000..eeb5ed7 --- /dev/null +++ b/src/shims-vue-matomo.d.ts @@ -0,0 +1,2 @@ +declare module 'vue-matomo' +declare module 'dompurify' \ No newline at end of file diff --git a/src/shims-vue-tabulator.d.ts b/src/shims-vue-tabulator.d.ts new file mode 100644 index 0000000..b87df47 --- /dev/null +++ b/src/shims-vue-tabulator.d.ts @@ -0,0 +1,2 @@ +declare module 'vue-tabulator' +declare module 'tabulator-tables' \ No newline at end of file diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..d9f24fa --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,4 @@ +declare module '*.vue' { + import Vue from 'vue' + export default Vue +} diff --git a/src/shims-vuetify.d.ts b/src/shims-vuetify.d.ts new file mode 100644 index 0000000..9e73071 --- /dev/null +++ b/src/shims-vuetify.d.ts @@ -0,0 +1,4 @@ +declare module 'vuetify/lib/framework' { + import Vuetify from 'vuetify' + export default Vuetify +} diff --git a/src/storage/localForage.ts b/src/storage/localForage.ts new file mode 100644 index 0000000..77edee4 --- /dev/null +++ b/src/storage/localForage.ts @@ -0,0 +1,22 @@ +import localforage from 'localforage' + +export default () => ({ + + async getItem(key:any, callback:any) { + return localforage.getItem(key, callback) + }, + + async setItem (key:any, value:any, callback:any) { + return localforage.setItem(key, value, callback) + }, + async storageConfig(options:any ){ + return localforage.config(options) + }, + + async removeItem(key:any, callback:any){ + return localforage.removeItem(key, callback) + }, + async clearStorage(){ + return localforage.clear() + } +}); \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100755 index 0000000..a6f54b0 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,66 @@ +// index.ts +import Vue from 'vue'; +import axios, { AxiosError } from 'axios'; +import Vuex, { StoreOptions } from 'vuex'; +import { RootState } from '@/store/types'; +import { user } from '@/store/modules/user/index' +import { team } from '@/store/modules/team/index' +import { admin } from '@/store/modules/admin/index' + +import { IRElements } from '@/store/modules/IRElements/index' + + +Vue.use(Vuex); + +const store: StoreOptions = { + state: { + version: '1.0.0', // a simple property + error: false, + errorText: '' + }, + mutations: { + clearError(state) { + state.error = false + state.errorText = "" + }, + errorOccurred(state, payload: AxiosError | Error) { + if (axios.isAxiosError(payload) && payload.response) { + state.error = true + if (payload.response.data.detail) { + let detail = payload.response.data.detail + if (Array.isArray(detail)) { + detail = detail[0] + } + if (detail.msg) { + state.errorText = "Error: " + detail.msg + ": " + detail.loc + } + else { + state.errorText = "Error: " + detail + } + } + else { + state.errorText = payload.response.data + } + } + else if (axios.isAxiosError(payload)) { + state.error = true + state.errorText = "Error connecting to server: " + payload.message + } + else { + console.error(payload) + } + }, + }, + getters: { + error(state) { return state.error }, + errorText(state) { return state.errorText } + }, + modules: { + user, + IRElements, + team, + admin + } +}; + +export default new Vuex.Store(store); \ No newline at end of file diff --git a/src/store/modules/IRElements/actions.ts b/src/store/modules/IRElements/actions.ts new file mode 100644 index 0000000..630d637 --- /dev/null +++ b/src/store/modules/IRElements/actions.ts @@ -0,0 +1,1070 @@ +import { ActionTree } from 'vuex'; +import { EntryClassEnum, IRElement, IRElementsListState, IRElementType, PermissionEnum } from './types'; +import { RootState } from '@/store/types'; +import Vue from 'vue'; +import { getParentEntryId } from '@/utils/treeUtils'; +import { Role } from '../user/types'; +import { Audit } from '../team/types'; +import axios from 'axios'; +import { default_incident_summary } from '@/constants' + + +export const actions: ActionTree = { + async retrieveElementList({ commit }, elementType: IRElementType): Promise { + try { + commit('beginRetrieveElements') + const resp = await Vue.prototype.$api.elements.retrieveElements(elementType) + commit('retrieveElementsSuccess', { "data": resp.data, "elementType": elementType }) + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + commit('retrieveElementsFailure') + } + }, + + async retrieveElementListWithFilter({ commit, state }, { elementType, filterDict, abortController }): Promise { + try { + commit('beginRetrieveElements', state.ElementType == elementType) + if (abortController) { + state.ElementListAbortController = abortController + } + const resp = await Vue.prototype.$api.elements.retrieveElementsWithFilter(elementType, filterDict, state.ElementListAbortController) + commit('retrieveElementsSuccess', { "data": resp.data, "elementType": elementType }) + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + commit('retrieveElementsFailure') + } + + }, + + async updateElementInList({ commit }, { elementId, elementType, updateData }) { + try { + const resp = await Vue.prototype.$api.elements.updateElementById(elementId, elementType, updateData) + commit('updateElementSuccess', { "elementId": elementId, "data": resp.data }) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async deleteElement({ commit }, { elementId, elementType }) { + try { + const resp = await Vue.prototype.$api.elements.deleteElementById(elementId, elementType) + commit('deleteElementSuccess', { "elementId": elementId, "data": resp.data }) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + + async deleteFile({ commit }, { fileId, targetId, targetType }) { + try { + const resp = await Vue.prototype.$api.elements.deleteFileById(fileId, targetId, targetType) + + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async undeleteElement({ commit }, { elementId, elementType, keep_id = true }) { + try { + const resp = await Vue.prototype.$api.elements.undeleteElementById(elementId, elementType, keep_id) + commit('undeleteElementSuccess', { "elementId": elementId, "data": resp.data }) + return true + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + return false + } + }, + + // Note that this does NOT add the element to the current element list, + // you will have to refresh the list elsewhere + async createElement({ commit }, { elementType, createData }): Promise { + try { + const resp = await Vue.prototype.$api.elements.createElement(elementType, createData) + if (resp && resp.data && elementType == IRElementType.Incident) { + // When creating an incident, make a default summary entry + const entryCreateOrUpdateAttributes: any = { + target_type: IRElementType.Incident, + target_id: resp.data.id, + entry_class: EntryClassEnum.summary, + entry_data: { "html": default_incident_summary } + } + await Vue.prototype.$api.elements.updateOrCreateEntry(-1, entryCreateOrUpdateAttributes) + } + return resp.data + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveLinkedSignatures({ commit }, { associatedSigGuideMap }): Promise { + try { + const payload: any = {} + const signaturesRetrieved = [] + for (const sigID of Object.keys(associatedSigGuideMap)) { + const resp = await Vue.prototype.$api.elements.retrieveElementbyID(sigID, IRElementType.Signature) + signaturesRetrieved.push(resp.data) + } + payload['data'] = signaturesRetrieved + payload['elementType'] = IRElementType.Signature + commit('retrieveLinkedElementsSuccess', payload) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveLinkedSignaturesById({ commit, state }, { elementType, elementId }) { + try { + const payload: any = {} + const signaturesRetrieved = await Vue.prototype.$api.elements.retrieveElementSignaturesByID(elementId, elementType, state.SelectedElementAbortController) + payload['data'] = signaturesRetrieved.data + payload['elementType'] = IRElementType.Signature + commit('retrieveLinkedElementsSuccess', payload) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveLinkedGuides({ commit }, { associatedSigGuideMap }): Promise { + + try { + const payload: any = {} + const guidesRetrieved: Array = [] + for (const guideArray of Object.values(associatedSigGuideMap as Record>)) { + for (const guideID of guideArray) { + const resp = await Vue.prototype.$api.elements.retrieveElementbyID(guideID, IRElementType.Guide) + guidesRetrieved.push(resp.data) + } + } + payload['data'] = guidesRetrieved + payload['elementType'] = IRElementType.Guide + commit('retrieveLinkedElementsSuccess', payload) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + + } + }, + + async retrieveLinkedElementEntries({ commit }, { linkedElementId, linkedElementIndex, linkedElementType }): Promise { + + try { + const payload: any = {} + const resp = await Vue.prototype.$api.elements.retrieveElementEntriesbyID(linkedElementId, linkedElementType) + const respEntity = await Vue.prototype.$api.elements.retrieveElementEntitiesbyID(linkedElementId, linkedElementType) + payload["elementType"] = linkedElementType + payload["index"] = linkedElementIndex + payload["data"] = resp.data + commit('augmentElementEntities', { "data": respEntity.data }) + commit('retrieveLinkedElementsSuccess', { "data": respEntity.data.result, "elementType": IRElementType.Entity }) + commit('retrieveLinkedElementEntriesSuccess', payload) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + + } + }, + + async updateLinkedElement({ commit }, { updateData, linkedElementId, linkedElementIndex, linkedElementType }) { + try { + const resp = await Vue.prototype.$api.elements.updateElementById(linkedElementId, linkedElementType, updateData) + commit("updateLinkedElementSuccess", { payload: resp.data, linkedElementIndex, linkedElementId, linkedElementType }) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveElementEntriesbyID({ commit }, { elementID, elementType }): Promise { + try { + const entryResp = await Vue.prototype.$api.elements.retrieveElementEntriesbyID(elementID, elementType) + commit('retrieveElementEntriesbyIDSuccess', { "data": entryResp.data, "elementType": elementType }) + // Check to see if we have any unsubmitted (still being edited) entries for this element + const unsumbittedEditedEntry = await Vue.prototype.$storage.getItem('unsubmittedEditorEntry:' + elementType + ':' + elementID) + if (unsumbittedEditedEntry != null) { + if (unsumbittedEditedEntry == -1) { + // since this is unsubmitted, we know the entryId will be -1 + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementID + ':' + '-1') + commit('addNewEntryWithEditModeOn', editorEntryContent) + + } + else { + // There is an unsubitted already existing entry + const entryData = entryResp.data.result.find((entry: any) => entry.id === unsumbittedEditedEntry).entry_data + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementID + ':' + String(unsumbittedEditedEntry)) + editorEntryContent['entryId'] = unsumbittedEditedEntry + editorEntryContent['server_entry_data'] = entryData + await Vue.prototype.$storage.setItem('editorContent' + ':' + elementType + ':' + elementID + ':' + String(unsumbittedEditedEntry), editorEntryContent) + + commit('restoreCachedExistingEntryEditor', editorEntryContent) + } + } + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async reRetrieveElementInList({ commit, state }, { elementID, elementType }) { + try { + if (state.ElementType?.toLowerCase() != elementType.toLowerCase()) { + return false + } + let resp = null + // Do full retrieval (including updating view count) if item is currently selected + if (elementID == state.SelectedElement?.id) { + resp = await Vue.prototype.$api.elements.retrieveElementbyID(elementID, elementType, state.SelectedElementAbortController) + } + // Otherwise only do list retrieval + else { + resp = await Vue.prototype.$api.elements.retrieveElementsWithFilter(elementType, { "id": elementID, "limit": 1 }) + if (!resp.data?.result || resp.data.result?.length == 0) { + return false + } + resp.data = resp.data.result[0] + } + if (elementID == state.SelectedElement?.id) { + commit('retrieveElementbyIDSuccess', { "data": resp.data, "elementType": elementType }) + } + commit('updateElementSuccess', { "elementId": elementID, "data": resp.data }) + return true + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + return false + } + }, + + async retrieveSelectedElementbyID({ commit, state }, { elementID, elementType }): Promise { + try { + commit('retrieveNewSelectedElement', { elementID, elementType }) + const resp = await Vue.prototype.$api.elements.retrieveElementbyID(elementID, elementType, state.SelectedElementAbortController) + commit('retrieveElementbyIDSuccess', { "data": resp.data, "elementType": elementType }) + if (elementType == IRElementType.Entity && !state.SelectedElementAbortController?.signal.aborted) + { + const respEntity = await Vue.prototype.$api.elements.retrieveEntityAppearancesbyID(elementID, { limit: 25 }, state.SelectedElementAbortController) + commit('retrieveEntityAppearancesSuccess', {entityAppearances: respEntity.data}) + const respEntityPivot = await Vue.prototype.$api.elements.retrieveEntityPivotsbyID(elementID, state.SelectedElementAbortController) + commit('retrieveEntityPivotsSuccess', {entityAppearances: respEntityPivot.data.result}) + const respEntityEnrichment = await Vue.prototype.$api.elements.retrieveEntityEnrichmentsbyID(elementID, state.SelectedElementAbortController) + commit('retrieveEntityEnrichmentsSuccess', {entityAppearances: respEntityEnrichment.data.result}) + + } + + if (elementType != IRElementType.Alertgroup && elementType != IRElementType.Alert && elementType != IRElementType.Pivot && elementType != IRElementType.EntityClass && !state.SelectedElementAbortController?.signal.aborted) { + + // This an entry-based IR Element get the entries as well here. + + try { + const entryResp = await Vue.prototype.$api.elements.retrieveElementEntriesbyID(elementID, elementType, state.SelectedElementAbortController) + commit('retrieveElementEntriesbyIDSuccess', { "data": entryResp.data, "elementType": elementType }) + // Check to see if we have any unsubmitted (still being edited) entries for this element + const unsubmittedEditedEntry = await Vue.prototype.$storage.getItem('unsubmittedEditorEntry:' + elementType + ':' + elementID) + + if (unsubmittedEditedEntry != null) { + if (unsubmittedEditedEntry == -1) { + // since this is unsubmitted, we know the entryId will be -1 + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementID + ':' + '-1') + commit('addNewEntryWithEditModeOn', editorEntryContent) + } + else { + // There is an unsubitted already existing entry + const entry = entryResp.data.result.find((entry: any) => entry.id === unsubmittedEditedEntry) + if (entry && 'entry_data' in entry) { + + const entryData = entry.entry_data + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + + ':' + elementType + ':' + elementID + ':' + String(unsubmittedEditedEntry)) + editorEntryContent['entryId'] = unsubmittedEditedEntry + editorEntryContent['server_entry_data'] = entryData + const a = await Vue.prototype.$storage.setItem('editorContent' + + ':' + elementType + ':' + elementID + ':' + String(unsubmittedEditedEntry), editorEntryContent) + const t = await Vue.prototype.$storage.getItem('editorContent' + + ':' + elementType + ':' + elementID + ':' + String(unsubmittedEditedEntry)) + commit('restoreCachedExistingEntryEditor', editorEntryContent) + } + } + } + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + return false + } + } + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + commit('retrieveSelectedElementFailure') + } + return false + } + return true + }, + + async retrieveElementPermissions({ commit, state }, { elementID, elementType }): Promise<{ [key in PermissionEnum]?: Array }> { + try { + const resp = await Vue.prototype.$api.elements.retrieveElementPermissions(elementID, elementType, state.SelectedElementAbortController) + if (state.SelectedElement?.id == elementID && state.SelectedElement?.ElementType == elementType) { + commit('selectedElementPermissionsLoaded', resp.data) + } + return resp.data + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + return {} + } + }, + + + async reflairSelectedElementbyID({ commit, state }, { elementID, elementType }): Promise { + try { + const resp = await Vue.prototype.$api.elements.reflairSelectedElementById(elementID, elementType, state.SelectedElementAbortController) + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + return {} + } + }, + + async retrieveElementHistory({ commit, state }, { elementID, elementType }): Promise> { + try { + const resp = await Vue.prototype.$api.elements.retrieveElementHistory(elementID, elementType, state.SelectedElementAbortController) + if (state.SelectedElement?.id == elementID && state.SelectedElement?.ElementType == elementType) { + commit('selectedElementHistoryLoaded', resp.data) + } + return resp.data + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + return [] + } + }, + + async setElementPermissions({ commit }, { elementID, elementType, permissions }): Promise { + try { + const newPermissions: any = {} + // Translate newPermissions to only use role ids and not full roles (if given) + for (const permissionType in permissions) { + newPermissions[permissionType] = permissions[permissionType].map((r: Role) => r.id) + } + await Vue.prototype.$api.elements.setElementPermissions(elementID, elementType, newPermissions) + return true + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + return false + } + }, + + async addFlairedEntity({ commit }, { entity }): Promise { + commit('addFlairedEntitySuccess', { entity: entity}) + const respEntity = await Vue.prototype.$api.elements.retrieveEntityAppearancesbyID(entity.id, { limit: 25 }) + commit('addFlairedEntityAppearancesSuccess', { entity: entity, entityAppearances: respEntity.data }) + const respEntityPivot = await Vue.prototype.$api.elements.retrieveEntityPivotsbyID(entity.id) + const respEntityEnrichment = await Vue.prototype.$api.elements.retrieveEntityEnrichmentsbyID(entity.id) + commit('addFlairedEntityPivotsAndEnrichmentsSuccess', {entity:entity, entityPivots: respEntityPivot.data.result, entityEnrichments: respEntityEnrichment.data }) + }, + + + async resetFlairedEnrichmentsAndPivotsValue( { commit }): Promise{ + commit('resetFlairedEnrichmentsAndPivotsEvent') + }, + + async retrieveEntityAppearancesbyID({ commit }, { entity }): Promise{ + const respEntity = await Vue.prototype.$api.elements.retrieveEntityAppearancesbyID(entity.id, { limit: 25 }) + commit('retrieveEntityAppearancesSuccess', {entity: entity, entityAppearances: respEntity.data}) + }, + + async editEntryModeOn({ commit }, { entryId, treePath, linkedElementType, linkedElementIndex }): Promise { + commit('changeEntryToEditMode', { "entryId": entryId, "treePath": treePath, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex }) + }, + + async retrieveSelectedElementEntitiesbyID({ commit, state }, { elementID, elementType }): Promise { + // Let's get the entities for the element as well + try { + commit('entitiesLoading') + const respEntity = await Vue.prototype.$api.elements.retrieveElementEntitiesbyID(elementID, elementType, state.SelectedElementAbortController) + commit('retrieveElementEntitiesbyIDSuccess', { "data": respEntity.data, "elementType": elementType }) + commit('retrieveLinkedElementsSuccess', { "data": respEntity.data.result, "elementType": IRElementType.Entity }) + commit('entitiesLoaded') + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + commit('entitiesLoaded', true) + } + }, + + async retrieveSelectedElementFilesbyID({ commit, state }, { elementID, elementType }): Promise { + // Let's get the entities for the element as well + if (state.SelectedElement?.ElementType == elementType && state.SelectedElement?.id == elementID) + { + const respEntity = await Vue.prototype.$api.elements.retrieveElementFilesbyID(elementID, elementType) + commit('retrieveElementFilesbyIDSuccess', { "data": respEntity.data, "elementType": elementType }) + } + + }, + + async augmentSelectedElementEntries({ commit, state }, { entryID }): Promise { + // Grab an entry and add it to the list of this element's entries (or update an existing entry) + try { + const respEntry = await Vue.prototype.$api.elements.retrieveElementbyID(entryID, IRElementType.Entry, state.SelectedElementAbortController) + commit('augmentElementEntries', { "data": respEntry.data }) + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + } + }, + + async augmentLinkedElementEntries({ commit }, { entryID, linkedElementId,linkedElementType, linkedElementIndex }): Promise { + // Grab an entry and add it to the list of this element's entries (or update an existing entry) + try { + const respEntry = await Vue.prototype.$api.elements.retrieveElementbyID(entryID, IRElementType.Entry) + commit('augmentElementEntries', { "data": respEntry.data, linkedElementId, linkedElementType, linkedElementIndex }) + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + } + }, + + async augmentSelectedElementEntities({ commit, state }, { elementID, elementType, showLoading = true }): Promise { + // Get entities for a given element and add them to the selected item's entities + // Used to add entities out of promoted entries + try { + if (showLoading) { + commit('entitiesLoading') + } + const respEntity = await Vue.prototype.$api.elements.retrieveElementEntitiesbyID(elementID, elementType, state.SelectedElementAbortController) + commit('augmentElementEntities', { "data": respEntity.data }) + commit('retrieveLinkedElementsSuccess', { "data": respEntity.data.result, "elementType": IRElementType.Entity }) + if (showLoading) { + commit('entitiesLoaded') + } + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + if (showLoading) { + commit('entitiesLoaded', true) + } + } + }, + + async augmentSelectedElementEntitiesById({ commit, state }, { entityIds, showLoading = true }): Promise { + // Get the given entites and add them to the select element's entity list + try { + if (showLoading) { + commit('entitiesLoading') + } + const respEntity = await Vue.prototype.$api.elements.retrieveElementsWithFilter(IRElementType.Entity, { 'id': entityIds }, state.SelectedElementAbortController) + commit('augmentElementEntities', { "data": respEntity.data }) + commit('retrieveLinkedElementsSuccess', { "data": respEntity.data.result, "elementType": IRElementType.Entity }) + if (showLoading) { + commit('entitiesLoaded') + } + } + catch (e: any) { + if (!e.__CANCEL__) { + commit('errorOccurred', e, { root: true }) + } + if (showLoading) { + commit('entitiesLoaded', true) + } + } + }, + + async createNewEntityFromText({ commit }, {entityText, entityType, createEntityRegex }) { + try { + const extraBody = {'create_flair_regex': createEntityRegex} + const entityBody = {'value': entityText, 'type_name': entityType} + const respEntity = await Vue.prototype.$api.elements.createElement(IRElementType.Entity, entityBody, extraBody ) + commit('entitiesLoaded', true) + } + catch (e: any) { + commit('entitiesLoaded', true) + } + }, + + async toggleExpandEntry({ commit }, { entryId, treePath, linkedElementType, linkedElementIndex }): Promise { + commit('toggleExpandEntry', { "entryId": entryId, "treePath": treePath, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex }) + }, + + async toggleCollapseEntry({ commit }, { entryId, treePath, linkedElementType, linkedElementIndex }): Promise { + commit('toggleCollapseEntry', { "entryId": entryId, "treePath": treePath, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex }) + }, + + async editEntryModeOff({ commit }, { entryId, elementId, elementType, linkedElementId, linkedElementType, linkedElementIndex, treePath }): Promise { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + if (entryId < 0) { + commit('removeEntrySuccess', { "entryId": entryId, "treePath": treePath }) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + elementType + ':' + elementId) + } + else { + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + elementType + ':' + elementId) + if (editorEntryContent != null && editorEntryContent['server_entry_data'] != null) { + //We need to revert the entry_data back to this value here + commit('changeEntryToViewMode', { "entryId": entryId, "treePath": treePath, "entry_data": editorEntryContent["server_entry_data"] }) + + } + else { + commit('changeEntryToViewMode', { "entryId": entryId, "treePath": treePath, "entry_data": null }) + } + } + } + else { + if (entryId < 0) { + commit('removeEntrySuccess', { "entryId": entryId, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId }) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + linkedElementType + ':' + linkedElementId) + } + else { + const editorEntryContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + linkedElementType + ':' + linkedElementId) + if (editorEntryContent != null && editorEntryContent['server_entry_data'] != null) { + //We need to revert the entry_data back to this value here + commit('changeEntryToViewMode', { + "entryId": entryId, "entry_data": editorEntryContent["server_entry_data"], + "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId + }) + + } + else { + commit('changeEntryToViewMode', { + "entryId": entryId, "entry_data": null, + "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId + }) + } + } + } + }, + async addNewEntryWithEditModeOn({ commit }, { newEntryPayload, linkedElementId, linkedElementType, linkedElementIndex, treePath, parentEntryId }): Promise { + newEntryPayload["linkedElementId"] = linkedElementId + newEntryPayload["linkedElementType"] = linkedElementType + newEntryPayload["linkedElementIndex"] = linkedElementIndex + newEntryPayload["treePath"] = treePath + newEntryPayload["parentEntryId"] = parentEntryId + commit('addNewEntryWithEditModeOn', newEntryPayload) + + }, + + + async modifySelectedAlertIds({ commit }, { alertIds }): Promise { + // Only changes the list of "selected alert ids" i.e. what alert rows the analyst selected. + // not anything about the alerts themselves + commit('setSelectedAlertIds', alertIds) + }, + + async modifySelectedAlertStatus({ commit }, { selectedAlertIds, newStatus }): Promise { + try { + for (const alertID of selectedAlertIds) { + const resp = await Vue.prototype.$api.elements.changeElementStatus(alertID, IRElementType.Alert, newStatus) + commit('updateSelectedElementAlertStatus', { "data": resp.data }) + } + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + + }, + + + async promoteSelectedAlerts({ commit }, { selectedAlertIds, newSources, newTags }): Promise { + try { + const resp = await Vue.prototype.$api.elements.promoteElements(selectedAlertIds, IRElementType.Alert, newTags, newSources) + commit('promoteAlertsSuccessful', { "promotedAlerts": selectedAlertIds, "data": resp.data }) + return resp.data + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + async promoteSelectedAlertsToExisting({ commit }, { selectedAlertIds, existingEventId, newTags, newSources }): Promise { + try { + const resp = await Vue.prototype.$api.elements.promoteElementsToExisting(selectedAlertIds, IRElementType.Alert, existingEventId, newTags, newSources) + commit('promoteAlertsSuccessful', { "promotedAlerts": selectedAlertIds, "data": resp.data }) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async promoteElements({ commit }, { elementType, elementIds, newTags, newSources }): Promise { + try { + const resp = await Vue.prototype.$api.elements.promoteElements(elementIds, elementType, newTags, newSources) + // This always promotes an event to a new incident, so create default incident summary + if (resp && elementType == IRElementType.Event) { + const entryCreateOrUpdateAttributes: any = { + target_type: IRElementType.Incident, + target_id: resp.data.id, + entry_class: EntryClassEnum.summary, + entry_data: { "html": default_incident_summary } + } + await Vue.prototype.$api.elements.updateOrCreateEntry(-1, entryCreateOrUpdateAttributes) + } + commit('promoteElementsSuccess', { "promotedIds": elementIds, "promotedType": elementType, "newObject": resp.data }) + return resp.data + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + return null + } + }, + + async cacheEditorContent({ commit }, { editorContent, entryId, elementId, elementType, entryType, owner, tlp, linkedElementId, linkedElementType, linkedElementIndex, treePath }): Promise { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + try { + const editorCacheObj: any = { entryData: { html: editorContent }, server_entry_data: null, IRElementType: elementType, IRElementTypeId: elementId, EntryClassEnum: entryType, owner: owner, TLPCode: tlp, treePath: treePath } + + const existingCache = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + if (existingCache && existingCache['server_entry_data']) { + editorCacheObj['server_entry_data'] = existingCache['server_entry_data'] + + } + await Vue.prototype.$storage.setItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId, editorCacheObj) + await Vue.prototype.$storage.setItem('unsubmittedEditorEntry:' + elementType + ':' + elementId, entryId) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + } + else { + + try { + const editorCacheObj = { entryData: { html: editorContent }, IRElementType: linkedElementType, IRElementTypeId: linkedElementId, EntryClassEnum: entryType, owner: owner, TLPCode: tlp } + + Vue.prototype.$storage.setItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId, editorCacheObj) + Vue.prototype.$storage.setItem('unsubmittedEditorEntry:' + linkedElementType + ':' + linkedElementId, entryId) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + } + }, + + async retrieveCachedEditorContent({ commit }, { entryId, elementId, elementType, linkedElementId, linkedElementType, linkedElementIndex }): Promise { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + try { + const editorContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + return editorContent + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + } + else { + try { + const editorContent = await Vue.prototype.$storage.getItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + return editorContent + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + } + + }, + + async updateOrCreateEntryContent({ commit, rootState }, { entryId, entryType, elementId, elementType, entryOwner, entryContent, linkedElementId, linkedElementType, linkedElementIndex, treePath }): Promise { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + try { + if (entryId == -1) { + const newEntryType = entryType ? EntryClassEnum[entryType as keyof typeof EntryClassEnum] : EntryClassEnum.entry + // This is a create + const entryCreateOrUpdateAttributes = { + owner: entryOwner, + target_type: elementType, + target_id: elementId, + entry_class: newEntryType, + entry_data: entryContent, + parent_entry_id: getParentEntryId(treePath) + } + commit('changeEntryToLoading', { "entryId": entryId, "treePath": treePath }) + const resp = await Vue.prototype.$api.elements.updateOrCreateEntry(entryId, entryCreateOrUpdateAttributes) + commit('removeEntrySuccess', { "entryId": entryId, "treePath": treePath }) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + elementType + ':' + elementId) + resp.data['treePath'] = treePath + commit('updateOrCreateEntrySuccess', resp.data) + + } + else { + // Don't change entry type if not given, also don't change entry owner from this function + const modifyEntryType = entryType ? EntryClassEnum[entryType as keyof typeof EntryClassEnum] : undefined + const entryCreateOrUpdateAttributes = { + target_type: elementType, + target_id: elementId, + entry_class: modifyEntryType, + entry_data: entryContent, + parent_entry_id: getParentEntryId(treePath) + } + const resp = await Vue.prototype.$api.elements.updateOrCreateEntry(entryId, entryCreateOrUpdateAttributes) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + elementType + ':' + elementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + elementType + ':' + elementId) + resp.data['treePath'] = treePath + commit('updateOrCreateEntrySuccess', resp.data) + } + return true + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + commit('changeEntryToEditMode', { "entryId": entryId, "treePath": treePath }) + if (axios.isAxiosError(e) && e.response?.status == 404) { + rootState.errorText += ", it may have been deleted while you were editing it" + } + return false + } + } + else { + try { + if (entryId == -1) { + const newEntryType = entryType ? EntryClassEnum[entryType as keyof typeof EntryClassEnum] : EntryClassEnum.entry + // This is a create + const entryCreateOrUpdateAttributes = { + owner: entryOwner, + target_type: linkedElementType, + target_id: linkedElementId, + entry_class: newEntryType, + entry_data: entryContent, + parent_entry_id: getParentEntryId(treePath) + } + const resp = await Vue.prototype.$api.elements.updateOrCreateEntry(entryId, entryCreateOrUpdateAttributes) + commit('removeEntrySuccess', { "entryId": entryId, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId, "treePath": treePath }) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + linkedElementType + ':' + linkedElementId) + resp.data['linkedElementType'] = linkedElementType + resp.data['linkedElementId'] = linkedElementId + resp.data['linkedElementIndex'] = linkedElementIndex + resp.data['treePath'] = treePath + commit('updateOrCreateEntrySuccess', resp.data) + + } + else { + // Don't change entry type if not given, also don't change entry owner from this function + const modifyEntryType = entryType ? EntryClassEnum[entryType as keyof typeof EntryClassEnum] : undefined + const entryCreateOrUpdateAttributes = { + target_type: linkedElementType, + target_id: linkedElementId, + entry_class: modifyEntryType, + entry_data: entryContent, + parent_entry_id: getParentEntryId(treePath) + } + const resp = await Vue.prototype.$api.elements.updateOrCreateEntry(entryId, entryCreateOrUpdateAttributes) + await Vue.prototype.$storage.removeItem('editorContent' + ':' + linkedElementType + ':' + linkedElementId + ':' + entryId) + await Vue.prototype.$storage.removeItem('unsubmittedEditorEntry:' + linkedElementType + ':' + linkedElementId) + resp.data['linkedElementType'] = linkedElementType + resp.data['linkedElementId'] = linkedElementId + resp.data['linkedElementIndex'] = linkedElementIndex + resp.data['treePath'] = treePath + commit('updateOrCreateEntrySuccess', resp.data) + } + return true + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + if (axios.isAxiosError(e) && e.response?.status == 404) { + rootState.errorText += ", it may have been deleted while you were editing it" + } + return false + } + } + }, + + async updateEntryAttributes({ commit }, { entryId, updateData, linkedElementId, linkedElementType, linkedElementIndex, treePath }) { + try { + const resp = await await Vue.prototype.$api.elements.updateOrCreateEntry(entryId, updateData) + if (linkedElementId != null || linkedElementIndex != null || linkedElementType != null) { + resp.data['linkedElementType'] = linkedElementType + resp.data['linkedElementId'] = linkedElementId + resp.data['linkedElementIndex'] = linkedElementIndex + } + resp.data['treePath'] = treePath + commit('updateOrCreateEntrySuccess', resp.data) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async setElementPaneHeight({ commit }, { paneHeight }): Promise { + commit('setElementPaneHeight', paneHeight) + }, + async setSelectedElementSize({ commit }, newSize): Promise { + commit('setSelectedElementSize', newSize) + }, + async clearSelectedElementFlair({ commit }): Promise { + commit('clearSelectedElementFlair') + }, + async clearSelectedElement({ commit }): Promise { + commit('clearSelectedElement') + commit('setSelectedElementSize', 0) + }, + + async flairDialogSetToTrue({ commit }): Promise { + commit('flairDialogChange', true) + }, + + async flairDialogSetToFalse({ commit }): Promise { + commit('flairDialogChange', false) + }, + + async removeFlairedEntity( { commit }, {entity}): Promise { + commit('removeFlairedEntity', entity) + }, + + async submitFile({ commit }, {formData, targetType, targetId}): Promise{ + try{ + const resp = await Vue.prototype.$api.elements.submitFile(formData, targetType, targetId) + if (resp) { + return true + } + return false + } + catch(e:any){ + commit('errorOccurred', e, { root: true }) + return false + } + }, + + + + async openFlairMenu({ commit }, { menuX, menuY, menuEntity }): Promise { + commit('setFlairMenuPosition', { x: menuX, y: menuY }) + commit('setFlairMenuVisible', true) + commit('setFlairMenuEntity', menuEntity) + }, + + async closeFlairMenu({ commit }) { + commit('setFlairMenuVisible', false) + commit('setFlairMenuEntity', null) + }, + + async retrieveTags({ commit }, filterDict): Promise { + try { + const resp = await Vue.prototype.$api.elements.retrieveTags(filterDict) + commit('retrieveTagsSuccess', resp.data) + return resp.data.result + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveAllEntityClasses({ commit }): Promise { + try { + const resp = await Vue.prototype.$api.elements.retrieveAllEntityClasses() + commit('retrieveAllEntityClassesSuccess', resp.data) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async updateEntityClassDescription({ commit }, {entityClassId, entityId, newDescription}): Promise { + try{ + const resp = await Vue.prototype.$api.elements.updateEntityClassDescriptionById(entityClassId, {description:newDescription}) + commit('updateEntityClassDescriptionSuccess', resp.data) + } + catch(e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async retrieveSources({ commit }, filterDict): Promise { + try { + const resp = await Vue.prototype.$api.elements.retrieveSources(filterDict) + commit('retrieveSourcesSuccess', resp.data) + return resp.data.result + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + + async submitTagsOrSources({ commit }, { newTagsOrSources, type, targetElementId, targetElementType }): Promise { + try { + for (const tagOrSource of newTagsOrSources) { + let resp = null + if (type == "tag") { + const addTagBody: any = { + target_type: targetElementType, + tag_name: tagOrSource, + tag_description: "", + target_id: targetElementId, + } + resp = await Vue.prototype.$api.elements.addTag(addTagBody) + } + else { + const addSourceBody: any = { + target_type: targetElementType, + source_name: tagOrSource, + source_description: "", + target_id: targetElementId, + } + resp = await Vue.prototype.$api.elements.addSource(addSourceBody) + + } + commit('addTagOrSourceSuccess', { newTagOrSource: resp.data, type: type, targetElementId, targetElementType }) + } + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + + async submitEntityClasses({ commit }, { newEntityClasses, targetEntityId}): Promise { + try { + let resp = null + resp = await Vue.prototype.$api.elements.addEntityClass(targetEntityId, newEntityClasses) + commit('addEntityClassesSuccess', resp.data) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async attachEntityClassesToPivot({ commit }, { pivotId, entityClasses}): Promise { + try { + let resp = null + resp = await Vue.prototype.$api.elements.submitPivotEntityClasses(pivotId, entityClasses) + commit('retrieveElementbyIDSuccess', { "data": resp.data, "elementType": IRElementType.Pivot }) + + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async attachEntityTypesToPivot({ commit }, { pivotId, entityTypes}): Promise { + try { + let resp = null + resp = await Vue.prototype.$api.elements.submitPivotEntityTypes(pivotId, entityTypes) + commit('retrieveElementbyIDSuccess', { "data": resp.data, "elementType": IRElementType.Pivot }) + + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async removeEntityClasses({ commit }, { entityClassId, targetEntityId}): Promise { + try { + let resp = null + resp = await Vue.prototype.$api.elements.removeEntityClass(targetEntityId, [entityClassId]) + commit('removeEntityClassesSuccess', resp.data) + } + + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async unAssignTagOrSourceDescription({ commit }, { id, type, targetElementType, targetElementId }): Promise { + try { + let resp = null + const removeBody: any = { + target_type: targetElementType, + target_id: targetElementId, + } + + if (type == "tag") { + resp = await Vue.prototype.$api.elements.removeTag(id, removeBody) + resp.data['type'] = "tag" + } + else { + + resp = await Vue.prototype.$api.elements.removeSource(id, removeBody) + resp.data['type'] = "source" + } + commit('unAssignTagOrSourceSuccess', { ...resp.data, targetElementType, targetElementId }) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + async updateTagOrSourceDescription({ commit }, { id, type, description }): Promise { + try { + let resp = null + if (type == "tag") { + resp = await Vue.prototype.$api.elements.updateTag(id, { description: description }) + } + else { + resp = await Vue.prototype.$api.elements.updateSource(id, { description: description }) + + } + commit('updateTagOrSourceDescriptionSuccess', resp.data) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, + + + async removeEntryByID({ commit }, { entryId, treePath, linkedElementId, linkedElementType, linkedElementIndex }): Promise { + try { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + const resp = await Vue.prototype.$api.elements.deleteEntryByID(entryId) + commit('removeEntrySuccess', { "entryId": entryId, "treePath": treePath, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId }) + } + else { + const resp = await Vue.prototype.$api.elements.deleteEntryByID(entryId) + commit('removeEntrySuccess', { "entryId": entryId, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId, "treePath": treePath }) + } + } + catch(e: any) { + if (axios.isAxiosError(e) && e.response?.status == 404) { + commit('removeEntrySuccess', { "entryId": entryId, "treePath": treePath, "linkedElementType": linkedElementType, "linkedElementIndex": linkedElementIndex, "linkedElementId": linkedElementId }) + } + commit('errorOccurred', e, { root: true }) + } + }, + + async deleteLinksBetweenElements({ commit }, { elementType0, elementId0, elementType1, elementId1, bidirectional }) { + try { + const resp = await Vue.prototype.$api.elements.deleteLinksBetweenElements(elementType0, elementId0, elementType1, elementId1, bidirectional) + commit('unlinkElementsSuccess', resp.data) + } + catch (e: any) { + commit('errorOccurred', e, { root: true }) + } + }, +}; \ No newline at end of file diff --git a/src/store/modules/IRElements/getters.ts b/src/store/modules/IRElements/getters.ts new file mode 100644 index 0000000..5f64eb0 --- /dev/null +++ b/src/store/modules/IRElements/getters.ts @@ -0,0 +1,738 @@ +import Vuetify from '@/plugins/vuetify' +import { GetterTree } from 'vuex'; +import { IRElement, IRElementMeta, IRElementsListState, IRElementType, LinkedElement, ScotFile, PermissionEnum, Entry, NewEntry, Entity, Tag, Source } from './types'; +import { RootState } from '@/store/types'; +import { findEntry } from '@/utils/treeUtils'; +import { findLinkedElementEntry } from '@/utils/linkedTreeUtils'; +import { Role } from '../user/types'; +import { Audit } from '../team/types'; + +export const getters: GetterTree = { + elementList(state): Array | null { + return state.ElementList + }, + retrievingElements(state): boolean { + return state.retrievingElements + }, + totalElementListCount(state): number { + return state.totalElementListCount + }, + elementListPage(state): number { + return state.elementListPage + }, + elementListItemsPerPage(state): number { + return state.elementListItemsPerPage + }, + elementListSortBy(state): string | undefined { + return state.elementListSortBy + }, + elementListSortDesc(state): boolean { + return state.elementListSortDesc + }, + elementListFilterDict(state): any { + return { + ...state.elementListFilter, + limit: state.elementListItemsPerPage, + skip: (state.elementListPage - 1) * state.elementListItemsPerPage, + sort: state.elementListSortBy ? (state.elementListSortDesc ? "-" : "") + state.elementListSortBy : undefined + } + }, + elementListFilterIsDefault(state): boolean { + return Object.keys(state.elementListFilter).length == 0 && + state.elementListPage == 1 && + state.elementListSortBy == "id" && + state.elementListSortDesc + }, + selectedElementFiles(state):Array { + return state.SelectedElementFiles + }, + elementType(state): IRElementType | null { + return state.ElementType + }, + elementTypePluralized(state): string | null { + if (state.ElementType == IRElementType.Entity){ + return "entities" + } + else if (state.ElementType == IRElementType.Dispatch){ + return "dispatches" + } + else if (state.ElementType == IRElementType.EntityClass){ + return "entity classes" + } + else if (state.ElementType == IRElementType.Entry) { + return "entries" + } + else if (state.ElementType == IRElementType.VulnFeed) { + return "vuln feeds" + } + else if (state.ElementType == IRElementType.VulnTrack) { + return "vuln tracks" + } + else{ + return state.ElementType + "s" + } + }, + isAlertGroupElementType(state): boolean { + if (state.ElementType == IRElementType.Alertgroup) { + return true + } + else { + return false + } + }, + selectedElement(state): IRElement | null { + return state.SelectedElement + }, + + selectedElementEntityCount(state): number { + return state.SelectedElementEntities.length + }, + + selectedElementEntities(state): Record> { + const initialValue: any = {}; + + return state.SelectedElementEntities.reduce((obj, item) => { + const t = String(item['type_name']) + const value = String(item['value']).toLowerCase() + if (t in obj) { + obj[t][value] = item + } + else { + obj[t] = {} + obj[t][value] = item + } + return obj + }, initialValue); + }, + + selectedElementEntitiesArray(state): Array { + return state.SelectedElementEntities + }, + + selectedElementEntityIndex(state): CallableFunction { + return function (entityId: number) { + return state.SelectedElementEntities.findIndex((e) => e.id == entityId) + } + }, + + selectedElementPermissions(state): { [key in PermissionEnum]?: Array } { + return state.SelectedElementPermissions + }, + + selectedElementHistory(state): Array { + return state.SelectedElementHistory + }, + + selectedElementLinkedElements(state): { [key in IRElementType]: Array } | null{ + if (!state.SelectedElement) { + return null + } + if (!state.SelectedElement?.linkedElements) { + state.SelectedElement.linkedElements = { + [IRElementType.Alertgroup]: [], + [IRElementType.Event]: [], + [IRElementType.Intel]: [], + [IRElementType.Product]: [], + [IRElementType.Incident]: [], + [IRElementType.Dispatch]: [], + [IRElementType.Alert]: [], + [IRElementType.Guide]: [], + [IRElementType.Signature]: [], + [IRElementType.ThreatModelItem]: [], + [IRElementType.Link]: [], + [IRElementType.Entity]: [], + [IRElementType.Entry]: [], + [IRElementType.File]: [], + [IRElementType.Feed]: [], + [IRElementType.Pivot]: [], + [IRElementType.EntityClass]: [], + [IRElementType.VulnFeed]: [], + [IRElementType.VulnTrack]: [], + } + } + return state.SelectedElement.linkedElements + }, + + selectedElementAbortController(state): AbortController | null{ + return state.SelectedElementAbortController + }, + + entitiesLoaded(state): boolean { + return state.entitiesLoaded + }, + + linkedEntriesChanged(state): boolean { + return state.linkedEntriesChanged + }, + + flairVisible(state): boolean { + return state.flairVisible + }, + + flairDialog(state): boolean { + return state.flairDialog && state.SelectedElementFlairedEntities.length > 0 + }, + + flairMenuVisible(state): boolean { + return state.flairMenuVisible + }, + + flairMenuX(state): number { + return state.flairMenuX + }, + + flairMenuY(state): number { + return state.flairMenuY + }, + + flairMenuEntity(state): Entity | null { + return state.flairMenuEntity + }, + + fileDialog(state): boolean { + return state.fileDialog + }, + + elementPaneHeight(state): number | null { + return state.elementPaneHeight + }, + selectedElementPaneSize(state, getters, rootState, rootGetters): number { + const inboxState = rootGetters['user/inboxView'] + if (inboxState) { + return 100 + } + else { + return state.selectedElementSize + } + }, + queueTablePaneSize(state, getters, rootState, rootGetters): number { + const inboxState = rootGetters['user/inboxView'] + if (inboxState) { + return 0 + } + else { + return 100 - state.selectedElementSize + } + }, + selectedElementFlairedEntities(state): Array { + return state.SelectedElementFlairedEntities + }, + selectedElementEntriesLength(state): number { + return state.SelectedElementEntries.length + }, + selectedElementEntries(state): Array | null { + state.SelectedElementEntries.sort(function compare(a, b) { + if (String(a.entry_class) == "summary" && String(b.entry_class) != "summary") { + return -1 + } + else if (String(a.entry_class) != "summary" && String(b.entry_class) == "summary") { + return 1 + } + else if (String(a.entry_class) != "summary" && String(b.entry_class) == "promotion") { + return 1 + } + else if (String(a.entry_class) == "promotion" && String(b.entry_class) != "summary") { + return -1 + } + else if (a.created > b.created) { + return 1 + } + else if (a.created < b.created) { + return -1 + } + else { + return 0 + } + }) + return state.SelectedElementEntries + }, + + selectedElementAlertIds(state): Array | null | undefined { + if (state.SelectedElement != null && state.SelectedElement.ElementType === IRElementType.Alertgroup) { + return state.SelectedElement.selectedAlertIds + } + else { + return null + } + }, + + linkedElementEntries(state): CallableFunction { + return function (linkedElementId: number, linkedElementType: IRElementType) { + if (state.SelectedElement && state.SelectedElement.linkedElements) { + const entries = state.SelectedElement?.linkedElements[linkedElementType as IRElementType].find((obj) => obj.element.id == linkedElementId)?.entries + entries?.sort(function compare(a, b) { + if (String(a.entry_class) == "summary" && String(b.entry_class) != "summary") { + return -1 + } + else if (String(a.entry_class) != "summary" && String(b.entry_class) == "summary") { + return 1 + } + else if (String(a.entry_class) != "summary" && String(b.entry_class) == "promotion") { + return 1 + } + else if (String(a.entry_class) == "promotion" && String(b.entry_class) != "promotion") { + return -1 + } + else if (a.created > b.created) { + return 1 + } + else if (a.created < b.created) { + return -1 + } + else { + return 0 + } + }) + return entries + } + return null + } + }, + + entryById(state): CallableFunction { + return function (id: number, treePath: string = "", linkedElementId = null, linkedElementIndex: unknown = null, linkedElementType: unknown = null) { + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + return findEntry(treePath, state, id) + } + else { + if (state.SelectedElement != null && state.SelectedElement != undefined && state.SelectedElement.linkedElements != null && linkedElementType != null && linkedElementIndex != null) { + + return findLinkedElementEntry(treePath, state, id, linkedElementType as IRElementType, linkedElementIndex as number) + } + } + } + }, + + entryEditModeById(state): CallableFunction { + return function (id: number, treePath: string = "", linkedElementId = null, linkedElementIndex: unknown = null, linkedElementType: unknown = null) { + let entry = null + if (linkedElementId == null && linkedElementIndex == null && linkedElementType == null) { + entry = findEntry(treePath, state, id) + + } + else { + if (state.SelectedElement != null && state.SelectedElement != undefined && state.SelectedElement.linkedElements != null && linkedElementType != null && linkedElementIndex != null) { + entry = findLinkedElementEntry(treePath, state, id, linkedElementType as IRElementType, linkedElementIndex as number) + } + } + if (entry != undefined) { + if (entry.editMode != undefined) { + return entry.editMode + + } + else { + // If the entry exists but editMode is not an attribute + return false + } + } + else { + return false + } + } + }, + + tabulatorAlertGroupTableColumns(state): Array | undefined { + function statusFormatterFunction(cell: any, formatterParams: any, onRendered: any) { + if (cell.getValue() != "open" && cell.getValue() != "closed") { + const promotionIds = cell.getValue() + if (promotionIds.length == 1) { + const href = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + "/" + "events" + "/" + promotionIds[0] + return "
" + "Promoted" + "" + } + else { + let fullString = "" + for (const id of promotionIds) { + const href = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + "/" + "events" + "/" + id + fullString += '