sprof 0.1.0

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 (357) hide show
  1. package/README.md +29 -0
  2. package/package.json +101 -0
  3. package/src/Hooks/Hooks.ts +75 -0
  4. package/src/assets/img/avatar.webp +0 -0
  5. package/src/assets/styles/borders.scss +11 -0
  6. package/src/assets/styles/brandbook.css +227 -0
  7. package/src/assets/styles/colors.scss +42 -0
  8. package/src/assets/styles/fonts.scss +15 -0
  9. package/src/assets/styles/index.css +15 -0
  10. package/src/assets/styles/index.scss +45 -0
  11. package/src/assets/styles/platform/android.css +53 -0
  12. package/src/assets/styles/platform/ios.css +53 -0
  13. package/src/assets/styles/platform/webdesktop.css +72 -0
  14. package/src/assets/styles/platform/webdesktop_old.css +65 -0
  15. package/src/assets/styles/platform/webmobile.css +53 -0
  16. package/src/assets/styles/platform/webtablet.css +53 -0
  17. package/src/assets/styles/reset.scss +28 -0
  18. package/src/assets/styles/shadow.scss +6 -0
  19. package/src/assets/styles/theme/aquaBlueLight.css +162 -0
  20. package/src/assets/styles/theme/blueLight.css +187 -0
  21. package/src/assets/styles/theme/blueLight_test.css +162 -0
  22. package/src/assets/styles/theme/dark.css +286 -0
  23. package/src/assets/styles/theme/light.css +151 -0
  24. package/src/assets/svg/ArrowLeft.svg +5 -0
  25. package/src/assets/svg/ArrowRight.svg +5 -0
  26. package/src/assets/svg/Close.svg +7 -0
  27. package/src/assets/svg/DoubleArrowLeft.svg +5 -0
  28. package/src/assets/svg/DoubleArrowRight.svg +5 -0
  29. package/src/assets/svg/Ellipsis.svg +7 -0
  30. package/src/assets/svg/Filter.svg +10 -0
  31. package/src/assets/svg/Menu.svg +5 -0
  32. package/src/assets/svg/Move.svg +5 -0
  33. package/src/assets/svg/Password.svg +5 -0
  34. package/src/assets/svg/RightMenu.svg +5 -0
  35. package/src/assets/svg/Settings.svg +6 -0
  36. package/src/assets/svg/User.svg +6 -0
  37. package/src/buildLibrary.ts +59 -0
  38. package/src/classes/Auth.ts +63 -0
  39. package/src/classes/AuthButton.ts +64 -0
  40. package/src/classes/AuthForm.ts +114 -0
  41. package/src/classes/AuthModal.ts +32 -0
  42. package/src/classes/AuthStatusesObjects.ts +37 -0
  43. package/src/classes/AuthTokens.ts +43 -0
  44. package/src/classes/AuthUser.ts +53 -0
  45. package/src/classes/CallbackRequest.ts +12 -0
  46. package/src/classes/Chat.ts +18 -0
  47. package/src/classes/ChatMessage.ts +48 -0
  48. package/src/classes/Contact.ts +96 -0
  49. package/src/classes/Cropper.ts +22 -0
  50. package/src/classes/DateHelper.ts +29 -0
  51. package/src/classes/Email.ts +18 -0
  52. package/src/classes/EmailField.ts +42 -0
  53. package/src/classes/EmailRules.ts +4 -0
  54. package/src/classes/FTSPPreset.ts +16 -0
  55. package/src/classes/FileInfo.ts +86 -0
  56. package/src/classes/HttpResponse.ts +22 -0
  57. package/src/classes/Human.ts +106 -0
  58. package/src/classes/LabelValue.ts +11 -0
  59. package/src/classes/LocalStore.ts +22 -0
  60. package/src/classes/M2M.ts +25 -0
  61. package/src/classes/Menu.ts +102 -0
  62. package/src/classes/PageSectionImage.ts +19 -0
  63. package/src/classes/PasswordField.ts +39 -0
  64. package/src/classes/PasswordRepeatField.ts +37 -0
  65. package/src/classes/Phone.ts +17 -0
  66. package/src/classes/PostAddress.ts +11 -0
  67. package/src/classes/PostAddressRules.ts +1 -0
  68. package/src/classes/Role.ts +13 -0
  69. package/src/classes/Schema.ts +13 -0
  70. package/src/classes/SchemaField.ts +10 -0
  71. package/src/classes/SearchElement.ts +18 -0
  72. package/src/classes/SearchElementMeta.ts +10 -0
  73. package/src/classes/SearchGroup.ts +25 -0
  74. package/src/classes/SearchGroupMetaColumn.ts +11 -0
  75. package/src/classes/SearchModel.ts +61 -0
  76. package/src/classes/SortModel.ts +57 -0
  77. package/src/classes/SubMenu.ts +56 -0
  78. package/src/classes/TelephoneNumberRules.ts +9 -0
  79. package/src/classes/User.ts +17 -0
  80. package/src/classes/UserAccount.ts +17 -0
  81. package/src/classes/UserService.ts +20 -0
  82. package/src/classes/ValidationRules.ts +15 -0
  83. package/src/classes/ValueType.ts +69 -0
  84. package/src/classes/Website.ts +11 -0
  85. package/src/classes/WebsiteRules.ts +4 -0
  86. package/src/classes/admin/AdminButtonParams.ts +27 -0
  87. package/src/classes/admin/AdminHeaderParams.ts +34 -0
  88. package/src/classes/calendar/Calendar.ts +168 -0
  89. package/src/classes/calendar/Day.ts +15 -0
  90. package/src/classes/calendar/Month.ts +144 -0
  91. package/src/classes/calendar/Week.ts +44 -0
  92. package/src/classes/calendar/Year.ts +130 -0
  93. package/src/classes/filters/Cursor.ts +43 -0
  94. package/src/classes/filters/FTSP.ts +99 -0
  95. package/src/classes/filters/FilterModel.ts +263 -0
  96. package/src/classes/filters/FilterQuery.ts +187 -0
  97. package/src/classes/filters/OperatorsOptions.ts +8 -0
  98. package/src/classes/filters/OperatorsTextOptions.ts +3 -0
  99. package/src/classes/filters/Pagination.ts +78 -0
  100. package/src/classes/filters/SelectFilter.ts +15 -0
  101. package/src/classes/filters/TreeModel.ts +14 -0
  102. package/src/classes/page/CustomSection.ts +24 -0
  103. package/src/classes/page/Page.ts +160 -0
  104. package/src/classes/page/PageDocument.ts +27 -0
  105. package/src/classes/page/PageImage.ts +15 -0
  106. package/src/classes/page/PageSection.ts +82 -0
  107. package/src/classes/page/PageSectionDocument.ts +56 -0
  108. package/src/classes/page/PageSideMenu.ts +74 -0
  109. package/src/components/AdaptiveContainer.vue +154 -0
  110. package/src/components/AdaptiveContainerHorizontal.vue +173 -0
  111. package/src/components/AdminGallery.vue +238 -0
  112. package/src/components/AuthModal.vue +16 -0
  113. package/src/components/CarouselImages.vue +434 -0
  114. package/src/components/ContactForm.vue +219 -0
  115. package/src/components/ContextWindow.vue +48 -0
  116. package/src/components/DateInputRange.vue +66 -0
  117. package/src/components/DateInputRange_v2.vue +25 -0
  118. package/src/components/DropList.vue +55 -0
  119. package/src/components/Edit.svg +10 -0
  120. package/src/components/EmailForm.vue +180 -0
  121. package/src/components/FTSPPanel.vue +379 -0
  122. package/src/components/FilterCheckbox.vue +73 -0
  123. package/src/components/FilterSelect.vue +104 -0
  124. package/src/components/FiltersButtonsSelect.vue +126 -0
  125. package/src/components/GeneralItem.vue +172 -0
  126. package/src/components/GridContainer.vue +66 -0
  127. package/src/components/Icons/Filter/IconDownload.vue +55 -0
  128. package/src/components/Icons/Filter/IconFilter.vue +55 -0
  129. package/src/components/Icons/IconArrowLeft.vue +36 -0
  130. package/src/components/Icons/IconCheckDefault.vue +41 -0
  131. package/src/components/Icons/IconClose.vue +37 -0
  132. package/src/components/Icons/IconEdit.vue +40 -0
  133. package/src/components/Icons/IconEmail.vue +36 -0
  134. package/src/components/Icons/IconMove.vue +53 -0
  135. package/src/components/Icons/IconPhone.vue +36 -0
  136. package/src/components/Icons/IconSearch.vue +47 -0
  137. package/src/components/Icons/IconSelectArrow.vue +41 -0
  138. package/src/components/Icons/Pagination/ArrowLeft.vue +52 -0
  139. package/src/components/Icons/Pagination/ArrowRight.vue +52 -0
  140. package/src/components/Icons/Pagination/DoubleArrowLeft.vue +52 -0
  141. package/src/components/Icons/Pagination/DoubleArrowRight.vue +52 -0
  142. package/src/components/Icons/Pagination/EllipsisSvg.vue +58 -0
  143. package/src/components/ImageCropper.vue +203 -0
  144. package/src/components/InfoItem.vue +294 -0
  145. package/src/components/InfoItemSelectButtons.vue +43 -0
  146. package/src/components/LeftRightContainer.vue +93 -0
  147. package/src/components/MessageBody.vue +45 -0
  148. package/src/components/PAutocomplete.vue +93 -0
  149. package/src/components/PDialog.vue +77 -0
  150. package/src/components/PLoader.vue +68 -0
  151. package/src/components/PNotification.vue +79 -0
  152. package/src/components/PPagination.vue +174 -0
  153. package/src/components/PhoneForm.vue +180 -0
  154. package/src/components/RSContainer.vue +262 -0
  155. package/src/components/RemoteSearch.vue +156 -0
  156. package/src/components/ResearcheContainer.vue +71 -0
  157. package/src/components/RightSliderContainer.vue +181 -0
  158. package/src/components/RightTabsContainer.vue +210 -0
  159. package/src/components/SelectValueType.vue +39 -0
  160. package/src/components/SingleNameToggleForm.vue +399 -0
  161. package/src/components/SortList.vue +101 -0
  162. package/src/components/SortSelect.vue +93 -0
  163. package/src/components/SvgIcon.vue +25 -0
  164. package/src/components/Switch3Pos.vue +173 -0
  165. package/src/components/ThemeWrapper.vue +19 -0
  166. package/src/components/ToggleInfoItem.vue +296 -0
  167. package/src/components/TopSliderContainer.vue +166 -0
  168. package/src/components/UploaderImage.vue +268 -0
  169. package/src/components/atoms/PButton/PButton.stories.ts +44 -0
  170. package/src/components/atoms/PButton/PButton.test.ts +66 -0
  171. package/src/components/atoms/PButton/PButton.vue +54 -0
  172. package/src/components/atoms/PButton/skins/p-button_base.css +131 -0
  173. package/src/components/atoms/PButton/skins/p-button_filter.scss +83 -0
  174. package/src/components/atoms/PButton/skins/p-button_icon.scss +78 -0
  175. package/src/components/atoms/PButton/skins/p-button_pag.css +44 -0
  176. package/src/components/atoms/PButton/skins/p-button_text.css +88 -0
  177. package/src/components/atoms/PButton/skins/p-button_text_ano.css +88 -0
  178. package/src/components/atoms/PCheckbox/PCheckBox.test.ts +107 -0
  179. package/src/components/atoms/PCheckbox/PCheckBox.vue +92 -0
  180. package/src/components/atoms/PDatePicker/PDatePicker.test.ts +63 -0
  181. package/src/components/atoms/PDatePicker/PDatePicker.vue +141 -0
  182. package/src/components/atoms/PFlex/PFlex.test.ts +41 -0
  183. package/src/components/atoms/PFlex/PFlex.vue +46 -0
  184. package/src/components/atoms/PInput/PInput.stories.ts +40 -0
  185. package/src/components/atoms/PInput/PInput.test.ts +92 -0
  186. package/src/components/atoms/PInput/PInput.vue +133 -0
  187. package/src/components/atoms/PInputDate/PInputDate.test.ts +55 -0
  188. package/src/components/atoms/PInputDate/PInputDate.vue +79 -0
  189. package/src/components/atoms/PInputNumber/PInputNumber.vue +175 -0
  190. package/src/components/atoms/PLeftSlider/PLeftSlider.test.ts +121 -0
  191. package/src/components/atoms/PLeftSlider/PLeftSlider.vue +139 -0
  192. package/src/components/atoms/PList/PList.test.ts +32 -0
  193. package/src/components/atoms/PList/PList.vue +27 -0
  194. package/src/components/atoms/PListItem/PListItem.test.ts +61 -0
  195. package/src/components/atoms/PListItem/PListItem.vue +51 -0
  196. package/src/components/atoms/PRadio/PRadio.test.ts +110 -0
  197. package/src/components/atoms/PRadio/PRadio.vue +97 -0
  198. package/src/components/atoms/PRightSlider/PRightSlider.test.ts +123 -0
  199. package/src/components/atoms/PRightSlider/PRightSlider.vue +149 -0
  200. package/src/components/atoms/PSelect/PSelect.test.ts +74 -0
  201. package/src/components/atoms/PSelect/PSelect.vue +192 -0
  202. package/src/components/atoms/PSelect/select-arrow-down.svg +4 -0
  203. package/src/components/atoms/PSticky/PSticky.test.ts +70 -0
  204. package/src/components/atoms/PSticky/PSticky.vue +37 -0
  205. package/src/components/atoms/PString/PString.test.ts +58 -0
  206. package/src/components/atoms/PString/PString.vue +58 -0
  207. package/src/components/atoms/PTextarea/PTextarea.stories.ts +40 -0
  208. package/src/components/atoms/PTextarea/PTextarea.test.ts +22 -0
  209. package/src/components/atoms/PTextarea/PTextarea.vue +123 -0
  210. package/src/components/atoms/PTopSlider/PTopSlider.test.ts +95 -0
  211. package/src/components/atoms/PTopSlider/PTopSlider.vue +164 -0
  212. package/src/components/molecules/Collapse/CollapseContainer.vue +36 -0
  213. package/src/components/molecules/Collapse/CollapseItem.vue +295 -0
  214. package/src/components/molecules/Collapse/VerticalCollapseContainer.vue +102 -0
  215. package/src/components/molecules/PAdd/PAdd.vue +65 -0
  216. package/src/components/molecules/PAdd/PContainer.vue +65 -0
  217. package/src/components/molecules/PAdd/PContainerStickyHead.vue +51 -0
  218. package/src/components/molecules/PDel/PDel.vue +74 -0
  219. package/src/components/organisms/AuthForm.vue +219 -0
  220. package/src/components/organisms/PModal.vue +113 -0
  221. package/src/components/organisms/PTabs/ITab.ts +5 -0
  222. package/src/components/organisms/PTabs/PTabs.vue +190 -0
  223. package/src/components/organisms/UploaderFile/UploaderFile.test.ts +23 -0
  224. package/src/components/organisms/UploaderFile/UploaderFile.vue +202 -0
  225. package/src/components/pages/AuthPage.vue +22 -0
  226. package/src/components/pages/PageNotFound.vue +7 -0
  227. package/src/index.ts +206 -0
  228. package/src/interfaces/AdminLayout.ts +4 -0
  229. package/src/interfaces/Animations.ts +5 -0
  230. package/src/interfaces/AuthStatuses.ts +8 -0
  231. package/src/interfaces/CalendarScale.ts +6 -0
  232. package/src/interfaces/Callback.ts +2 -0
  233. package/src/interfaces/Class.ts +3 -0
  234. package/src/interfaces/DataTypes.ts +8 -0
  235. package/src/interfaces/Filter.ts +3 -0
  236. package/src/interfaces/IAdminMenu.ts +9 -0
  237. package/src/interfaces/IAuthInfo.ts +0 -0
  238. package/src/interfaces/ICursor.ts +14 -0
  239. package/src/interfaces/IEmailPassword.ts +4 -0
  240. package/src/interfaces/IFIlesList.ts +4 -0
  241. package/src/interfaces/IFile.ts +7 -0
  242. package/src/interfaces/IFileAnchor.ts +4 -0
  243. package/src/interfaces/IFileInfo.ts +22 -0
  244. package/src/interfaces/IFileInfosGetter.ts +5 -0
  245. package/src/interfaces/IFiler.ts +7 -0
  246. package/src/interfaces/IFilter.ts +4 -0
  247. package/src/interfaces/IFilterQuery.ts +24 -0
  248. package/src/interfaces/IForm.ts +5 -0
  249. package/src/interfaces/IHTTPTypes.ts +19 -0
  250. package/src/interfaces/IMessage.ts +5 -0
  251. package/src/interfaces/IOption.ts +4 -0
  252. package/src/interfaces/IOrdered.ts +4 -0
  253. package/src/interfaces/IPagination.ts +15 -0
  254. package/src/interfaces/ISearchElement.ts +6 -0
  255. package/src/interfaces/ISearchObject.ts +6 -0
  256. package/src/interfaces/ISearchQuery.ts +4 -0
  257. package/src/interfaces/ISelectFilter.ts +6 -0
  258. package/src/interfaces/ISortModel.ts +18 -0
  259. package/src/interfaces/IStorePaginator.ts +4 -0
  260. package/src/interfaces/ISupposedTimePeriod.ts +4 -0
  261. package/src/interfaces/ITimePeriod.ts +4 -0
  262. package/src/interfaces/ITokens.ts +4 -0
  263. package/src/interfaces/IWithId.ts +3 -0
  264. package/src/interfaces/IWithImage.ts +9 -0
  265. package/src/interfaces/IWithName.ts +4 -0
  266. package/src/interfaces/IWithSupposedTimePeriod.ts +4 -0
  267. package/src/interfaces/ItemsWithCount.ts +4 -0
  268. package/src/interfaces/LocalStoreKeys.ts +7 -0
  269. package/src/interfaces/Operators.ts +11 -0
  270. package/src/interfaces/Orders.ts +4 -0
  271. package/src/interfaces/RoleName.ts +4 -0
  272. package/src/interfaces/SocialTypes.ts +6 -0
  273. package/src/interfaces/Sort.ts +9 -0
  274. package/src/interfaces/ValueRelation.ts +7 -0
  275. package/src/interfaces/canvas/ICanvas.ts +3 -0
  276. package/src/interfaces/canvas/ICanvasResult.ts +7 -0
  277. package/src/interfaces/canvas/ICoordinates.ts +6 -0
  278. package/src/interfaces/types.ts +3 -0
  279. package/src/services/AdminHead.ts +32 -0
  280. package/src/services/AdminSideMenu.ts +52 -0
  281. package/src/services/AdminUI.ts +9 -0
  282. package/src/services/Arrays.ts +65 -0
  283. package/src/services/Axios.ts +64 -0
  284. package/src/services/BaseRoutes.ts +21 -0
  285. package/src/services/BaseStore.ts +220 -0
  286. package/src/services/Button.ts +42 -0
  287. package/src/services/Cache.ts +44 -0
  288. package/src/services/CacheS.ts +44 -0
  289. package/src/services/CarouselSwipe.ts +14 -0
  290. package/src/services/ClassHelper.ts +101 -0
  291. package/src/services/Color.ts +8 -0
  292. package/src/services/CreateSortModels.ts +26 -0
  293. package/src/services/Cursor.ts +51 -0
  294. package/src/services/DateFormat.ts +102 -0
  295. package/src/services/DateMask.ts +69 -0
  296. package/src/services/Dates.ts +41 -0
  297. package/src/services/DatesFormatter.ts +45 -0
  298. package/src/services/Dialog.ts +70 -0
  299. package/src/services/Dragger.ts +22 -0
  300. package/src/services/Extension.ts +6 -0
  301. package/src/services/Favourite.ts +62 -0
  302. package/src/services/HttpClient.ts +199 -0
  303. package/src/services/HttpClientS.ts +188 -0
  304. package/src/services/HttpError.ts +58 -0
  305. package/src/services/Loading.ts +14 -0
  306. package/src/services/MakeCarousel.ts +10 -0
  307. package/src/services/Menu.ts +102 -0
  308. package/src/services/Message.ts +66 -0
  309. package/src/services/Notification.ts +37 -0
  310. package/src/services/PHelp.ts +20 -0
  311. package/src/services/Paginator.ts +22 -0
  312. package/src/services/Period.ts +29 -0
  313. package/src/services/PhoneService.ts +46 -0
  314. package/src/services/Router.ts +85 -0
  315. package/src/services/RouterGuard.ts +15 -0
  316. package/src/services/Scheduler.ts +66 -0
  317. package/src/services/Scroll.ts +19 -0
  318. package/src/services/SortList.ts +44 -0
  319. package/src/services/Sorter.ts +6 -0
  320. package/src/services/Strings.test.ts +30 -0
  321. package/src/services/Strings.ts +138 -0
  322. package/src/services/Time.ts +124 -0
  323. package/src/services/Timer.ts +13 -0
  324. package/src/services/Token.ts +71 -0
  325. package/src/services/Visible.ts +16 -0
  326. package/src/services/WaitElement.ts +19 -0
  327. package/src/services/WebSocketClient.ts +62 -0
  328. package/src/services/brandColors.ts +5 -0
  329. package/src/services/buildNameNumbers.ts +8 -0
  330. package/src/services/countRating.ts +12 -0
  331. package/src/services/index.ts +105 -0
  332. package/src/services/indexNames.ts +55 -0
  333. package/src/services/moves.ts +17 -0
  334. package/src/services/useConfirmLeavePage.ts +52 -0
  335. package/src/services/validate.ts +22 -0
  336. package/src/store/AuthStore.ts +58 -0
  337. package/src/store/ContactsStore.ts +11 -0
  338. package/src/store/CropperStore.ts +20 -0
  339. package/src/store/EmailsStore.ts +11 -0
  340. package/src/store/FTSPPresetsStore.ts +11 -0
  341. package/src/store/FileInfosStore.ts +11 -0
  342. package/src/store/HumansStore.ts +11 -0
  343. package/src/store/MenusStore.ts +11 -0
  344. package/src/store/PhonesStore.ts +11 -0
  345. package/src/store/SchemasStore.ts +11 -0
  346. package/src/store/SearchStore.ts +65 -0
  347. package/src/store/ServicesStores.ts +29 -0
  348. package/src/store/ServicesStoresNames.ts +17 -0
  349. package/src/store/UserAccountsStore.ts +11 -0
  350. package/src/store/ValueTypesStore.ts +11 -0
  351. package/src/tsconfig.build-lib.json +30 -0
  352. package/src/types/AuthInfo.ts +6 -0
  353. package/src/types/HttpHeaders.ts +12 -0
  354. package/src/types/HttpMethods.ts +6 -0
  355. package/src/types/Sizes.ts +7 -0
  356. package/src/types/Statuses.ts +9 -0
  357. package/src/types/ValueTypes.ts +16 -0
