@coopenomics/desktop 2.2.10 → 2025.4.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/.env-example +6 -1
  2. package/.env-testnet +8 -0
  3. package/Dockerfile +12 -0
  4. package/extensions/market/install.ts +78 -0
  5. package/extensions/market-admin/install.ts +42 -0
  6. package/extensions/participant/install.ts +125 -0
  7. package/extensions/powerup/install.ts +20 -0
  8. package/extensions/soviet/install.ts +83 -0
  9. package/package.json +6 -5
  10. package/quasar.config.cjs +5 -12
  11. package/src/app/App.vue +44 -73
  12. package/src/app/layouts/default.vue +40 -0
  13. package/src/app/layouts/useDefaultLayoutLogic.ts +59 -0
  14. package/src/app/providers/routes/index.ts +19 -34
  15. package/src/app/styles/style.css +4 -0
  16. package/src/boot/init.ts +6 -0
  17. package/src/boot/sentry.ts +1 -2
  18. package/src/desktops/index.ts +0 -6
  19. package/src/entities/Account/model/index.ts +1 -1
  20. package/src/entities/Agenda/api/index.ts +20 -0
  21. package/src/entities/Agenda/index.ts +2 -0
  22. package/src/entities/Agenda/model/index.ts +2 -0
  23. package/src/entities/Agenda/model/store.ts +36 -0
  24. package/src/entities/Agenda/model/types.ts +4 -0
  25. package/src/entities/Branch/model/index.ts +1 -1
  26. package/src/entities/Desktop/api/index.ts +16 -1
  27. package/src/entities/Desktop/model/store.ts +112 -106
  28. package/src/entities/Desktop/model/types.ts +14 -1
  29. package/src/entities/Document/api/index.ts +24 -0
  30. package/src/entities/Document/index.ts +2 -0
  31. package/src/entities/Document/model/store.ts +117 -0
  32. package/src/entities/Document/model/types.ts +18 -0
  33. package/src/entities/Meet/api/index.ts +58 -0
  34. package/src/entities/Meet/index.ts +2 -0
  35. package/src/entities/Meet/model/store.ts +72 -0
  36. package/src/entities/Meet/types/index.ts +7 -0
  37. package/src/entities/Payment/api/index.ts +20 -0
  38. package/src/entities/Payment/model/index.ts +2 -0
  39. package/src/entities/Payment/model/store.ts +62 -0
  40. package/src/entities/Payment/model/types.ts +7 -0
  41. package/src/entities/Session/model/store.ts +3 -3
  42. package/src/entities/System/model/store.ts +1 -1
  43. package/src/entities/User/model/stores.ts +3 -1
  44. package/src/entities/Wallet/api/index.ts +15 -33
  45. package/src/entities/Wallet/model/stores.ts +3 -23
  46. package/src/entities/Wallet/model/types.ts +2 -3
  47. package/src/features/Agreementer/SignAgreementDialog/ui/SignAgreementDialog.vue +1 -1
  48. package/src/features/Branch/SelectBranch/index.ts +2 -0
  49. package/src/features/Branch/SelectBranch/ui/SelectBranchOverlay.vue +52 -105
  50. package/src/features/Decision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +1 -1
  51. package/src/features/Decision/ParticipantApplication/model/index.ts +38 -0
  52. package/src/features/FreeDecision/CreateProject/model/index.ts +92 -0
  53. package/src/features/FreeDecision/CreateProject/ui/CreateProjectFreeDecisionButton.vue +51 -0
  54. package/src/features/FreeDecision/CreateProject/ui/index.ts +1 -0
  55. package/src/features/FreeDecision/GenerateDecision/index.ts +1 -0
  56. package/src/features/FreeDecision/GenerateDecision/model/index.ts +36 -0
  57. package/src/features/FreeDecision/index.ts +2 -0
  58. package/src/features/Meet/CloseMeetWithDecision/index.ts +1 -0
  59. package/src/features/Meet/CloseMeetWithDecision/model/index.ts +92 -0
  60. package/src/features/Meet/CreateMeet/index.ts +2 -0
  61. package/src/features/Meet/CreateMeet/model/index.ts +65 -0
  62. package/src/features/Meet/CreateMeet/ui/CreateMeet.vue +34 -0
  63. package/src/features/Meet/CreateMeet/ui/CreateMeetForm.vue +136 -0
  64. package/src/features/Meet/CreateMeet/ui/index.ts +2 -0
  65. package/src/features/Meet/GenerateAgenda/index.ts +1 -0
  66. package/src/features/Meet/GenerateAgenda/model/index.ts +18 -0
  67. package/src/features/Meet/GenerateBallot/index.ts +1 -0
  68. package/src/features/Meet/GenerateBallot/model/index.ts +18 -0
  69. package/src/features/Meet/GenerateNotification/index.ts +1 -0
  70. package/src/features/Meet/GenerateNotification/model/index.ts +18 -0
  71. package/src/features/Meet/GenerateSovietDecision/index.ts +1 -0
  72. package/src/features/Meet/GenerateSovietDecision/model/index.ts +48 -0
  73. package/src/features/Meet/MeetDetailsManagement/index.ts +1 -0
  74. package/src/features/Meet/MeetDetailsManagement/model/index.ts +121 -0
  75. package/src/features/Meet/RestartMeet/index.ts +2 -0
  76. package/src/features/Meet/RestartMeet/model/index.ts +54 -0
  77. package/src/features/Meet/RestartMeet/ui/RestartMeet.vue +46 -0
  78. package/src/features/Meet/RestartMeet/ui/RestartMeetForm.vue +92 -0
  79. package/src/features/Meet/RestartMeet/ui/index.ts +2 -0
  80. package/src/features/Meet/VoteOnMeet/index.ts +1 -0
  81. package/src/features/Meet/VoteOnMeet/model/index.ts +18 -0
  82. package/src/features/Payment/SetStatus/api/index.ts +20 -0
  83. package/src/features/Payment/SetStatus/index.ts +1 -0
  84. package/src/features/Payment/SetStatus/model/index.ts +30 -0
  85. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/SetOrderPaidStatusButton.vue +7 -3
  86. package/src/features/PaymentMethod/AddPaymentMethod/model/index.ts +2 -2
  87. package/src/features/PaymentMethod/AddPaymentMethod/ui/AddPaymentButton.vue +1 -1
  88. package/src/features/PaymentMethod/DeletePaymentMethod/model/index.ts +1 -1
  89. package/src/features/PaymentMethod/DeletePaymentMethod/ui/DeletePaymentMethodButton.vue +3 -1
  90. package/src/features/Request/CancelRequest/ui/CancelButton.vue +1 -1
  91. package/src/features/Request/ConfirmRecieveOnRequest/ui/ConfirmRecieveOnRequest.vue +1 -1
  92. package/src/features/Request/CreateParentOffer/ui/CreateParentOfferForm/CreateParentOfferForm.vue +3 -5
  93. package/src/features/Request/CreateParentOffer/ui/ImageUploaderWithPreview/ImageUploaderWithPreview.vue +4 -3
  94. package/src/features/Request/DisputeOnRequest/ui/DisputeOnRequestButton.vue +1 -1
  95. package/src/features/Request/ModerateRequest/ui/ModerateRequestButton.vue +2 -2
  96. package/src/features/Request/PublishRequest/ui/PublishRequestButton.vue +1 -1
  97. package/src/features/Request/RecieveOnRequest/ui/RecieveOnRequestButton.vue +1 -1
  98. package/src/features/Request/UnpublishRequest/ui/UnpublishRequestButton.vue +1 -1
  99. package/src/features/Union/AddCooperative/model/index.ts +4 -5
  100. package/src/features/Union/AddCooperative/ui/AddCooperativeForm.vue +5 -6
  101. package/src/features/User/AddUser/ui/AddUserDialog/AddUserDialog.vue +4 -4
  102. package/src/features/User/LoginUser/model/index.ts +3 -3
  103. package/src/features/User/LoginUser/ui/LoginForm/LoginForm.vue +0 -6
  104. package/src/features/User/Logout/model/index.ts +2 -0
  105. package/src/features/Wallet/DepositToWallet/ui/DepositButton/DepositButton.vue +8 -7
  106. package/src/features/Wallet/WithdrawFromWallet/ui/withdrawButton.vue +6 -7
  107. package/src/pages/Blank/index.ts +1 -0
  108. package/src/pages/Contacts/ContactsPage.vue +64 -0
  109. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/index.ts +0 -1
  110. package/src/{widgets/Cooperative/Contributions/ui/ChangeContributions.vue → pages/Cooperative/ChangeRegisterPayments/ui/ChangeRegisterPayments.vue} +10 -11
  111. package/src/pages/Cooperative/ChangeRegisterPayments/ui/index.ts +1 -0
  112. package/src/pages/Cooperative/ListOfAgenda/index.ts +1 -0
  113. package/src/pages/Cooperative/ListOfAgenda/ui/ListOfAgendaQuestions.vue +118 -0
  114. package/src/pages/Cooperative/ListOfAgenda/ui/index.ts +1 -0
  115. package/src/pages/Cooperative/ListOfDocuments/ListOfDocumentsPage.vue +24 -0
  116. package/src/pages/Cooperative/ListOfMeets/model/index.ts +1 -0
  117. package/src/pages/Cooperative/ListOfMeets/model/model.ts +117 -0
  118. package/src/pages/Cooperative/ListOfMeets/ui/ListOfMeetsPage.vue +90 -0
  119. package/src/pages/Cooperative/ListOfMeets/ui/index.ts +1 -0
  120. package/src/pages/Cooperative/ListOfOrders/index.ts +1 -1
  121. package/src/pages/Cooperative/ListOfOrders/ui/ListOfOrdersPage.vue +0 -4
  122. package/src/pages/Cooperative/ListOfParticipants/ui/ListOfParticipantsPage.vue +61 -10
  123. package/src/pages/Cooperative/ListOfParticipants/ui/index.ts +1 -1
  124. package/src/pages/Cooperative/MeetDetails/ui/MeetDetailsPage.vue +88 -0
  125. package/src/pages/Cooperative/MeetDetails/ui/index.ts +1 -0
  126. package/src/pages/Cooperative/MemberBranchList/ui/index.ts +1 -0
  127. package/src/pages/Cooperative/Payments/index.ts +1 -0
  128. package/src/pages/Cooperative/Payments/ui/PaymentsPage.vue +7 -0
  129. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/ExtensionPage.vue +35 -20
  130. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/ExtensionsShowcase.vue +2 -2
  131. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/InstalledExtensions.vue +2 -2
  132. package/src/pages/Marketplace/OfferPage/ui/OfferPage.vue +1 -1
  133. package/src/pages/Marketplace/Showcase/ui/ShowcasePage.vue +1 -1
  134. package/src/pages/Marketplace/SuppliesList/ui/SuppliesListPage.vue +1 -1
  135. package/src/pages/Marketplace/UserParentOffers/ui/UserParentOffersPage.vue +1 -1
  136. package/src/pages/Marketplace/UserSuppliesList/ui/UserSuppliesListPage.vue +1 -1
  137. package/src/pages/PermissionDenied/index.ts +1 -0
  138. package/src/pages/Registrator/SignUp/EmailInput.vue +2 -3
  139. package/src/pages/Registrator/SignUp/GenerateAccount.vue +2 -3
  140. package/src/pages/Registrator/SignUp/PayInitial.vue +1 -1
  141. package/src/pages/Registrator/SignUp/ReadStatement.vue +2 -2
  142. package/src/pages/Registrator/SignUp/SelectBranch.vue +2 -2
  143. package/src/pages/Registrator/SignUp/SignStatement.vue +2 -2
  144. package/src/pages/Registrator/SignUp/SignUp.vue +5 -12
  145. package/src/pages/Registrator/SignUp/WaitingRegistration.vue +1 -5
  146. package/src/pages/Registrator/SignUp/Welcome.vue +4 -3
  147. package/src/pages/Union/ConnectionAgreement/index.ts +1 -0
  148. package/src/pages/Union/ListOfCooperatives/ui/UnionPageListOfCooperatives.vue +139 -6
  149. package/src/pages/User/DocumentsPage/UserDocumentsPage.vue +23 -0
  150. package/src/pages/User/DocumentsPage/index.ts +1 -0
  151. package/src/pages/User/PaymentsPage/ui/UserPayments.vue +11 -0
  152. package/src/pages/User/PaymentsPage/ui/index.ts +1 -0
  153. package/src/pages/User/ProfilePage/index.ts +1 -0
  154. package/src/pages/User/ProfilePage/ui/ProfilePage.vue +114 -0
  155. package/src/pages/User/ProfilePage/ui/index.ts +1 -0
  156. package/src/pages/User/SettingsPage/ui/index.ts +1 -1
  157. package/src/pages/User/WalletPage/index.ts +1 -0
  158. package/src/pages/User/WalletPage/ui/WalletPage.vue +72 -0
  159. package/src/pages/User/WalletPage/ui/index.ts +1 -0
  160. package/src/processes/init-app/index.ts +28 -0
  161. package/src/processes/init-installed-extensions/index.ts +25 -0
  162. package/src/processes/init-wallet/index.ts +40 -0
  163. package/src/processes/navigation-guard-setup/index.ts +45 -0
  164. package/src/processes/process-decisions/index.ts +275 -0
  165. package/src/processes/select-branch/index.ts +80 -0
  166. package/src/processes/watch-branch-overlay/index.ts +38 -0
  167. package/src/processes/watch-desktop-health/index.ts +33 -0
  168. package/src/shared/api/alerts.ts +2 -6
  169. package/src/shared/api/axios.ts +4 -5
  170. package/src/shared/api/client.ts +3 -4
  171. package/src/shared/api/eosio.ts +1 -2
  172. package/src/shared/api/utils.ts +1 -3
  173. package/src/shared/config/index.ts +0 -1
  174. package/src/shared/hooks/index.ts +2 -0
  175. package/src/shared/hooks/useAgendaPoints.ts +24 -0
  176. package/src/shared/hooks/useWindowSize.ts +13 -0
  177. package/src/shared/lib/composables/useDisplayName.ts +34 -0
  178. package/src/shared/lib/navigation/index.ts +2 -0
  179. package/src/shared/lib/navigation/routeUtils.ts +51 -0
  180. package/src/shared/lib/navigation/useBackButton.ts +63 -0
  181. package/src/shared/lib/utils/dates/validateDateWithinRange.ts +23 -0
  182. package/src/shared/ui/BaseDocument/BaseDocument.vue +120 -90
  183. package/src/{components/menu/blockchainStatus.vue → shared/ui/BlockchainStatusBar/BlockchainStatusBar.vue} +1 -0
  184. package/src/shared/ui/BlockchainStatusBar/index.ts +1 -0
  185. package/src/shared/ui/CardStyles/index.scss +61 -0
  186. package/src/shared/ui/ComplexDocument/ComplexDocument.vue +31 -8
  187. package/src/shared/ui/CopyableInput/index.ts +1 -0
  188. package/src/shared/ui/CopyableInput/ui/CopyableInput.vue +62 -0
  189. package/src/shared/ui/EditableEntrepreneurCard/EditableEntrepreneurCard.vue +9 -8
  190. package/src/shared/ui/EditableIndividualCard/EditableIndividualCard.vue +10 -10
  191. package/src/shared/ui/EditableOrganizationCard/EditableOrganizationCard.vue +57 -47
  192. package/src/shared/ui/Form/Form.vue +3 -1
  193. package/src/shared/ui/InputStyles/index.scss +29 -0
  194. package/src/shared/ui/TabStyles/index.scss +53 -0
  195. package/src/shared/ui/index.ts +1 -0
  196. package/src/{components/history/AccountEvents.vue → widgets/AccountActions/AccountActionsPage.vue} +2 -2
  197. package/src/widgets/AccountActions/index.ts +1 -0
  198. package/src/widgets/BankDetailsCard/ui/BankDetailsCard.vue +2 -2
  199. package/src/widgets/BranchCard/ui/BranchCard.vue +2 -2
  200. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentCard.vue +48 -0
  201. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/DocumentsTable.vue +162 -0
  202. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/ListOfDocumentsWidget.vue +77 -120
  203. package/src/widgets/Cooperative/Documents/ListOfDocuments/ui/index.ts +3 -1
  204. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/ListOfOrdersWidget.vue +135 -128
  205. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/OrderCard.vue +74 -0
  206. package/src/widgets/Cooperative/Orders/ListOfOrders/ui/index.ts +2 -1
  207. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/ListOfPaymentsWidget.vue +216 -0
  208. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/PaymentCard.vue +73 -0
  209. package/src/widgets/Cooperative/Payments/ListOfPayments/ui/index.ts +2 -0
  210. package/src/widgets/Cooperative/Payments/index.ts +1 -0
  211. package/src/widgets/Desktop/LeftDrawerMenu/LeftDrawerMenu.vue +3 -2
  212. package/src/widgets/Desktop/SecondLevelMenuList/SecondLevelMenuList.vue +58 -91
  213. package/src/widgets/Desktop/WorkspaceMenu/WorkspaceMenu.vue +114 -59
  214. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/ExtensionCard.vue +12 -7
  215. package/src/widgets/Header/BackButton/BackButton.vue +25 -0
  216. package/src/widgets/Header/BackButton/index.ts +1 -0
  217. package/src/widgets/Header/CommonHeader/CooperativeSettingsHeader.vue +34 -0
  218. package/src/widgets/Header/CommonHeader/ExtstoreHeader.vue +41 -0
  219. package/src/widgets/Header/CommonHeader/Header.vue +33 -198
  220. package/src/widgets/Header/CommonHeader/HeaderStyles.scss +22 -0
  221. package/src/widgets/Header/CommonHeader/MainHeader.vue +87 -0
  222. package/src/widgets/Header/CommonHeader/UserSettingsHeader.vue +29 -0
  223. package/src/widgets/Header/CommonHeader/index.ts +1 -1
  224. package/src/widgets/Header/SettingsDropdown/SettingsDropdown.vue +0 -6
  225. package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/Base.vue +1 -2
  226. package/src/widgets/Meets/MeetDetailsActions/MeetDetailsActions.vue +51 -0
  227. package/src/widgets/Meets/MeetDetailsActions/index.ts +1 -0
  228. package/src/widgets/Meets/MeetDetailsActions/model.ts +46 -0
  229. package/src/widgets/Meets/MeetDetailsAgenda/MeetDetailsAgenda.vue +29 -0
  230. package/src/widgets/Meets/MeetDetailsAgenda/index.ts +1 -0
  231. package/src/widgets/Meets/MeetDetailsHeader/MeetDetailsHeader.vue +40 -0
  232. package/src/widgets/Meets/MeetDetailsHeader/index.ts +1 -0
  233. package/src/widgets/Meets/MeetDetailsVoting/MeetDetailsVoting.vue +77 -0
  234. package/src/widgets/Meets/MeetDetailsVoting/index.ts +1 -0
  235. package/src/widgets/Meets/MeetDetailsVoting/model.ts +117 -0
  236. package/src/widgets/Meets/MeetInfoCard/ui/MeetInfoCard.vue +38 -0
  237. package/src/widgets/Meets/MeetInfoCard/ui/index.ts +1 -0
  238. package/src/widgets/Meets/MeetsTable/ui/MeetsTable.vue +118 -0
  239. package/src/widgets/Meets/MeetsTable/ui/index.ts +1 -0
  240. package/src/widgets/Participants/index.ts +1 -0
  241. package/src/widgets/Participants/ui/ParticipantCard.vue +89 -0
  242. package/src/widgets/Participants/ui/ParticipantDetails.vue +79 -0
  243. package/src/widgets/Participants/ui/ParticipantsTable.vue +129 -0
  244. package/src/widgets/Participants/ui/index.ts +4 -0
  245. package/src/widgets/Questions/index.ts +3 -0
  246. package/src/widgets/Questions/ui/QuestionCard/QuestionCard.vue +109 -0
  247. package/src/widgets/Questions/ui/QuestionCard/index.ts +1 -0
  248. package/src/widgets/Questions/ui/QuestionsTable/QuestionsTable.vue +177 -0
  249. package/src/widgets/Questions/ui/QuestionsTable/index.ts +1 -0
  250. package/src/widgets/Questions/ui/VotingButtons/VotingButtons.vue +75 -0
  251. package/src/widgets/Questions/ui/VotingButtons/index.ts +1 -0
  252. package/src/widgets/Questions/ui/index.ts +3 -0
  253. package/src/widgets/RequireAgreements/index.ts +1 -0
  254. package/src/widgets/User/PaymentMethods/ui/PaymentMethods.vue +81 -85
  255. package/tsconfig.json +1 -1
  256. package/extensions/powerup/boot.ts +0 -17
  257. package/src/app/providers/card/store.ts +0 -42
  258. package/src/boot/branch-selector.ts +0 -40
  259. package/src/boot/init-stores.ts +0 -51
  260. package/src/boot/navigation-guards.ts +0 -46
  261. package/src/components/menu/footerMobileMenu.vue +0 -79
  262. package/src/components/soviet/index.vue +0 -76
  263. package/src/components/soviet/staff.vue +0 -274
  264. package/src/desktops/User/index.ts +0 -1
  265. package/src/desktops/User/model/index.ts +0 -329
  266. package/src/entities/Menu/model/store.ts +0 -69
  267. package/src/entities/Menu/model/types.ts +0 -11
  268. package/src/entities/Menu/ui/index.ts +0 -1
  269. package/src/entities/Order/api/index.ts +0 -14
  270. package/src/entities/Order/model/store.ts +0 -87
  271. package/src/features/Order/SetStatus/api/index.ts +0 -7
  272. package/src/features/Order/SetStatus/model/index.ts +0 -23
  273. package/src/pages/Cooperative/Contacts/ui/ContactsPage.vue +0 -7
  274. package/src/pages/Cooperative/ListOfBranches/ui/index.ts +0 -1
  275. package/src/pages/Documentor/ListOfDocuments/ListOfDocumentsPage.vue +0 -12
  276. package/src/pages/Union/Connection/index.ts +0 -1
  277. package/src/pages/_layouts/blank.vue +0 -24
  278. package/src/pages/_layouts/default.vue +0 -79
  279. package/src/types/index.ts +0 -3
  280. package/src/widgets/Commutator/Commutator.vue +0 -7
  281. package/src/widgets/Commutator/index.ts +0 -1
  282. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/ListOfQuestions.vue +0 -273
  283. package/src/widgets/Cooperative/Agenda/ListOfQuestions/ui/index.ts +0 -1
  284. package/src/widgets/Cooperative/Contacts/ui/Contacts.vue +0 -52
  285. package/src/widgets/Cooperative/Contributions/ui/index.ts +0 -1
  286. package/src/widgets/Cooperative/Description/ui/SetDescription.vue +0 -4
  287. package/src/widgets/Cooperative/Description/ui/index.ts +0 -1
  288. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/ListOfParticipantsWidget.vue +0 -186
  289. package/src/widgets/Cooperative/Participants/ListOfParticipants/ui/index.ts +0 -1
  290. package/src/widgets/Desktop/SecondLevelMenu/SecondLevelMenu.vue +0 -59
  291. package/src/widgets/Desktop/SecondLevelMenu/index.ts +0 -1
  292. package/src/widgets/IndividualCard/ui/IndividualCard.vue +0 -170
  293. package/src/widgets/IndividualCard/ui/index.ts +0 -1
  294. package/src/widgets/OrganizationCard/ui/OrganizationCard.vue +0 -44
  295. package/src/widgets/OrganizationCard/ui/index.ts +0 -1
  296. package/src/widgets/Union/ListOfCooperatives/ui/UnionListOfCooperatives.vue +0 -136
  297. package/src/widgets/Union/ListOfCooperatives/ui/index.ts +0 -1
  298. package/src/entities/{Menu → Document}/model/index.ts +0 -0
  299. package/src/entities/{Order → Meet}/model/index.ts +0 -0
  300. package/src/entities/{Order → Payment}/index.ts +0 -0
  301. package/src/features/{Order/SetStatus → Decision/ParticipantApplication}/index.ts +0 -0
  302. package/src/{widgets/Request/SupplyOrderRequestCard → features/FreeDecision/CreateProject}/index.ts +0 -0
  303. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/SetOrderCompletedStatusButton.vue +0 -0
  304. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderCompletedStatusButton/index.ts +0 -0
  305. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderPaidStatusButton/index.ts +0 -0
  306. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/SetOrderRefundedStatusButton.vue +0 -0
  307. package/src/features/{Order → Payment}/SetStatus/ui/SetOrderRefundedStatusButton/index.ts +0 -0
  308. package/src/pages/{blank/blank.vue → Blank/BlankPage.vue} +0 -0
  309. package/src/pages/{Cooperative/Contacts/ui → Contacts}/index.ts +0 -0
  310. package/src/pages/Cooperative/{Contacts → ChangeContacts}/index.ts +0 -0
  311. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/ChangeContacts}/ui/ChangeContacts.vue +0 -0
  312. package/src/pages/Cooperative/{ListOfBranches → ChangeRegisterPayments}/index.ts +0 -0
  313. package/src/pages/{Documentor → Cooperative}/ListOfDocuments/index.ts +0 -0
  314. package/src/pages/{Installer → Cooperative/ListOfMeets}/index.ts +0 -0
  315. package/src/{widgets/Cooperative/Agenda/ListOfQuestions → pages/Cooperative/MeetDetails}/index.ts +0 -0
  316. package/src/{widgets/Cooperative/Contacts → pages/Cooperative/MemberBranchList}/index.ts +0 -0
  317. package/src/pages/Cooperative/{ListOfBranches/ui/ListOfBranchesPage.vue → MemberBranchList/ui/MemberBranchListPage.vue} +0 -0
  318. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/ExtensionStoreBase.vue +0 -0
  319. package/src/pages/{ExtStore → ExtensionStore}/BaseRoute/index.ts +0 -0
  320. package/src/pages/{ExtStore → ExtensionStore}/ExtensionPage/index.ts +0 -0
  321. package/src/pages/{ExtStore → ExtensionStore}/ExtensionsShowcase/index.ts +0 -0
  322. package/src/pages/{ExtStore → ExtensionStore}/InstalledExtensions/index.ts +0 -0
  323. package/src/pages/{_layouts/permissionDenied.vue → PermissionDenied/PermissionDenied.vue} +0 -0
  324. package/src/pages/Union/{Connection/ConnectionPage.vue → ConnectionAgreement/ConnectionAgreementPage.vue} +0 -0
  325. package/src/{widgets/Cooperative/Contributions → pages/Union/InstallCooperative}/index.ts +0 -0
  326. package/src/pages/{Installer → Union/InstallCooperative}/ui/InstallCooperativePage.vue +0 -0
  327. package/src/pages/{Installer → Union/InstallCooperative}/ui/index.ts +0 -0
  328. package/src/{widgets/Cooperative/Participants/ListOfParticipants → pages/User/PaymentsPage}/index.ts +0 -0
  329. package/src/{components/history → widgets/AccountActions}/AccountLink.vue +0 -0
  330. package/src/{components/history → widgets/AccountActions}/ActionCell.vue +0 -0
  331. package/src/{components/history → widgets/AccountActions}/DataCell.vue +0 -0
  332. package/src/widgets/{IndividualCard → Cooperative/Payments/ListOfPayments}/index.ts +0 -0
  333. package/src/widgets/{ExtStore/ExtensionCard → ExtensionCard}/index.ts +0 -0
  334. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/CreateChildOrderCard.vue +0 -0
  335. package/src/widgets/{Request → Marketplace}/CreateChildOrderCard/index.ts +0 -0
  336. package/src/widgets/{Request → Marketplace}/RequestCard/RequestCard.vue +0 -0
  337. package/src/widgets/{Request → Marketplace}/RequestCard/index.ts +0 -0
  338. package/src/{entities/Menu → widgets/Marketplace/SupplyOrderRequestCard}/index.ts +1 -1
  339. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/index.ts +0 -0
  340. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/model/types.ts +0 -0
  341. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Base/index.ts +0 -0
  342. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/EightStep.vue +0 -0
  343. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FifthStep.vue +0 -0
  344. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FirstStep.vue +0 -0
  345. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/FourthStep.vue +0 -0
  346. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SecondStep.vue +0 -0
  347. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SeventhStep.vue +0 -0
  348. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/SixthStep.vue +0 -0
  349. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/ThirdStep.vue +0 -0
  350. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/Steps/index.ts +0 -0
  351. /package/src/widgets/{Request → Marketplace}/SupplyOrderRequestCard/ui/index.ts +0 -0
  352. /package/src/widgets/{OrganizationCard → Meets/MeetInfoCard}/index.ts +0 -0
  353. /package/src/widgets/{Union/ListOfCooperatives → Meets/MeetsTable}/index.ts +0 -0
  354. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/RequireAgreements.vue +0 -0
  355. /package/src/widgets/{Agreementer/RequireAgreements → RequireAgreements}/ui/index.ts +0 -0
