Compare commits

...

6 Commits

Author SHA1 Message Date
6450acf6a3 build: update ref
All checks were successful
Build and Deploy Angular App / build (push) Successful in 51s
2024-09-01 03:44:02 +03:00
207f54ae17 fix: set credentials and change get to post 2024-09-01 00:30:37 +03:00
916aa2fd9c fix: add correct language for datepicker 2024-09-01 00:29:54 +03:00
42d831892a feat: split group by graduate 2024-08-31 02:18:55 +03:00
5ee350b66c fix: error prevention if data is null of empty 2024-08-31 02:17:55 +03:00
578fdff6ca fix: correct show special weeks 2024-08-30 17:00:33 +03:00
9 changed files with 242 additions and 177 deletions

272
package-lock.json generated
View File

@ -1,24 +1,24 @@
{
"name": "frontend",
"version": "1.0.0-b4",
"version": "1.0.0-b5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "frontend",
"version": "1.0.0-b4",
"version": "1.0.0-b5",
"dependencies": {
"@angular/animations": "^18.2.1",
"@angular/cdk": "~18.2.1",
"@angular/cdk-experimental": "^18.2.1",
"@angular/common": "^18.2.1",
"@angular/compiler": "^18.2.1",
"@angular/core": "^18.2.1",
"@angular/forms": "^18.2.1",
"@angular/material": "~18.2.1",
"@angular/platform-browser": "^18.2.1",
"@angular/platform-browser-dynamic": "^18.2.1",
"@angular/router": "^18.2.1",
"@angular/animations": "^18.2.2",
"@angular/cdk": "~18.2.2",
"@angular/cdk-experimental": "^18.2.2",
"@angular/common": "^18.2.2",
"@angular/compiler": "^18.2.2",
"@angular/core": "^18.2.2",
"@angular/forms": "^18.2.2",
"@angular/material": "~18.2.2",
"@angular/platform-browser": "^18.2.2",
"@angular/platform-browser-dynamic": "^18.2.2",
"@angular/router": "^18.2.2",
"@dhutaryan/ngx-mat-timepicker": "^18.0.1",
"@progress/kendo-date-math": "^1.5.13",
"rxjs": "~7.8.1",
@ -26,9 +26,9 @@
"zone.js": "^0.14.10"
},
"devDependencies": {
"@angular-devkit/build-angular": "^18.2.1",
"@angular/cli": "^18.2.1",
"@angular/compiler-cli": "^18.2.1",
"@angular-devkit/build-angular": "^18.2.2",
"@angular/cli": "^18.2.2",
"@angular/compiler-cli": "^18.2.2",
"@types/jasmine": "~5.1.4",
"jasmine-core": "~5.2.0",
"karma": "~6.4.4",
@ -53,13 +53,13 @@
}
},
"node_modules/@angular-devkit/architect": {
"version": "0.1802.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.1.tgz",
"integrity": "sha512-XTnJfCBMDQl3xF4w/eNrq821gbj2Ig1cqbzpRflhz4pqrANTAfHfPoIC7piWEZ60FNlHapzb6fvh6tJUGXG9og==",
"version": "0.1802.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.2.tgz",
"integrity": "sha512-LPRl9jhcf0NgshaL6RoUy1uL/cAyNt7oxctoZ9EHUu8eh5E9W/jZGhVowjOLpirwqYhmEzKJJIeS49Ssqs3RQg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "18.2.1",
"@angular-devkit/core": "18.2.2",
"rxjs": "7.8.1"
},
"engines": {
@ -69,17 +69,17 @@
}
},
"node_modules/@angular-devkit/build-angular": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.1.tgz",
"integrity": "sha512-ANsTWKjIlEvJ6s276TbwnDhkoHhQDfsNiRFUDRGBZu94UNR78ImQZSyKYGHJOeQQH6jpBtraA1rvW5WKozAtlw==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.2.tgz",
"integrity": "sha512-7HEnTN2T1jnjuItXKcApOsoYGgfou4+POju3ZbwIQukDZ3B2COskvQkVTxqPNrQ0ZjT2mxZYoVlmGW9M+7N25g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1802.1",
"@angular-devkit/build-webpack": "0.1802.1",
"@angular-devkit/core": "18.2.1",
"@angular/build": "18.2.1",
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/build-webpack": "0.1802.2",
"@angular-devkit/core": "18.2.2",
"@angular/build": "18.2.2",
"@babel/core": "7.25.2",
"@babel/generator": "7.25.0",
"@babel/helper-annotate-as-pure": "7.24.7",
@ -90,7 +90,7 @@
"@babel/preset-env": "7.25.3",
"@babel/runtime": "7.25.0",
"@discoveryjs/json-ext": "0.6.1",
"@ngtools/webpack": "18.2.1",
"@ngtools/webpack": "18.2.2",
"@vitejs/plugin-basic-ssl": "1.1.0",
"ansi-colors": "4.1.3",
"autoprefixer": "10.4.20",
@ -132,7 +132,7 @@
"tslib": "2.6.3",
"vite": "5.4.0",
"watchpack": "2.4.1",
"webpack": "5.93.0",
"webpack": "5.94.0",
"webpack-dev-middleware": "7.3.0",
"webpack-dev-server": "5.0.4",
"webpack-merge": "6.0.1",
@ -240,13 +240,13 @@
"license": "0BSD"
},
"node_modules/@angular-devkit/build-webpack": {
"version": "0.1802.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.1.tgz",
"integrity": "sha512-xOP9Hxkj/mWYdMTa/8uNxFTv7z+3UiGdt4VAO7vetV5qkU/S9rRq8FEKviCc2llXfwkhInSgeeHpWKdATa+YIQ==",
"version": "0.1802.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.2.tgz",
"integrity": "sha512-Pj+YmKh0nJOKl6QAsqYh3SqfuVJrFqjyp5WrG9BgfsMD9GCMD+5teMHNYJlp+vG/C8e7VdZp4rqOon8K9Xn4Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/architect": "0.1802.1",
"@angular-devkit/architect": "0.1802.2",
"rxjs": "7.8.1"
},
"engines": {
@ -260,9 +260,9 @@
}
},
"node_modules/@angular-devkit/core": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.1.tgz",
"integrity": "sha512-fSuGj6CxiTFR+yjuVcaWqaVb5Wts39CSBYRO1BlsOlbuWFZ2NKC/BAb5bdxpB31heCBJi7e3XbPvcMMJIcnKlA==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.2.tgz",
"integrity": "sha512-Zz0tGptI/QQnUBDdp+1G5wGwQWMjpfe2oO+UohkrDVgFS71yVj4VDnOy51kMTxBvzw+36evTgthPpmzqPIfxBw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -306,13 +306,13 @@
}
},
"node_modules/@angular-devkit/schematics": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.1.tgz",
"integrity": "sha512-2t/q0Jcv7yqhAzEdNgsxoGSCmPgD4qfnVOJ7EJw3LNIA+kX1CmtN4FESUS0i49kN4AyNJFAI5O2pV8iJiliKaw==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.2.tgz",
"integrity": "sha512-PU6+3nX+gQ3gofR7BGwXuvNUNeeV2raURaZjlPfGpBqjyTBxukMV71QsTTWptAZT4WibCWkTFp6X1gvsOGbjMg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "18.2.1",
"@angular-devkit/core": "18.2.2",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.11",
"ora": "5.4.1",
@ -325,9 +325,9 @@
}
},
"node_modules/@angular/animations": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.1.tgz",
"integrity": "sha512-jit452yuE6DMVV09E6RAjgapgw64mMVH31ccpPvMDekzPsTuP3KNKtgRFU/k2DFhYJvyczM1AqqlgccE/JGaRw==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.2.tgz",
"integrity": "sha512-jh/dGrY77HGm54HdTiQsxmvoRfFeJgHeWAK2+nWCPoc4b7OHcWxy/04cYffs0/27ThmABmppP7ERAyZ0f60uow==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -336,18 +336,18 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.1"
"@angular/core": "18.2.2"
}
},
"node_modules/@angular/build": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.1.tgz",
"integrity": "sha512-HwzjB+I31cAtjTTbbS2NbayzfcWthaKaofJlSmZIst3PN+GwLZ8DU0DRpd/xu5AXkk+DoAIWd+lzUIaqngz6ow==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.2.tgz",
"integrity": "sha512-okaDdTMXnDhvnnnih6rPQnexL6htfEAPr19bB1Ci9d31gEjVuKZCjlcw2sPZ6BUyilwC9nZlCI5vbH1Ljf6mzA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1802.1",
"@angular-devkit/architect": "0.1802.2",
"@babel/core": "7.25.2",
"@babel/helper-annotate-as-pure": "7.24.7",
"@babel/helper-split-export-declaration": "7.24.7",
@ -427,9 +427,9 @@
}
},
"node_modules/@angular/cdk": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.1.tgz",
"integrity": "sha512-6y4MmpEPXze6igUHkLsBUPkxw32F8+rmW0xVXZchkSyGlFgqfh53ueXoryWb0qL4s5enkNY6AzXnKAqHfPNkVQ==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.2.tgz",
"integrity": "sha512-+u7ZcMA24WO03vDzlBJJWq+okZLFDeW9JrtHzrdiT09FDt4sdUp+7PddXaZcRHIXjJL+CaCLQ6slaqPNEufqgg==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -444,31 +444,31 @@
}
},
"node_modules/@angular/cdk-experimental": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-18.2.1.tgz",
"integrity": "sha512-KOGqA8RbG4EbpFWg7sxaKeEA/uJ7c0mOa6g/i8+lh/4XWjzSoD6xFVmfpbH02s2hbCltLgBNcMWd8y0jGyLgFA==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-18.2.2.tgz",
"integrity": "sha512-Wnf8Uel7JInuel0//lrsZPORZp/gkiV5g0rsN13O6kvC6jam/QbnWNGuXBnVgXAwokVN8rv8pbOlv5EFadmfkw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/cdk": "18.2.1",
"@angular/cdk": "18.2.2",
"@angular/core": "^18.0.0 || ^19.0.0"
}
},
"node_modules/@angular/cli": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.1.tgz",
"integrity": "sha512-SomUFDHanY4o7k3XBGf1eFt4z1h05IGJHfcbl2vxoc0lY59VN13m/pZsD2AtpqtJTzLQT02XQOUP4rmBbGoQ+Q==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.2.tgz",
"integrity": "sha512-HVVaMxnbID0q+V3KE+JqzGbPHcBUFo1RKhBZ/jxY7USZNzgtyYbRc0IYqPWNdr99UT5QefTJrjVazJo1nqQZvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/architect": "0.1802.1",
"@angular-devkit/core": "18.2.1",
"@angular-devkit/schematics": "18.2.1",
"@angular-devkit/architect": "0.1802.2",
"@angular-devkit/core": "18.2.2",
"@angular-devkit/schematics": "18.2.2",
"@inquirer/prompts": "5.3.8",
"@listr2/prompt-adapter-inquirer": "2.0.15",
"@schematics/angular": "18.2.1",
"@schematics/angular": "18.2.2",
"@yarnpkg/lockfile": "1.1.0",
"ini": "4.1.3",
"jsonc-parser": "3.3.1",
@ -491,9 +491,9 @@
}
},
"node_modules/@angular/common": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.1.tgz",
"integrity": "sha512-N0ZJO1/iU9UhprplZRPvBcdRgA/i6l6Ng5gXs5ymHBJ0lxsB+mDVCmC4jISjR9gAWc426xXwLaOpuP5Gv3f/yg==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.2.tgz",
"integrity": "sha512-AQe4xnnNNch/sXRnV82C8FmhijxPATKfPGojC2qbAG2o6VkWKgt5Lbj0O8WxvSIOS5Syedv+O2kLY/JMGWHNtw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -502,14 +502,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.1",
"@angular/core": "18.2.2",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.1.tgz",
"integrity": "sha512-5e9ygKEcsBoV6xpaGKVrtsLxLETlrM0oB7twl4qG/xuKYqCLj8cRQMcAKSqDfTPzWMOAQc7pHdk+uFVo/8dWHA==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.2.tgz",
"integrity": "sha512-gmVNCXZiv/CIk2eKRLnH19N9VsPuE2s3Oxm0MNi003zk1cLy7D4YEm4fSrjKXtPY8MMpRXiu5f63W94hLwWEVw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -518,7 +518,7 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/core": "18.2.1"
"@angular/core": "18.2.2"
},
"peerDependenciesMeta": {
"@angular/core": {
@ -527,9 +527,9 @@
}
},
"node_modules/@angular/compiler-cli": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.1.tgz",
"integrity": "sha512-D+Qba0r6RfHfffzrebGYp54h05AxpkagLjit/GczKNgWSP1gIgZxSfi88D+GvFmeWvZxWN1ecAQ+yqft9hJqWg==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.2.tgz",
"integrity": "sha512-fF7lDrTA12YGqVjF4LyMi4hm58cv9G6CWmzSlvun0nMYCwrbRNnakZsj19dOfiIqqu4MwHaF4w3PTmUSxkMuiw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -551,14 +551,14 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/compiler": "18.2.1",
"@angular/compiler": "18.2.2",
"typescript": ">=5.4 <5.6"
}
},
"node_modules/@angular/core": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.1.tgz",
"integrity": "sha512-9KrSpJ65UlJZNXrE18NszcfOwb5LZgG+LYi5Doe7amt218R1bzb3trvuAm0ZzMaoKh4ugtUCkzEOd4FALPEX6w==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.2.tgz",
"integrity": "sha512-Rx6XajL0Ydj9hXUSPDvL2Q/kMzWtbiE3VxZFJnkE+fLQiWvr0GncB+NTb/nQ6QlPQ0ly60DvuI3KLcGDuFtGVA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -572,9 +572,9 @@
}
},
"node_modules/@angular/forms": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.1.tgz",
"integrity": "sha512-T7z8KUuj2PoPxrMrAruQVJha+x4a9Y6IrKYtArgOQQlTwCEJuqpVYuOk5l3fwWpHE9bVEjvgkAMI1D5YXA/U6w==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.2.tgz",
"integrity": "sha512-K8cv0w6o7+ocQfUrdSA3XaKrYfa1+2TlmtyxPHjEd2mCu2R+Yqo5RqJ3P8keFewJ1+bSLhz6xnn6mumwl0RnUQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -583,23 +583,23 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.1",
"@angular/core": "18.2.1",
"@angular/platform-browser": "18.2.1",
"@angular/common": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/material": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.1.tgz",
"integrity": "sha512-DBSJGqLttT9vYpLGWTuuRoOKd1mNelS0jnNo7jNZyMpjcGfuhNzmPtYiBkXfNsAl7YoXoUmX8+4uh1JZspQGqA==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.2.tgz",
"integrity": "sha512-c+EQo1GEvM2w3qasgV/BGxB0bpJeSGs2WcMVTXCYVMcqEk8nwpALwfZiCAYl8JoKoiC5k993zz19xP2Eu14qkQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
},
"peerDependencies": {
"@angular/animations": "^18.0.0 || ^19.0.0",
"@angular/cdk": "18.2.1",
"@angular/cdk": "18.2.2",
"@angular/common": "^18.0.0 || ^19.0.0",
"@angular/core": "^18.0.0 || ^19.0.0",
"@angular/forms": "^18.0.0 || ^19.0.0",
@ -608,9 +608,9 @@
}
},
"node_modules/@angular/platform-browser": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.1.tgz",
"integrity": "sha512-hQABX7QotGmCIR3EhCBCDh5ZTvQao+JkuK5CCw2G1PkRfJMBwEpjNqnyhz41hZhWiGlucp9jgbeypppW+mIQEw==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.2.tgz",
"integrity": "sha512-Bfvl8elCFxyJ9vlwamr4X5sVMcp/tSwBal2coyl0WR+/PH2PAAtf+/WMYxIN90yZmPiJx6RZWUSJRlHOFiFp3A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -619,9 +619,9 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/animations": "18.2.1",
"@angular/common": "18.2.1",
"@angular/core": "18.2.1"
"@angular/animations": "18.2.2",
"@angular/common": "18.2.2",
"@angular/core": "18.2.2"
},
"peerDependenciesMeta": {
"@angular/animations": {
@ -630,9 +630,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.1.tgz",
"integrity": "sha512-tYJHtshbaKrtnRA15k3vrveSVBqkVUGhINvGugFA2vMtdTOfhfPw+hhzYrcwJibgU49rHogCfI9mkIbpNRYntA==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.2.tgz",
"integrity": "sha512-UM/+1nY4iIj1v4lxAmV3XRHPAh/4qfNKScCLq8tJGot64rPCbtCl0Rl8rFFGqxAFvTErVDaJycUgWNZSfVl/hw==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -641,16 +641,16 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.1",
"@angular/compiler": "18.2.1",
"@angular/core": "18.2.1",
"@angular/platform-browser": "18.2.1"
"@angular/common": "18.2.2",
"@angular/compiler": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2"
}
},
"node_modules/@angular/router": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.1.tgz",
"integrity": "sha512-gVyqW6fYnG7oq1DlZSXJMQ2Py2dJQB7g6XVtRcYB1gR4aeowx5N9ws7PjqAi0ih91ASq2MmP4OlSSWLq+eaMGg==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.2.tgz",
"integrity": "sha512-tBHwuNtZNjzYAoVdveTI1ke/ZnQjKhc7gqDk9HCH2JUpdQhGbTvCKwDM51ktJpPMPcZlA263lQyy7VIyvdtK0A==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@ -659,9 +659,9 @@
"node": "^18.19.1 || ^20.11.1 || >=22.0.0"
},
"peerDependencies": {
"@angular/common": "18.2.1",
"@angular/core": "18.2.1",
"@angular/platform-browser": "18.2.1",
"@angular/common": "18.2.2",
"@angular/core": "18.2.2",
"@angular/platform-browser": "18.2.2",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@ -3615,9 +3615,9 @@
]
},
"node_modules/@ngtools/webpack": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.1.tgz",
"integrity": "sha512-v86U3jOoy5R9ZWe9Q0LbHRx/IBw1lbn0ldBU+gIIepREyVvb9CcH/vAyIb2Fw1zaYvvfG1OyzdrHyW8iGXjdnQ==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.2.tgz",
"integrity": "sha512-YhADmc+lVjLt3kze07A+yLry2yzcghdclu+7D3EDfa6fG2Pk33HK3MY2I0Z0BO+Ivoq7cV7yxm+naR+Od0Y5ng==",
"dev": true,
"license": "MIT",
"engines": {
@ -4181,14 +4181,14 @@
]
},
"node_modules/@schematics/angular": {
"version": "18.2.1",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.1.tgz",
"integrity": "sha512-bBV7I+MCbdQmBPUFF4ECg37VReM0+AdQsxgwkjBBSYExmkErkDoDgKquwL/tH7stDCc5IfTd0g9BMeosRgDMug==",
"version": "18.2.2",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.2.tgz",
"integrity": "sha512-0uPA1kQ38RnbNrzMlveX/QAqQIDu2INl5IYd3EUbJZRfYSp1VVyOSyuIBJ+1iUl5Y5VUa2uylaVZXhFdKWprXw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "18.2.1",
"@angular-devkit/schematics": "18.2.1",
"@angular-devkit/core": "18.2.2",
"@angular-devkit/schematics": "18.2.2",
"jsonc-parser": "3.3.1"
},
"engines": {
@ -4393,31 +4393,12 @@
"@types/node": "*"
}
},
"node_modules/@types/eslint": {
"version": "8.56.10",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
"integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
"dev": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dev": true,
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
}
},
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true
"dev": true,
"license": "MIT"
},
"node_modules/@types/express": {
"version": "4.17.21",
@ -6605,9 +6586,9 @@
}
},
"node_modules/enhanced-resolve": {
"version": "5.17.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
"integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
"version": "5.17.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
"integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -9945,9 +9926,9 @@
}
},
"node_modules/node-gyp-build": {
"version": "4.8.1",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
"integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
"version": "4.8.2",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz",
"integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==",
"dev": true,
"license": "MIT",
"optional": true,
@ -13391,13 +13372,12 @@
"license": "MIT"
},
"node_modules/webpack": {
"version": "5.93.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
"integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
"version": "5.94.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
"integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
@ -13406,7 +13386,7 @@
"acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.17.0",
"enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",

View File

@ -1,6 +1,6 @@
{
"name": "frontend",
"version": "1.0.0-b4",
"version": "1.0.0-b5",
"scripts": {
"ng": "ng",
"start": "ng serve",
@ -10,17 +10,17 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^18.2.1",
"@angular/cdk": "~18.2.1",
"@angular/cdk-experimental": "^18.2.1",
"@angular/common": "^18.2.1",
"@angular/compiler": "^18.2.1",
"@angular/core": "^18.2.1",
"@angular/forms": "^18.2.1",
"@angular/material": "~18.2.1",
"@angular/platform-browser": "^18.2.1",
"@angular/platform-browser-dynamic": "^18.2.1",
"@angular/router": "^18.2.1",
"@angular/animations": "^18.2.2",
"@angular/cdk": "~18.2.2",
"@angular/cdk-experimental": "^18.2.2",
"@angular/common": "^18.2.2",
"@angular/compiler": "^18.2.2",
"@angular/core": "^18.2.2",
"@angular/forms": "^18.2.2",
"@angular/material": "~18.2.2",
"@angular/platform-browser": "^18.2.2",
"@angular/platform-browser-dynamic": "^18.2.2",
"@angular/router": "^18.2.2",
"@dhutaryan/ngx-mat-timepicker": "^18.0.1",
"@progress/kendo-date-math": "^1.5.13",
"rxjs": "~7.8.1",
@ -28,9 +28,9 @@
"zone.js": "^0.14.10"
},
"devDependencies": {
"@angular-devkit/build-angular": "^18.2.1",
"@angular/cli": "^18.2.1",
"@angular/compiler-cli": "^18.2.1",
"@angular-devkit/build-angular": "^18.2.2",
"@angular/cli": "^18.2.2",
"@angular/compiler-cli": "^18.2.2",
"@types/jasmine": "~5.1.4",
"jasmine-core": "~5.2.0",
"karma": "~6.4.4",

View File

@ -17,6 +17,7 @@ export default class SetupService extends ApiService {
let request = this.createRequestBuilder()
.setEndpoint('CheckToken')
.setQueryParams({token: token})
.setWithCredentials()
.build;
return this.get<boolean>(request);
@ -49,7 +50,7 @@ export default class SetupService extends ApiService {
.setWithCredentials()
.build;
return this.get<boolean>(request);
return this.post<boolean>(request);
}
public setRedis(data: CacheRequest) {

View File

@ -83,6 +83,7 @@ export class TableComponent implements OnChanges {
filteredData = filteredData.filter(x =>
x.isExcludedWeeks == undefined ||
x.weeks == undefined ||
x.weeks.length == 0 ||
(x.isExcludedWeeks && !x.weeks.includes(this.currentWeek)) ||
(!x.isExcludedWeeks && x.weeks.includes(this.currentWeek))
);
@ -99,12 +100,12 @@ export class TableComponent implements OnChanges {
convertedData.data[dayOfWeek.toString()] = Object.values(groupedData).map(item => {
item.group = item.groups.join(', ');
if (this.isDisciplineWithWeeks && item.weeks && item.isExcludedWeeks !== undefined) {
if (this.backupDisciplines[item.disciplineId]) {
if (this.isDisciplineWithWeeks && item.weeks !== undefined && item.weeks.length > 0 && item.isExcludedWeeks !== undefined) {
if (this.backupDisciplines[item.disciplineId])
item.discipline = this.backupDisciplines[item.disciplineId];
} else {
else
this.backupDisciplines[item.disciplineId] = item.discipline;
}
item.discipline = `${item.isExcludedWeeks ? 'кр.' : 'н.'} ${item.weeks.join(', ')} ${item.discipline}`;
} else if (this.backupDisciplines[item.disciplineId])
item.discipline = this.backupDisciplines[item.disciplineId];

View File

@ -0,0 +1,5 @@
.div-wrapper {
display: block;
width: 100%;
padding: 10px 0;
}

View File

@ -6,11 +6,13 @@
</mat-panel-title>
</mat-expansion-panel-header>
<mat-chip-listbox hideSingleSelectionIndicator (change)="onFacultySelected($event.value)" #facultyChip>
@for (faculty of faculties; track $index) {
<mat-chip-option [value]="faculty.id" color="accent">
{{ faculty.name }}
</mat-chip-option>
}
@if (faculties === null) {
<app-loading-indicator [loading]="true"
(retryFunction)="loadFaculties()"
@ -28,11 +30,13 @@
<mat-chip-listbox hideSingleSelectionIndicator (change)="onCourseSelected($event.value)"
[formControl]="formChipCourse"
#courseChip>
@for (course of courseNumbers; track $index) {
<mat-chip-option [value]="course" color="accent">
{{ course }}
</mat-chip-option>
}
@if (courseNumbers === null) {
<app-loading-indicator [loading]="true"
(retryFunction)="loadCourseGroup()"
@ -50,11 +54,63 @@
<mat-chip-listbox hideSingleSelectionIndicator (change)="onGroupSelected($event.value)"
[formControl]="formChipGroup"
#groupChip>
@for (group of filteredGroups; track $index) {
<mat-chip-option [value]="group.id" color="accent">
{{ group.name }}
</mat-chip-option>
@if (filteredGroupsSpecialist && filteredGroupsSpecialist.length > 0) {
<div class="div-wrapper">
Специалитет:
</div>
<div class="div-wrapper">
@for (group of filteredGroupsSpecialist; track $index) {
<mat-chip-option [value]="group.id" color="accent">
{{ group.name }}
</mat-chip-option>
}
</div>
}
@if (filteredGroupsSpecialist && filteredGroupsSpecialist.length > 0 && (filteredGroupsBehaviour && filteredGroupsBehaviour.length > 0 || filteredGroupsMagistracy && filteredGroupsMagistracy.length > 0)) {
<div class="div-wrapper">
<hr/>
</div>
}
@if (filteredGroupsBehaviour && filteredGroupsBehaviour.length > 0) {
<div class="div-wrapper">
Бакалавариат:
</div>
<div class="div-wrapper">
@for (group of filteredGroupsBehaviour; track $index) {
<mat-chip-option [value]="group.id" color="accent">
{{ group.name }}
</mat-chip-option>
}
</div>
}
@if (((filteredGroupsSpecialist && filteredGroupsSpecialist.length > 0 && filteredGroupsBehaviour && filteredGroupsBehaviour.length > 0) ||
((!filteredGroupsSpecialist || filteredGroupsSpecialist.length === 0) && filteredGroupsBehaviour && filteredGroupsBehaviour.length > 0)) &&
filteredGroupsMagistracy && filteredGroupsMagistracy.length > 0) {
<div class="div-wrapper">
<hr/>
</div>
}
@if (filteredGroupsMagistracy && filteredGroupsMagistracy.length > 0) {
<div class="div-wrapper">
Магистратура:
</div>
<div>
@for (group of filteredGroupsMagistracy; track $index) {
<mat-chip-option [value]="group.id" color="accent">
{{ group.name }}
</mat-chip-option>
}
</div>
}
@if (faculties === null) {
<app-loading-indicator [loading]="true"
(retryFunction)="loadCourseGroup()"

View File

@ -30,7 +30,9 @@ export class GroupComponent implements IScheduleTab {
protected faculties: FacultyResponse[] | null = null;
protected courseNumbers: number[] | null = null;
private groups: GroupResponse[] | null = null;
protected filteredGroups: GroupResponse[] | null = [];
protected filteredGroupsBehaviour: GroupResponse[] | null = null;
protected filteredGroupsMagistracy: GroupResponse[] | null = null;
protected filteredGroupsSpecialist: GroupResponse[] | null = null;
protected facultyId: number | null = null;
protected courseNumber: number | null = null;
@ -132,8 +134,17 @@ export class GroupComponent implements IScheduleTab {
return;
}
if (this.courseNumber !== null)
this.filteredGroups = this.groups!.filter(x => x.courseNumber === this.courseNumber);
if (this.courseNumber !== null) {
const groupByCourse = this.groups!.filter(x => x.courseNumber === this.courseNumber);
groupByCourse.forEach(x => {
if (x.name[2].toUpperCase() === 'Б')
this.filteredGroupsBehaviour?.push(x);
else if (x.name[2].toUpperCase() === 'С')
this.filteredGroupsSpecialist?.push(x);
else
this.filteredGroupsMagistracy?.push(x);
});
}
}
protected onFacultySelected(index: number) {
@ -156,7 +167,9 @@ export class GroupComponent implements IScheduleTab {
}
protected onCourseSelected(course: number) {
this.filteredGroups = [];
this.filteredGroupsBehaviour = [];
this.filteredGroupsMagistracy = [];
this.filteredGroupsSpecialist = [];
this.formChipGroup.reset();
if (course === undefined) {

View File

@ -82,6 +82,11 @@ export class ScheduleComponent implements OnInit {
throw error;
}))
.subscribe(x => {
if (x == undefined || x.length === 0) {
this.isLoadTable = false;
return;
}
this.data = x;
switch (data[0]) {
case TabsSelect.Group:

View File

@ -2,7 +2,7 @@ import {Component} from '@angular/core';
import {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
import {NavigationService} from "@service/navigation.service";
import SetupService from "@api/v1/setup.service";
import {MAT_DATE_LOCALE, MatNativeDateModule} from "@angular/material/core";
import {DateAdapter, MatNativeDateModule} from "@angular/material/core";
import {MatFormFieldModule} from "@angular/material/form-field";
import {MatSelectModule} from "@angular/material/select";
import {MatInput} from "@angular/material/input";
@ -26,13 +26,17 @@ import {MatDatepickerModule} from "@angular/material/datepicker";
MatNativeDateModule
],
templateUrl: './schedule.component.html',
providers: [{provide: MAT_DATE_LOCALE, useValue: 'ru-RU'}]
})
export class ScheduleComponent {
protected scheduleSettings!: FormGroup;
constructor(private navigationService: NavigationService, formBuilder: FormBuilder, private api: SetupService) {
constructor(
private navigationService: NavigationService,
formBuilder: FormBuilder,
private api: SetupService,
adapter: DateAdapter<any>) {
adapter.setLocale(navigator.language);
this.scheduleSettings = formBuilder.group({
cron: ['0 */6 * * *', Validators.pattern(/^(\S+\s){4}\S$/)],
startTerm: ['', Validators.required]