@@ -0,0 +1,263 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { Ref, ref } from 'vue';
3
+
4
+ import ClassHelper from '@/services//ClassHelper';
5
+ import Arrays from '@/services/Arrays';
6
+ import { ClassNameGetter } from '@/services/interfaces/Class';
7
+ import { DataTypes } from '@/services/interfaces/DataTypes';
8
+ import { Operators } from '@/services/interfaces/Operators';
9
+ import Strings from '@/services/Strings';
10
+
11
+ export default class FilterModel {
12
+ id?: string;
13
+ model = '';
14
+ label = '';
15
+ col = '';
16
+ operator: Operators = Operators.Eq;
17
+ date1?: Date;
18
+ date2?: Date;
19
+ value1?: string = '';
20
+ boolean = false;
21
+ number = 0;
22
+ type: DataTypes = DataTypes.String;
23
+ @ClassHelper.GetClassConstructor(String)
24
+ set: string[] = [];
25
+ isSet = false;
26
+
27
+ joinTable = '';
28
+ joinTableModel = '';
29
+ joinTableFk = '';
30
+ joinTablePk = '';
31
+ joinTableId = '';
32
+ joinTableIdCol = '';
33
+
34
+ constructor(i?: FilterModel) {
35
+ ClassHelper.BuildClass(this, i);
36
+ }
37
+
38
+ eq(s?: FilterModel): boolean {
39
+ if (!s) {
40
+ return false;
41
+ }
42
+ if (this.type === DataTypes.Join) {
43
+ const eq = s.model === this.model && s.operator === this.operator && this.joinTableModel === s.joinTableModel;
44
+ if (s.operator === Operators.In) {
45
+ return eq && Arrays.Eq(this.set, s.set);
46
+ }
47
+ return eq;
48
+ }
49
+ return s.model === this.model && s.col === this.col && s.operator === this.operator;
50
+ }
51
+
52
+ valueEq(s?: FilterModel): boolean {
53
+ if (!this || !s || !this.eq(s)) {
54
+ return false;
55
+ }
56
+ if (this.type === DataTypes.Boolean) {
57
+ return this.boolean === s?.boolean;
58
+ }
59
+ if (this.type === DataTypes.String) {
60
+ return this.value1 === s?.value1;
61
+ }
62
+ if (this.type === DataTypes.Join) {
63
+ return this.set.length ? Arrays.Eq(this.set, s.set) : false;
64
+ }
65
+ return false;
66
+ }
67
+
68
+ toUrlQuery(): string {
69
+ const t = this.type ? `"type":"${this.type}"` : '';
70
+ const model = this.model ? `"model":"${this.model}"` : '';
71
+ const col = this.col ? `"col":"${this.col}"` : '';
72
+ const operator = this.operator ? `"operator":"${this.operator}"` : '';
73
+ const value1 = this.value1 ? `"value1":"${this.value1}"` : '';
74
+ const b = this.type === DataTypes.Boolean ? `"boolean":${this.boolean}` : '';
75
+ const date1 = this.type === DataTypes.Date && this.date1 ? `"date1":"${this.date1.toISOString()}"` : '';
76
+ const date2 = this.type === DataTypes.Date && this.date2 ? `"date2":"${this.date2.toISOString()}"` : '';
77
+ const n = this.type === DataTypes.Number ? `"number":${this.number}` : '';
78
+ const s = this.type === DataTypes.Set || this.operator === Operators.In ? `"set":${JSON.stringify(this.set)}` : '';
79
+ const joinTableModel = this.type === DataTypes.Join ? `"joinTableModel":"${this.joinTableModel}"` : '';
80
+
81
+ return [t, model, col, operator, value1, b, date1, date2, n, s, joinTableModel].filter((s) => s !== '').toString();
82
+ }
83
+
84
+ fromUrlQuery(params: URLSearchParams): void {
85
+ this.model = params.get('model') ?? '';
86
+ this.col = params.get('col') ?? '';
87
+ this.label = params.get('label') ?? '';
88
+ this.operator = (params.get('operator') as Operators) ?? '';
89
+ this.value1 = params.get('value1') ?? '';
90
+ this.type = (params.get('type') as DataTypes) ?? '';
91
+ this.boolean = Boolean(params.get('boolean') ?? '');
92
+ this.joinTableModel = params.get('joinTableModel') ?? '';
93
+ this.joinTableId = params.get('joinTableId') ?? '';
94
+ this.joinTableFk = params.get('joinTableFk') ?? '';
95
+ this.joinTableIdCol = params.get('joinTableIdCol') ?? '';
96
+ this.joinTablePk = params.get('joinTablePk') ?? '';
97
+ }
98
+
99
+ isUnaryFilter(): boolean {
100
+ return this.operator === Operators.Eq || this.operator === Operators.Gt || this.operator === Operators.Lt;
101
+ }
102
+
103
+ isBetweenFilter(): boolean {
104
+ return this.operator === Operators.Btw;
105
+ }
106
+
107
+ isSetFilter(): boolean {
108
+ return this.operator === Operators.In;
109
+ }
110
+
111
+ static Create(model: ClassNameGetter, col: unknown, type: DataTypes): FilterModel {
112
+ const filterModel = new FilterModel();
113
+ filterModel.model = model.GetClassName();
114
+ filterModel.col = (col as string) ?? '';
115
+ filterModel.type = type;
116
+ if (filterModel.type === DataTypes.Number) {
117
+ filterModel.value1 = '0';
118
+ }
119
+ if (filterModel.type === DataTypes.String) {
120
+ filterModel.value1 = '';
121
+ }
122
+ if (filterModel.type === DataTypes.Boolean) {
123
+ filterModel.value1 = 'false';
124
+ filterModel.operator = Operators.Eq;
125
+ }
126
+ return filterModel;
127
+ }
128
+
129
+ static CreateFilterModel(model: string | ClassNameGetter, col: unknown, type: DataTypes): FilterModel {
130
+ const filterModel = new FilterModel();
131
+ filterModel.id = uuidv4();
132
+ filterModel.model = typeof model === 'string' ? model : model.GetClassName();
133
+ filterModel.col = (col as string) ?? '';
134
+ filterModel.type = type;
135
+ if (filterModel.type === DataTypes.Number) {
136
+ filterModel.value1 = '0';
137
+ }
138
+ if (filterModel.type === DataTypes.String) {
139
+ filterModel.value1 = '';
140
+ }
141
+ if (filterModel.type === DataTypes.Boolean) {
142
+ filterModel.value1 = 'false';
143
+ }
144
+ return filterModel;
145
+ }
146
+
147
+ static CreateFilterModelWithJoin(
148
+ table: string,
149
+ col: string,
150
+ joinTable: string,
151
+ joinTablePk: string,
152
+ joinTableFk: string,
153
+ type: DataTypes,
154
+ joinTableId?: string,
155
+ joinTableIdCol?: string
156
+ ): FilterModel {
157
+ const filterModel = new FilterModel();
158
+ filterModel.id = uuidv4();
159
+ filterModel.joinTable = joinTable;
160
+ filterModel.joinTablePk = joinTablePk;
161
+ filterModel.joinTableFk = joinTableFk;
162
+ filterModel.col = col;
163
+ filterModel.type = type;
164
+ if (joinTableId) {
165
+ filterModel.joinTableId = joinTableId;
166
+ }
167
+ if (joinTableIdCol) {
168
+ filterModel.joinTableIdCol = joinTableIdCol;
169
+ }
170
+ return filterModel;
171
+ }
172
+
173
+ static CreateFilterModelWithJoinV2(
174
+ model: string,
175
+ col: string,
176
+ joinTableModel: string,
177
+ joinTablePk: string,
178
+ joinTableFk: string,
179
+ joinTableId?: string,
180
+ joinTableIdCol?: string
181
+ ): FilterModel {
182
+ const filterModel = new FilterModel();
183
+ filterModel.model = model;
184
+ filterModel.joinTableModel = joinTableModel;
185
+ filterModel.joinTablePk = joinTablePk;
186
+ filterModel.joinTableFk = joinTableFk;
187
+ filterModel.col = col;
188
+ filterModel.type = DataTypes.Join;
189
+ if (joinTableId) {
190
+ filterModel.joinTableId = joinTableId;
191
+ }
192
+ if (joinTableIdCol) {
193
+ filterModel.joinTableIdCol = joinTableIdCol;
194
+ }
195
+ return filterModel;
196
+ }
197
+
198
+ static OnlyIfSecondModelExists(firstClass: ClassNameGetter, secondClass: ClassNameGetter): FilterModel {
199
+ const filterModel = new FilterModel();
200
+ filterModel.id = uuidv4();
201
+
202
+ filterModel.model = Strings.ToCamelCase(firstClass.GetClassName());
203
+ filterModel.joinTableModel = Strings.ToCamelCase(secondClass.GetClassName());
204
+ filterModel.type = DataTypes.Join;
205
+ return filterModel;
206
+ }
207
+
208
+ addToSet(...setElements: string[]): void {
209
+ setElements.forEach((setElement) => {
210
+ if (this.set.indexOf(setElement) === -1) {
211
+ this.set.push(setElement);
212
+ return;
213
+ }
214
+ this.set = this.set.filter((s: string) => s !== setElement);
215
+ });
216
+ }
217
+
218
+ pushToSet(...setElements: string[]): void {
219
+ setElements.forEach((setElement) => {
220
+ if (this.set.indexOf(setElement) === -1) {
221
+ this.set.push(setElement);
222
+ }
223
+ });
224
+ }
225
+
226
+ replaceSet(...setElements: string[]): void {
227
+ this.set = setElements;
228
+ }
229
+
230
+ setBoolean(value: boolean): void {
231
+ this.boolean = value;
232
+ }
233
+
234
+ toRef(): Ref<FilterModel> {
235
+ return ref(this);
236
+ }
237
+
238
+ setDate1(date?: Date): void {
239
+ this.date1 = date;
240
+ }
241
+
242
+ setDate2(date?: Date): void {
243
+ this.date2 = date;
244
+ }
245
+
246
+ dropDates(): void {
247
+ this.setDate1();
248
+ this.setDate2();
249
+ }
250
+ setDatesRange(date1?: Date, date2?: Date): void {
251
+ if (!date1 && !date2) {
252
+ this.dropDates();
253
+ return;
254
+ }
255
+ if (!date2) {
256
+ this.setDate1(date1);
257
+ this.operator = Operators.Eq;
258
+ return;
259
+ }
260
+ this.setDate2(date2);
261
+ this.operator = Operators.Btw;
262
+ }
263
+ }
@@ -0,0 +1,187 @@
1
+ import { LocationQuery } from 'vue-router';
2
+
3
+ import FilterModel from '@/services/classes/filters/FilterModel';
4
+ import Pagination from '@/services/classes/filters/Pagination';
5
+ import { Operators } from '@/services/interfaces/Operators';
6
+
7
+ import SortModel from '../SortModel';
8
+
9
+ export default class FilterQuery {
10
+ id?: string;
11
+ col = '';
12
+ value = '';
13
+ filterModels: FilterModel[] = [];
14
+ sortModels: SortModel[] = [];
15
+ sortModel: SortModel | undefined;
16
+ pagination: Pagination = new Pagination();
17
+ withDeleted = false;
18
+
19
+ f: FilterModel[] = [];
20
+ s: SortModel[] = [];
21
+ p: Pagination = new Pagination();
22
+
23
+ static Create(filters: FilterModel[], sortModels: SortModel[], pagination?: Pagination): FilterQuery {
24
+ const item = new FilterQuery();
25
+ item.filterModels = filters;
26
+ item.sortModels = sortModels;
27
+ if (pagination) {
28
+ item.pagination = pagination;
29
+ }
30
+ return item;
31
+ }
32
+
33
+ setQid(qid: string) {
34
+ this.id = qid;
35
+ }
36
+
37
+ toFTSP(): void {
38
+ this.f = this.filterModels;
39
+ this.s = this.sortModels;
40
+ this.p = this.pagination;
41
+ }
42
+
43
+ toUrl(): string {
44
+ const filterModels = this.filterModels?.map((filterModel: FilterModel) => {
45
+ return `filterModel={${filterModel.toUrlQuery()}}`;
46
+ });
47
+ const sortModels = this.sortModels.map((sortModels: SortModel) => {
48
+ return `sortModel={${sortModels.toUrlQuery()}}`;
49
+ });
50
+ if (this.sortModel) {
51
+ sortModels.push(`sortModel={${this.sortModel.toUrlQuery()}}`);
52
+ }
53
+ const pagination = `pagination={${this.pagination.toUrlQuery()}}`;
54
+
55
+ const withDeleted = `withDeleted=${this.withDeleted}`;
56
+ const all = [...filterModels, ...sortModels, withDeleted, pagination];
57
+ if (this.col) {
58
+ all.push(`col=${this.col}`);
59
+ }
60
+ if (this.value) {
61
+ all.push(`value=${this.value}`);
62
+ }
63
+ let url = `?${all.join('&')}`;
64
+ if (this.id) {
65
+ url = `${this.id}${url}`;
66
+ }
67
+ return url;
68
+ }
69
+
70
+ toUrlQuery(): string {
71
+ let url = '';
72
+ url += 's=';
73
+ url += this.sortModel?.toUrlQuery();
74
+ url += 'p=';
75
+ url += this.pagination.toUrlQuery();
76
+
77
+ let filterModelsUrlQuery = 'f=';
78
+ this.filterModels.forEach((fm, i) => {
79
+ if (i !== 0) {
80
+ filterModelsUrlQuery += ',';
81
+ }
82
+ filterModelsUrlQuery += fm.toUrlQuery();
83
+ });
84
+ url += filterModelsUrlQuery;
85
+ return url;
86
+ }
87
+
88
+ async fromUrlQuery(obj: LocationQuery): Promise<void> {
89
+ this.pagination.fromUrlQuery(obj);
90
+ if (!this.pagination.limit || !this.pagination.offset) {
91
+ this.pagination.limit = 25;
92
+ }
93
+
94
+ const sortModel = new SortModel();
95
+ if (sortModel.model) {
96
+ this.setSortModel(sortModel);
97
+ }
98
+
99
+ const str = window.location.search;
100
+ const filterModels = str.substring(str.indexOf('f=') + 2, str.lastIndexOf('|'));
101
+ const modelsStrings = filterModels.split(',');
102
+ const params = modelsStrings.map((m) => new URLSearchParams(decodeURIComponent(m)));
103
+
104
+ params.forEach((p: URLSearchParams) => {
105
+ const fm = new FilterModel();
106
+ fm.fromUrlQuery(p);
107
+ if (fm.col) {
108
+ this.filterModels.push(fm);
109
+ }
110
+ });
111
+ }
112
+
113
+ setParams(col: unknown, value: string): void {
114
+ this.col = (col as string) ?? '';
115
+ this.value = value;
116
+ }
117
+
118
+ setCursorPagination(schema: unknown, object: Record<string, unknown>): void {
119
+ const s = schema as Record<string, unknown>;
120
+ // const sortModel = this.sortModels.find((s: SortModel) => s.id);
121
+ if (!this.sortModel) {
122
+ return;
123
+ }
124
+ for (const p in s) {
125
+ if (s[p] === this.sortModel.col) {
126
+ if (p === 'sortColumn') {
127
+ continue;
128
+ }
129
+ this.pagination.cursor.column = this.sortModel.col;
130
+ this.pagination.cursor.value = String(object[p]);
131
+ this.pagination.cursor.operation = this.sortModel.isAsc() ? Operators.Gt : Operators.Lt;
132
+ this.pagination.cursorMode = true;
133
+ this.pagination.cursor.initial = false;
134
+ break;
135
+ }
136
+ }
137
+ }
138
+
139
+ setSortModel(sortModel: SortModel) {
140
+ if (this.sortModel) {
141
+ return;
142
+ }
143
+ this.sortModel = sortModel;
144
+ }
145
+
146
+ findFilterModel(m: FilterModel): FilterModel | undefined {
147
+ return this.filterModels.find((f: FilterModel) => {
148
+ if (f.model === m.model && f.label === m.label && f.col === m.col && f.operator === m.operator) {
149
+ if (f.value1 === m.value1 || f.boolean === m.boolean) {
150
+ return true;
151
+ }
152
+ }
153
+ });
154
+ }
155
+
156
+ setFilterModel(filterModel: FilterModel) {
157
+ filterModel.isSet = true;
158
+ let item = this.filterModels.find((i: FilterModel) => i.id === filterModel.id);
159
+ if (item) {
160
+ item = filterModel;
161
+ } else {
162
+ this.filterModels.push(filterModel);
163
+ }
164
+ }
165
+
166
+ spliceFilterModel(id: string | undefined) {
167
+ const index = this.filterModels.findIndex((i: FilterModel) => i.id === id);
168
+ if (index > -1) {
169
+ this.filterModels.splice(index, 1);
170
+ }
171
+ }
172
+
173
+ reset(): void {
174
+ this.filterModels.forEach((filterModel: FilterModel) => {
175
+ filterModel.isSet = false;
176
+ filterModel.value1 = '';
177
+ filterModel.date1 = undefined;
178
+ filterModel.date2 = undefined;
179
+ filterModel.boolean = false;
180
+ filterModel.set = [];
181
+ });
182
+ this.pagination = new Pagination();
183
+ this.filterModels = [];
184
+ this.sortModels = [];
185
+ this.sortModel = undefined;
186
+ }
187
+ }
@@ -0,0 +1,8 @@
1
+ import { Operators } from '@/services/interfaces/Operators';
2
+
3
+ export default [
4
+ { label: 'Равна', value: Operators.Eq },
5
+ { label: 'Больше чем', value: Operators.Gt },
6
+ { label: 'Меньше чем', value: Operators.Lt },
7
+ { label: 'Между', value: Operators.Btw },
8
+ ];
@@ -0,0 +1,3 @@
1
+ import { Operators } from '@/services/interfaces/Operators';
2
+
3
+ export default [{ label: 'Содержит', value: Operators.Like }];
@@ -0,0 +1,78 @@
1
+ import Cursor from '@/services/classes/filters/Cursor';
2
+ import ClassHelper from '@/services/ClassHelper';
3
+ import { Operators } from '@/services/interfaces/Operators';
4
+
5
+ export default class Pagination {
6
+ offset = 0;
7
+ limit = 25;
8
+ cursor: Cursor = new Cursor();
9
+ cursorMode = false;
10
+ append = false;
11
+ allLoaded = false;
12
+ version = '';
13
+
14
+ constructor(i?: Pagination) {
15
+ ClassHelper.BuildClass(this, i);
16
+ }
17
+
18
+ setLoadMore(lastCursor: string, column: string, table: string): void {
19
+ this.cursor.value = lastCursor;
20
+ this.cursor.initial = false;
21
+ this.cursor.operation = Operators.Gt;
22
+ this.cursor.column = column;
23
+ this.cursor.tableName = table;
24
+ this.cursorMode = true;
25
+ return;
26
+ }
27
+
28
+ setLoadMoreV2(lastCursor: string, column: string, model: string): void {
29
+ this.cursor.value = lastCursor;
30
+ this.cursor.initial = false;
31
+ this.cursor.operation = Operators.Gt;
32
+ this.cursor.column = column;
33
+ this.cursor.model = model;
34
+ this.cursorMode = true;
35
+ this.version = 'v2';
36
+ return;
37
+ }
38
+
39
+ setOffset(itemsLen: number): void {
40
+ this.offset = itemsLen;
41
+ }
42
+
43
+ toUrlQuery(): string {
44
+ const offset = `"offset":${this.offset}`;
45
+ const limit = `"limit":${this.limit}`;
46
+ const cursorMode = `"cursorMode":${this.cursorMode}`;
47
+ const append = `"append":${this.append}`;
48
+ const allLoaded = `"allLoaded":${this.allLoaded}`;
49
+ const cursor = `"cursor":{${this.cursor.toUrlQuery()}}`;
50
+ return [offset, limit, cursorMode, append, allLoaded, cursor].toString();
51
+ }
52
+
53
+ fromUrlQuery(): void {
54
+ const str = window.location.search;
55
+ const sormModelString = str.substring(str.indexOf('p=') + 2, str.lastIndexOf('|'));
56
+ const params = new URLSearchParams(decodeURIComponent(sormModelString));
57
+ this.offset = Number(params.get('offset'));
58
+ this.limit = Number(params.get('col'));
59
+ }
60
+
61
+ setAllLoaded(loadedItemsLength: number): void {
62
+ this.allLoaded = !(loadedItemsLength >= this.limit);
63
+ }
64
+ resetAllLoaded(): void {
65
+ this.allLoaded = false;
66
+ }
67
+ getPageNum(): number {
68
+ return this.offset / this.limit + 1;
69
+ }
70
+
71
+ drop() {
72
+ this.offset = 0;
73
+ this.limit = 25;
74
+ //TODO: Переделать,когда FTSP станет реактивным
75
+ // Store.Commit('pagination/setCurPage', 1);
76
+ ClassHelper.BuildClass(this);
77
+ }
78
+ }
@@ -0,0 +1,15 @@
1
+ import IOption from '@/services/interfaces/IOption';
2
+ import ISelectFilter from '@/services/interfaces/ISelectFilter';
3
+
4
+ export default class SelectFilter implements ISelectFilter {
5
+ title = '';
6
+ options: IOption[] = [];
7
+
8
+ constructor(selectFilter?: ISelectFilter) {
9
+ if (!selectFilter) {
10
+ return;
11
+ }
12
+ this.title = selectFilter.title;
13
+ this.options = selectFilter.options;
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ import { ClassNameGetter } from '../../interfaces/Class';
2
+
3
+ export default class TreeModel {
4
+ model = '';
5
+ cols: string[] = [];
6
+ models: TreeModel[] = [];
7
+
8
+ static Create(model: ClassNameGetter, cols: string[]): TreeModel {
9
+ const m = new TreeModel();
10
+ m.model = model.GetClassName();
11
+ m.cols = cols;
12
+ return m;
13
+ }
14
+ }
@@ -0,0 +1,24 @@
1
+ import ClassHelper from '@/services/ClassHelper';
2
+
3
+ export default class CustomSection {
4
+ id = '';
5
+ name = '';
6
+ component = '';
7
+ order?: number;
8
+ active = false;
9
+ key = 0;
10
+
11
+ constructor(i?: CustomSection) {
12
+ ClassHelper.BuildClass(this, i);
13
+ }
14
+
15
+ static Create(id: string, name: string, componentName: string, order?: number, active?: boolean): CustomSection {
16
+ const item = new CustomSection();
17
+ item.id = id;
18
+ item.name = name;
19
+ item.component = componentName;
20
+ item.order = order;
21
+ item.active = !!active;
22
+ return item;
23
+ }
24
+ }