@@ -0,0 +1,59 @@
1
+ import { computed, ref, onMounted, watch } from 'vue'
2
+ import { useQuasar } from 'quasar'
3
+ import { useRoute } from 'vue-router'
4
+ import { useWindowSize } from 'vue-window-size'
5
+ import { useSystemStore } from 'src/entities/System/model'
6
+ import { useSessionStore } from 'src/entities/Session'
7
+ import { useCurrentUserStore } from 'src/entities/User'
8
+ import { useCooperativeStore } from 'src/entities/Cooperative'
9
+
10
+ export function useDefaultLayoutLogic() {
11
+ const $q = useQuasar()
12
+ const { width } = useWindowSize()
13
+ const route = useRoute()
14
+ const session = useSessionStore()
15
+ const currentUser = useCurrentUserStore()
16
+ const cooperativeStore = useCooperativeStore()
17
+ const system = useSystemStore()
18
+
19
+ cooperativeStore.loadContacts()
20
+
21
+ const leftDrawerOpen = ref(true)
22
+ const isMobile = computed(() => width.value < 768)
23
+ const isDark = computed(() => $q.dark.isActive)
24
+ const headerClass = computed(() => isDark.value ? 'text-white bg-dark' : 'text-black bg-light')
25
+ const loggedIn = computed(() => currentUser.isRegistrationComplete && session.isAuth)
26
+ const showDrawer = computed(() => route.params.coopname === system.info.coopname)
27
+
28
+ const footerText = computed(() => {
29
+ const c = cooperativeStore.contacts
30
+ const d = c?.details
31
+ return d
32
+ ? `${c.full_name}, ИНН: ${d.inn}, ОГРН: ${d.ogrn}, телефон: ${c.phone}, почта: ${c.email}`
33
+ : ''
34
+ })
35
+
36
+ onMounted(() => {
37
+ if (isMobile.value || !loggedIn.value) {
38
+ leftDrawerOpen.value = false
39
+ }
40
+ })
41
+
42
+ watch(loggedIn, (v) => {
43
+ leftDrawerOpen.value = v
44
+ })
45
+
46
+ const toggleLeftDrawer = () => {
47
+ leftDrawerOpen.value = !leftDrawerOpen.value
48
+ }
49
+
50
+ return {
51
+ leftDrawerOpen,
52
+ isMobile,
53
+ loggedIn,
54
+ showDrawer,
55
+ headerClass,
56
+ footerText,
57
+ toggleLeftDrawer,
58
+ }
59
+ }
@@ -1,25 +1,23 @@
1
- import layout from 'src/pages/_layouts/default.vue';
1
+ import layout from 'src/app/layouts/default.vue';
2
2
  import index from 'src/pages/index.vue';
3
- import blank from 'src/pages/blank/blank.vue';
4
- import permissionDenied from 'src/pages/_layouts/permissionDenied.vue';
3
+ import { BlankPage } from 'src/pages/Blank';
4
+ import { PermissionDenied } from 'src/pages/PermissionDenied';
5
5
  import { SignUpPage } from 'src/pages/Registrator/SignUp';
6
6
  import { SignInPage } from 'src/pages/Registrator/SignIn';
7
7
  import { RouteRecordRaw } from 'vue-router';
8
- import { InstallCooperativePage } from 'src/pages/Installer';
8
+ import { InstallCooperativePage } from 'src/pages/Union/InstallCooperative';
9
9
  import { LostKeyPage } from 'src/pages/Registrator/LostKey/ui';
10
10
  import { ResetKeyPage } from 'src/pages/Registrator/ResetKey';
11
- import { UserSettingsPage } from 'src/pages/User/SettingsPage';
12
11
  import CooperativeSettingsPage from 'src/pages/Cooperative/SettingsPage/CooperativeSettingsPage.vue';
13
- import { UserPaymentMethodsPage } from 'src/pages/User/PaymentMethodsPage';
14
12
  import { AccumulationFunds, ExpenseFunds } from 'src/widgets/Cooperative/Funds';
15
- import { ChangeCooperativeContributions } from 'src/widgets/Cooperative/Contributions';
16
- import { ChangeCooperativeContacts } from 'src/widgets/Cooperative/Contacts';
13
+ import { ChangeRegisterPaymentsPage } from 'src/pages/Cooperative/ChangeRegisterPayments';
14
+ import { ChangeCooperativeContacts } from 'src/pages/Cooperative/ChangeContacts';
17
15
  import { MembersPage } from 'src/pages/Cooperative/MembersPage';
18
- import { InstalledExtensions } from 'src/pages/ExtStore/InstalledExtensions';
19
- import { ExtensionsShowcase } from 'src/pages/ExtStore/ExtensionsShowcase';
20
- import { ExtensionStoreBase } from 'src/pages/ExtStore/BaseRoute';
21
- import { ExtensionPage } from 'src/pages/ExtStore/ExtensionPage';
22
- import { ListOfBranchesPage } from 'src/pages/Cooperative/ListOfBranches';
16
+ import { InstalledExtensions } from 'src/pages/ExtensionStore/InstalledExtensions';
17
+ import { ExtensionsShowcase } from 'src/pages/ExtensionStore/ExtensionsShowcase';
18
+ import { ExtensionPage } from 'src/pages/ExtensionStore/ExtensionPage';
19
+ import { MemberBranchList } from 'src/pages/Cooperative/MemberBranchList';
20
+ import { ExtensionStoreBase } from 'src/pages/ExtensionStore/BaseRoute';
23
21
 
24
22
 
25
23
  const baseRoutes = [
@@ -36,12 +34,12 @@ const baseRoutes = [
36
34
  {
37
35
  path: '/something-bad',
38
36
  name: 'somethingBad',
39
- component: blank,
37
+ component: BlankPage,
40
38
  },
41
39
  {
42
40
  path: '/permission-denied',
43
41
  name: 'permissionDenied',
44
- component: permissionDenied,
42
+ component: PermissionDenied,
45
43
  },
46
44
  {
47
45
  path: ':coopname/install',
@@ -73,19 +71,6 @@ const baseRoutes = [
73
71
  component: SignUpPage,
74
72
  children: [],
75
73
  },
76
- {
77
- path: 'settings/user',
78
- name: 'user-settings',
79
- component: UserSettingsPage,
80
- children: [
81
- {
82
- path: 'payment-methods',
83
- name: 'user-payment-methods',
84
- component: UserPaymentMethodsPage,
85
- children: [],
86
- },
87
- ],
88
- },
89
74
  {
90
75
  path: 'settings/cooperative',
91
76
  name: 'cooperative-settings',
@@ -100,7 +85,7 @@ const baseRoutes = [
100
85
  {
101
86
  path: 'branches',
102
87
  name: 'branches',
103
- component: ListOfBranchesPage,
88
+ component: MemberBranchList,
104
89
  children: [],
105
90
  },
106
91
  {
@@ -118,7 +103,7 @@ const baseRoutes = [
118
103
  {
119
104
  path: 'initial-contributions',
120
105
  name: 'initial-contributions',
121
- component: ChangeCooperativeContributions,
106
+ component: ChangeRegisterPaymentsPage,
122
107
  children: [],
123
108
  },
124
109
  {
@@ -174,7 +159,7 @@ const baseRoutes = [
174
159
  {
175
160
  path: '/:pathMatch(.*)*',
176
161
  name: 'NotFound',
177
- component: blank,
162
+ component: BlankPage,
178
163
  },
179
164
  ],
180
165
  },
@@ -267,17 +252,17 @@ const baseRoutes = [
267
252
  // {
268
253
  // path: '/something-bad',
269
254
  // name: 'somethingBad',
270
- // component: blank,
255
+ // component: BlankPage,
271
256
  // },
272
257
  // {
273
258
  // path: '/permission-denied',
274
259
  // name: 'permissionDenied',
275
- // component: permissionDenied,
260
+ // component: PermissionDenied,
276
261
  // },
277
262
  // {
278
263
  // path: '/:pathMatch(.*)*',
279
264
  // name: 'NotFound',
280
- // component: blank,
265
+ // component: BlankPage,
281
266
  // },
282
267
  // ],
283
268
  // },
@@ -4,6 +4,7 @@
4
4
  @tailwind components;
5
5
  @tailwind utilities;
6
6
 
7
+
7
8
  /* Стили для полосы прокрутки содержимого drawer */
8
9
  .q-drawer__content::-webkit-scrollbar {
9
10
  width: 0px;
@@ -57,6 +58,9 @@
57
58
  .selected {
58
59
  border: 0.1px solid grey;
59
60
  }
61
+ .no-padding {
62
+ padding: 0px !important;
63
+ }
60
64
 
61
65
  .no-select {
62
66
  -webkit-touch-callout: none; /* iOS Safari */
@@ -0,0 +1,6 @@
1
+ import { boot } from 'quasar/wrappers'
2
+ import { useInitAppProcess } from 'src/processes/init-app'
3
+
4
+ export default boot(async ({ router }) => {
5
+ await useInitAppProcess(router)
6
+ })
@@ -1,14 +1,13 @@
1
1
  import { boot } from 'quasar/wrappers';
2
2
  import { App } from 'vue';
3
3
  import { Router } from 'vue-router';
4
- import { NODE_ENV } from 'src/shared/config';
5
4
  import Tracker from '@openreplay/tracker';
6
5
  import trackerAssist from '@openreplay/tracker-assist'
7
6
  import { useSessionStore } from 'src/entities/Session';
8
7
  export default boot(
9
8
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
9
  ({ app, router }: { app: App<Element>; router: Router }) => {
11
- if ((NODE_ENV as string) === 'production') {
10
+ if ((process.env.NODE_ENV as string) === 'production') {
12
11
  const session = useSessionStore()
13
12
 
14
13
  const tracker = new Tracker({
@@ -1,9 +1,3 @@
1
1
  export * from './Chairman'
2
2
  export * from './Member'
3
- export * from './User'
4
3
  export * from './Setup'
5
-
6
- // export desktopsMap {
7
- // Chairman: ChairmanDesktop,
8
-
9
- // }
@@ -1 +1 @@
1
- export * from './store'
1
+ export * from './store'
@@ -0,0 +1,20 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Queries } from '@coopenomics/sdk';
3
+ import type { IAgenda, IGetAgendaInput } from '../model';
4
+
5
+ async function loadAgenda(data: IGetAgendaInput): Promise<IAgenda[]> {
6
+ const { [Queries.Agenda.GetAgenda.name]: output } = await client.Query(
7
+ Queries.Agenda.GetAgenda.query,
8
+ {
9
+ variables: {
10
+ data
11
+ }
12
+ }
13
+ );
14
+
15
+ return output;
16
+ }
17
+
18
+ export const api = {
19
+ loadAgenda
20
+ }
@@ -0,0 +1,2 @@
1
+ export * as AgendaModel from './model'
2
+ export * from './api'
@@ -0,0 +1,2 @@
1
+ export * from './types'
2
+ export * from './store'
@@ -0,0 +1,36 @@
1
+ import { defineStore } from 'pinia'
2
+ import { ref, Ref } from 'vue'
3
+ import { api } from '../api'
4
+ import type { IAgenda, IGetAgendaInput } from './types';
5
+
6
+ const namespace = 'agendaStore';
7
+
8
+ interface IAgendaStore {
9
+ agenda: Ref<IAgenda[]>
10
+ loading: Ref<boolean>
11
+ loadAgenda: (data: IGetAgendaInput, hidden?: boolean) => Promise<IAgenda[]>;
12
+ }
13
+
14
+ export const useAgendaStore = defineStore(namespace, (): IAgendaStore => {
15
+ const agenda = ref<IAgenda[]>([])
16
+ const loading = ref(false)
17
+
18
+ const loadAgenda = async (data: IGetAgendaInput, hidden = false): Promise<IAgenda[]> => {
19
+ try {
20
+ loading.value = hidden ? false : true
21
+ const loadedData = await api.loadAgenda(data);
22
+ agenda.value = loadedData;
23
+ loading.value = false
24
+ return loadedData;
25
+ } catch (error) {
26
+ loading.value = false
27
+ throw error;
28
+ }
29
+ };
30
+
31
+ return {
32
+ agenda,
33
+ loading,
34
+ loadAgenda
35
+ }
36
+ })
@@ -0,0 +1,4 @@
1
+ import type { Queries } from '@coopenomics/sdk';
2
+
3
+ export type IAgenda = Queries.Agenda.GetAgenda.IOutput[typeof Queries.Agenda.GetAgenda.name][number]
4
+ export type IGetAgendaInput = Queries.Agenda.GetAgenda.IInput
@@ -1,2 +1,2 @@
1
- export * from './store'
2
1
  export * from './types'
2
+ export * from './store'
@@ -1,10 +1,25 @@
1
1
  import type { IHealthResponse } from '@coopenomics/controller';
2
+ import { Queries } from '@coopenomics/sdk';
2
3
  import { sendGET } from 'src/shared/api';
4
+ import type { IDesktop } from '../model/types';
5
+ import { client } from 'src/shared/api/client';
3
6
 
4
7
  async function healthCheck(): Promise<IHealthResponse> {
5
8
  return (await sendGET('/v1/system/health', {}, true)) as IHealthResponse;
6
9
  }
7
10
 
11
+ async function getDesktop(): Promise<IDesktop> {
12
+ const { [Queries.Desktop.GetDesktop.name]: output } = await client.Query(Queries.Desktop.GetDesktop.query, {
13
+ variables: {
14
+ data: {}
15
+ }
16
+ });
17
+
18
+ return output;
19
+ }
20
+
21
+
8
22
  export const api ={
9
- healthCheck
23
+ healthCheck,
24
+ getDesktop
10
25
  }
@@ -1,135 +1,141 @@
1
1
  import { defineStore } from 'pinia'
2
- import * as Desktops from 'src/desktops'
3
- import { computed, ComputedRef, ref, Ref } from 'vue'
4
- import { FailAlert } from 'src/shared/api'
5
- import { RouteRecordRaw, type RouteLocationNormalized} from 'vue-router'
6
- import { IDesktop, IRoute, IBlockchainDesktops, IHealthResponse } from './types'
2
+ import { computed, ref } from 'vue'
3
+ import { RouteRecordRaw, type RouteMeta, type Router } from 'vue-router'
4
+ import type { IHealthResponse, IBackNavigationButton, IDesktopWithNavigation } from './types'
7
5
  import { api } from '../api'
8
6
 
9
- const desktopHashMap = {
10
- 'hash1': Desktops.UserDesktopModel.manifest, //User
11
- 'hash2': Desktops.ChairmanDesktopModel.manifest, //'Chairman',
12
- 'hash3': Desktops.MemberDesktopModel.manifest, //'Member',
13
- 'hash4': Desktops.SetupDesktopModel.manifest, //Setup
7
+ interface WorkspaceMenuItem {
8
+ workspaceName: string
9
+ title: string
10
+ icon: string
11
+ mainRoute: RouteRecordRaw | null
12
+ meta: RouteMeta
14
13
  }
15
14
 
16
- const namespace = 'desktops';
17
-
18
- interface IDesktopStore {
19
- online: Ref<boolean | undefined>
20
- health: Ref<IHealthResponse | undefined>
21
- currentDesktop: Ref<IDesktop | undefined>
22
- availableDesktops: Ref<IDesktop[]>
23
- defaultDesktopHash: Ref<string | undefined>
24
- healthCheck: () => Promise<void>;
25
- setActiveDesktop: (hash: string | undefined) => void;
26
- loadDesktops: () => Promise<void>;
27
- getSecondLevel: (currentRoute: RouteLocationNormalized) => RouteRecordRaw[]
28
- firstLevel: ComputedRef<IRoute[]>;
29
- }
30
-
31
-
32
- function getNestedRoutes(route: RouteRecordRaw):RouteRecordRaw[] {
33
- if (!route.children) {
34
- return [];
35
- }
36
-
37
- let nestedRoutes: RouteRecordRaw[] = [];
38
-
39
- for (const child of route.children) {
40
- nestedRoutes.push(child);
41
- nestedRoutes = nestedRoutes.concat(getNestedRoutes(child));
15
+ const namespace = 'desktops'
16
+
17
+ export const useDesktopStore = defineStore(namespace, () => {
18
+ const currentDesktop = ref<IDesktopWithNavigation>()
19
+ const health = ref<IHealthResponse>()
20
+ const online = ref<boolean>()
21
+
22
+ async function loadDesktop(): Promise<void> {
23
+ const newDesktop = await api.getDesktop();
24
+ // Если уже есть расширения, мерджим маршруты
25
+ if (currentDesktop.value && currentDesktop.value.workspaces) {
26
+ newDesktop.workspaces.forEach(newWs => {
27
+ const oldWs = currentDesktop.value?.workspaces.find(ws => ws.name === newWs.name);
28
+ if (oldWs && (oldWs as any).routes) {
29
+ (newWs as any).routes = (oldWs as any).routes;
30
+ }
31
+ });
32
+ }
33
+ // Добавляем поле backNavigationButton если оно отсутствует
34
+ currentDesktop.value = {
35
+ ...newDesktop,
36
+ backNavigationButton: currentDesktop.value?.backNavigationButton || null
37
+ };
42
38
  }
43
39
 
44
- return nestedRoutes;
45
- }
46
-
47
- export const useDesktopStore = defineStore(namespace, (): IDesktopStore => {
48
- const currentDesktop = ref<IDesktop>()
49
- const availableDesktops = ref<IDesktop[]>([])
50
- const defaultDesktopHash = ref<string>()
51
- const health = ref<IHealthResponse | undefined>()
52
- const online = ref<boolean | undefined>()
53
-
54
-
55
-
56
40
  async function healthCheck(): Promise<void> {
57
41
  try {
42
+ health.value = await api.healthCheck();
43
+ online.value = health.value.status !== 'maintenance';
44
+ if (!online.value) setTimeout(healthCheck, 10000);
45
+ } catch {
46
+ online.value = false;
47
+ setTimeout(healthCheck, 10000);
48
+ }
49
+ }
58
50
 
59
- health.value = await api.healthCheck()
60
-
61
- if (health.value.status != 'maintenance'){
62
- if (online.value === false){
63
- online.value = true
64
- }
65
- } else {
66
- online.value = false
67
- setTimeout(healthCheck, 10000)
68
- }
69
-
70
- } catch (e) {
71
- online.value = false
72
- setTimeout(healthCheck, 10000)
51
+ function setRoutes(workspaceName: string, routes: RouteRecordRaw[]): void {
52
+ if (!currentDesktop.value) return;
53
+ const ws = currentDesktop.value.workspaces.find(w => w.name === workspaceName);
54
+ if (ws) {
55
+ (ws as any).routes = routes;
73
56
  }
74
57
  }
75
58
 
76
- const firstLevel = computed(() => {
77
- if (currentDesktop.value)
78
- return currentDesktop.value.routes
79
- else return []
59
+ const workspaceMenus = computed<WorkspaceMenuItem[]>(() => {
60
+ if (!currentDesktop.value) return [];
61
+ return currentDesktop.value.workspaces.map(ws => {
62
+ const routes: RouteRecordRaw[] = (ws as any).routes || [];
63
+ const meta: RouteMeta = routes.length > 0 && routes[0].meta
64
+ ? routes[0].meta as RouteMeta
65
+ : { title: ws.title, icon: '', roles: [] };
66
+ return {
67
+ workspaceName: ws.name,
68
+ title: ws.title,
69
+ icon: meta.icon,
70
+ mainRoute: routes.length > 0 ? routes[0] : null,
71
+ meta
72
+ };
73
+ });
80
74
  });
81
75
 
82
-
83
- const getSecondLevel = (currentRoute: RouteLocationNormalized): RouteRecordRaw[] => {
84
- if (currentRoute.matched && currentDesktop.value && currentRoute) {
85
-
86
- const matchingRootRoute = currentRoute.matched[1]
87
-
88
- if (matchingRootRoute) {
89
- return getNestedRoutes(matchingRootRoute)
90
- }
91
- }
92
- return [];
76
+ // Храним название активного workspace
77
+ const activeWorkspaceName = ref<string | null>(null);
78
+ function selectWorkspace(name: string) {
79
+ activeWorkspaceName.value = name;
93
80
  }
94
81
 
82
+ const activeSecondLevelRoutes = computed((): RouteRecordRaw[] => {
83
+ if (!activeWorkspaceName.value) return [];
84
+ const ws = workspaceMenus.value.find(menu => menu.workspaceName === activeWorkspaceName.value);
85
+ return ws && ws.mainRoute && ws.mainRoute.children
86
+ ? ws.mainRoute.children as RouteRecordRaw[]
87
+ : [];
88
+ });
95
89
 
96
- const setActiveDesktop = (hash: string | undefined) => {
97
- const desktop = availableDesktops.value.find(d => d.hash === hash)
98
- if (desktop)
99
- currentDesktop.value = desktop
100
- else {
101
- FailAlert('Рабочий стол не найден')
90
+ function registerWorkspaceMenus(router: Router): void {
91
+ const baseRoute = router.getRoutes().find(r => r.name === 'base');
92
+ if (baseRoute) {
93
+ workspaceMenus.value.forEach(menu => {
94
+ if (menu.mainRoute) {
95
+ router.addRoute('base', menu.mainRoute as RouteRecordRaw);
96
+ }
97
+ });
102
98
  }
103
99
  }
104
100
 
105
- const loadAvailableDesktops = async(): Promise<IBlockchainDesktops> => {
106
- return { //load it from bc later
107
- defaultHash: 'hash1',
108
- availableHashes: ['hash1','hash2', 'hash3']
101
+ // Новый метод: удаляет workspace (расширение) из currentDesktop.workspaces по имени
102
+ function removeWorkspace(workspaceName: string): void {
103
+ if (currentDesktop.value && currentDesktop.value.workspaces) {
104
+ currentDesktop.value.workspaces = currentDesktop.value.workspaces.filter(ws => ws.name !== workspaceName);
109
105
  }
110
106
  }
111
107
 
108
+ // Методы для управления навигацией
109
+ function setBackNavigationButton(button: IBackNavigationButton) {
110
+ if (!currentDesktop.value) return
111
+ currentDesktop.value.backNavigationButton = button
112
+ }
112
113
 
113
- const loadDesktops = async () => {
114
- const {defaultHash, availableHashes} = await loadAvailableDesktops()
115
- availableDesktops.value = []
116
- defaultDesktopHash.value = defaultHash
117
-
118
- availableHashes.map(hash => availableDesktops.value.push(
119
- desktopHashMap[hash as any]
120
- ))
114
+ function removeBackNavigationButton(componentId: string) {
115
+ if (!currentDesktop.value) return
116
+ if (currentDesktop.value.backNavigationButton?.componentId === componentId) {
117
+ currentDesktop.value.backNavigationButton = null
118
+ }
121
119
  }
122
120
 
121
+ const backNavigationButton = computed(() => currentDesktop.value?.backNavigationButton)
122
+
123
123
  return {
124
- online,
125
- health,
126
- defaultDesktopHash, //перезапишем через локал-сторадж для пользовательского управления стартовой страницей
127
124
  currentDesktop,
128
- availableDesktops,
129
- setActiveDesktop,
130
- loadDesktops,
131
- getSecondLevel,
132
- firstLevel,
133
- healthCheck
134
- }
135
- })
125
+ health,
126
+ online,
127
+ loadDesktop,
128
+ healthCheck,
129
+ setRoutes,
130
+ workspaceMenus,
131
+ activeWorkspaceName,
132
+ selectWorkspace,
133
+ activeSecondLevelRoutes,
134
+ registerWorkspaceMenus,
135
+ removeWorkspace,
136
+ // Новые методы
137
+ setBackNavigationButton,
138
+ removeBackNavigationButton,
139
+ backNavigationButton
140
+ };
141
+ });
@@ -1,4 +1,7 @@
1
- export interface IDesktop {
1
+ import type { Queries } from '@coopenomics/sdk';
2
+
3
+ export type IDesktop = Queries.Desktop.GetDesktop.IOutput[typeof Queries.Desktop.GetDesktop.name]
4
+ export interface ILegacyDesktop {
2
5
  name: string;
3
6
  hash: string;
4
7
  authorizedHome: string;
@@ -28,3 +31,13 @@ export interface IRoute {
28
31
  }
29
32
 
30
33
  export type { IHealthResponse } from '@coopenomics/controller'
34
+
35
+ export interface IBackNavigationButton {
36
+ text: string
37
+ onClick: () => void
38
+ componentId: string
39
+ }
40
+
41
+ export interface IDesktopWithNavigation extends IDesktop {
42
+ backNavigationButton: IBackNavigationButton | null
43
+ }
@@ -0,0 +1,24 @@
1
+ import { client } from 'src/shared/api/client';
2
+ import { Queries } from '@coopenomics/sdk';
3
+ import type { IGetDocuments, ZGetDocumentsResult } from '../model/types';
4
+
5
+ /**
6
+ * Загрузка документов с сервера
7
+ * @param data параметры запроса документов
8
+ * @returns результат запроса с пагинацией и документами
9
+ */
10
+ async function loadDocuments(data: IGetDocuments): Promise<ZGetDocumentsResult> {
11
+ const { getDocuments: output } = await client.Query(
12
+ Queries.Documents.GetDocuments.query,
13
+ {
14
+ variables: {
15
+ data
16
+ }
17
+ }
18
+ );
19
+ return output;
20
+ }
21
+
22
+ export const api = {
23
+ loadDocuments
24
+ }
@@ -0,0 +1,2 @@
1
+ export * as DocumentModel from './model'
2
+ export * from './api'