Compare commits

...

1658 Commits
0.1.1 ... 1.6.2

Author SHA1 Message Date
d5e0ae7b37 Merge branch 'release/1.6.2' 2022-04-10 20:37:17 +02:00
e6f56a74a4 Version 1.6.2 2022-04-10 20:37:10 +02:00
1bc59cfa7f Another attempt to fix destination crash (#1826) 2022-04-10 20:23:46 +02:00
41bae262a5 Merge branch 'release/1.6.1' into develop 2022-04-06 17:28:55 +02:00
ae65228805 Merge branch 'release/1.6.1' 2022-04-06 17:28:50 +02:00
391ee6e621 Version 1.6.1 2022-04-06 17:27:27 +02:00
0a87df3d82 New Crowdin updates (#1817) 2022-04-06 17:19:38 +02:00
cb4ae21903 Replace Serializable to Parcelable in Destination (#1823) 2022-04-06 08:01:41 +02:00
679cf2554d Fix text in lucky number widget (#1825) 2022-04-06 08:01:11 +02:00
d473d53879 Add standard register variant as translatable string (#1824) 2022-04-05 13:56:11 +02:00
6531061b48 Fix text aligment in exam dialog (#1821) 2022-04-05 10:30:49 +02:00
3347e8fba8 Bump kotlin_version from 1.6.10 to 1.6.20 (#1818) 2022-04-05 08:10:07 +00:00
84067126a1 Bump hianalytics from 6.4.1.300 to 6.4.1.301 (#1819) 2022-04-05 08:09:46 +00:00
da9bebe923 Merge branch 'release/1.6.0' into develop 2022-04-02 22:02:01 +02:00
b371fd6709 Merge branch 'release/1.6.0' 2022-04-02 22:01:53 +02:00
884d443c5b Version 1.6.0 2022-04-02 22:01:34 +02:00
df58aa78ae New Crowdin updates (#1783) 2022-03-31 09:00:41 +02:00
2131e892ad Add option to select multiple messages to delete (#1780) 2022-03-28 19:30:20 +02:00
63380d3e12 Bump agcp from 1.6.4.300 to 1.6.5.200 (#1812) 2022-03-28 13:53:57 +00:00
c572a91b38 Bump agconnect-crash from 1.6.4.300 to 1.6.5.200 (#1811) 2022-03-28 13:53:42 +00:00
20dde6e896 Resource refactor (#1589) 2022-03-27 15:33:32 +02:00
042b66ca5c Bump core-splashscreen from 1.0.0-beta01 to 1.0.0-beta02 (#1810) 2022-03-26 22:37:53 +00:00
8d8990761a Bump firebase-bom from 29.2.1 to 29.3.0 (#1809) 2022-03-26 22:37:22 +00:00
a07741b5c5 Bump WhatTheStack from 1.0.0-alpha03 to 1.0.0-alpha04 (#1807) 2022-03-22 17:49:32 +00:00
f851a4d2c5 Bump huawei-publish-gradle-plugin from 1.3.1 to 1.3.3 (#1806) 2022-03-22 12:47:27 -05:00
c8d069c787 Bump hianalytics from 6.4.0.300 to 6.4.1.300 (#1805) 2022-03-20 00:25:31 +00:00
5ce30a3000 Bump firebase-bom from 29.2.0 to 29.2.1 (#1804) 2022-03-20 00:25:11 +00:00
26e0f43fa0 Bump firebase-bom from 29.1.0 to 29.2.0 (#1803) 2022-03-17 18:28:26 +00:00
08c1bedca1 Add the option to quickly add a calendar event from the exam details (#1802)
* Extract intent utils to separate file

* Add add to calendar button in exam details dialog

* Set 8:00-8:45 start/end time
2022-03-14 00:38:40 +01:00
15537586c4 Add exam date field to exam details dialog (#1801) 2022-03-13 22:47:54 +01:00
a04ba4ae10 Login improvements (#1800)
* Update sdk

* Change default register variant name

* Change symbol hint message and email template
2022-03-13 22:43:57 +01:00
57ea6379ab Timetable timer refactor (#1785) 2022-03-13 04:01:14 +01:00
c3abe50ed4 Bump gradle from 7.1.1 to 7.1.2 (#1790) 2022-02-28 18:59:53 +00:00
f48caf9f70 Bump play-services-ads from 20.5.0 to 20.6.0 (#1792) 2022-02-28 18:41:16 +00:00
9a413c14c3 Bump agcp from 1.6.4.200 to 1.6.4.300 (#1791) 2022-02-28 18:37:29 +00:00
8915c5dd8e Bump agconnect-crash from 1.6.4.200 to 1.6.4.300 (#1793) 2022-02-28 18:32:31 +00:00
e7561d4794 Bump room from 2.4.1 to 2.4.2 (#1794) 2022-02-28 18:32:08 +00:00
820b99dbc7 Bump hilt_version from 2.40.5 to 2.41 (#1786) 2022-02-21 19:35:02 +00:00
aff0fb3a60 Add information about student in grade statistics pie chart (#1749)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2022-02-15 13:08:44 +01:00
d3bf5c3e0a Bump lifecycle-livedata-ktx from 2.4.0 to 2.4.1 (#1781) 2022-02-14 20:06:05 +00:00
dec2703cc7 Bump firebase-bom from 29.0.4 to 29.1.0 (#1782) 2022-02-14 20:05:45 +00:00
edd1c9442e Fix calc vulcan average in second semester (#1779) 2022-02-12 22:22:15 +01:00
18568c86be New Crowdin updates (#1776) 2022-02-12 12:19:25 +01:00
84d0ba525f Fix blank description in exam details (#1778) 2022-02-10 07:36:44 +01:00
6290663f02 Bump gradle from 7.1.0 to 7.1.1 (#1777) 2022-02-07 04:41:09 +00:00
be046a1ddd Update date in LICENSE file (#1775) 2022-02-07 03:16:17 +01:00
96ee4bd9e5 Keep reacting to live changes in dashboard after a force refresh (#1594)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2022-02-02 02:44:14 +00:00
923af85d18 Bump fragment-ktx from 1.4.0 to 1.4.1 (#1774) 2022-02-02 01:53:16 +00:00
ce36e86bb2 Bump preference-ktx from 1.1.1 to 1.2.0 (#1773) 2022-01-29 05:38:55 +00:00
a4f455b38f Bump hianalytics from 6.3.2.300 to 6.4.0.300 (#1771) 2022-01-29 04:55:02 +00:00
01b8bd9d4a Bump agconnect-crash from 1.6.3.300 to 1.6.4.200 (#1770) 2022-01-29 04:47:56 +00:00
cfcc051ce4 Bump gradle from 7.0.4 to 7.1.0 (#1769) 2022-01-29 04:47:26 +00:00
0b0993be9a Bump agcp from 1.6.3.300 to 1.6.4.200 (#1772) 2022-01-29 04:47:00 +00:00
d07b0dbc98 Bump WhatTheStack from 1.0.0-alpha02 to 1.0.0-alpha03 (#1768) 2022-01-29 04:46:09 +00:00
daa7b54dab Refactor notification destinations (#1709)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2022-01-28 13:43:56 +01:00
de9fcb9af9 Add what-the-stack library (#1767) 2022-01-28 12:07:48 +01:00
40e0934504 Bump fuzzywuzzy from 1.3.3 to 1.4.0 (#1765) 2022-01-28 11:07:22 +00:00
009ec433be Bump firebase-bom from 29.0.3 to 29.0.4 (#1766) 2022-01-27 12:06:30 +00:00
e1d82d70ee New translations strings.xml (German) (#1746) 2022-01-23 20:04:01 +01:00
7a9ba04ff4 Bump material from 1.4.0 to 1.5.0 (#1757) 2022-01-23 02:17:14 +00:00
513b4b7d3e Bump coordinatorlayout from 1.1.0 to 1.2.0 (#1756) 2022-01-23 01:43:30 +00:00
ce4157933f Bump core-splashscreen from 1.0.0-alpha02 to 1.0.0-beta01 (#1752) 2022-01-23 01:39:16 +00:00
5d1085a64a Bump fuzzywuzzy from 1.3.1 to 1.3.3 (#1754) 2022-01-23 00:58:12 +00:00
a00f2dcbda Bump core from 1.10.2 to 1.10.3 (#1753) 2022-01-23 00:57:40 +00:00
b52a6f7f61 Bump room from 2.4.0 to 2.4.1 (#1755) 2022-01-23 00:57:17 +00:00
5146e44574 Bump agconnect-crash from 1.6.3.200 to 1.6.3.300 (#1758) 2022-01-23 00:56:57 +00:00
90e1cea679 Bump appcompat from 1.4.0 to 1.4.1 (#1759) 2022-01-23 00:56:37 +00:00
c9b506ae10 Bump agcp from 1.6.3.200 to 1.6.3.300 (#1760) 2022-01-23 00:56:16 +00:00
14ebdad7b2 Bump constraintlayout from 2.1.2 to 2.1.3 (#1761) 2022-01-23 00:55:58 +00:00
210308695b Bump huawei-publish-gradle-plugin from 1.3.0 to 1.3.1 (#1750) 2022-01-11 11:12:48 +00:00
d5cc2263f5 Bump mockk from 1.12.1 to 1.12.2 (#1747) 2022-01-04 10:13:31 +00:00
47e3f2dc58 Merge branch 'release/1.5.0' into develop 2022-01-01 17:51:19 +01:00
6dc16b288d Merge branch 'release/1.5.0' 2022-01-01 17:51:11 +01:00
daf97be9ad Version 1.5.0 2022-01-01 17:50:02 +01:00
2bb2190410 New Crowdin updates (#1745) 2022-01-01 17:48:58 +01:00
aff1a7030d Add a custom error message for ssl errors due to invalid clock setting (#1742) 2022-01-01 15:46:08 +01:00
8877322357 Differentiate school announcements by userLoginId (#1744) 2022-01-01 13:52:51 +01:00
bc672e94f8 Strip html from school announcements notifications (#1743) 2022-01-01 13:48:58 +01:00
a03bcf8e62 Display comment after entry in grade notifications (#1741) 2021-12-31 11:36:14 +00:00
20673c4ead Add basic support for kindergarten students (#1738) 2021-12-31 12:21:52 +01:00
5321d00ee9 Fix play flavor build (#1740) 2021-12-31 12:10:56 +01:00
e6b2acabd5 Block app timezone to polish timezone (#1598) 2021-12-31 11:53:09 +01:00
bfd7f688ab Move webview locale fix to account recovery fragment (#1739) 2021-12-31 10:24:02 +00:00
ba02531aa4 Fix timetable widget crash when there are no lessons for the day (#1737) 2021-12-31 09:40:15 +01:00
210c3a0e28 Remove HiltBroadcastReceiver (#1736) 2021-12-30 12:50:06 +01:00
68f0ecc45c If only one student exists, don't show student name in timetable notification (#1711)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-12-29 15:44:43 +01:00
0965d03f1a New Crowdin updates (#1734) 2021-12-29 11:57:17 +01:00
496641f594 Fix notification spam after login (#1715) 2021-12-29 08:31:43 +01:00
684c258e2d Remove admin message offline first cache (#1735) 2021-12-28 18:56:59 +01:00
5e96917508 Fix overlapping text in the error dialog (#1708) 2021-12-28 12:16:52 +01:00
17096ad11b New Crowdin updates (#1729) 2021-12-27 14:06:20 +01:00
bd883c9f38 Add option to remove notifications captured from vulcan.hebe (#1716) 2021-12-27 07:48:47 +00:00
6520f8a0d7 Fix that an incorrect day would be selected in MaterialDatePicker (#1723) 2021-12-27 08:10:30 +01:00
2eee50ad81 Replace view pager in login activity with simple fragment transactions (#1686) 2021-12-27 07:58:57 +01:00
8560fd7e81 Bump coroutines from 1.5.2 to 1.6.0 (#1731) 2021-12-25 08:38:27 +00:00
f718147ae9 Bump agcp from 1.6.2.300 to 1.6.3.200 (#1730) 2021-12-25 05:55:01 +00:00
cd12c4c891 Bump agconnect-crash from 1.6.2.300 to 1.6.3.200 (#1732) 2021-12-25 05:54:34 +00:00
65f114ce05 Bump kotlinx-serialization-json from 1.3.1 to 1.3.2 (#1733) 2021-12-25 05:54:17 +00:00
497083be97 Update timetable to next day if there is no more lessons today (#1551) 2021-12-25 05:46:24 +00:00
e26860ea5a Fix state restoring in GradeStatistics (#1667)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-12-23 13:58:26 +01:00
094df212b4 Add additional lessons feature (#1550) 2021-12-21 00:36:59 +01:00
cc22985dc5 Bump firebase-bom from 29.0.2 to 29.0.3 (#1728) 2021-12-20 20:22:56 +00:00
ad9a2711c4 New Crowdin updates (#1687) 2021-12-19 22:46:41 +01:00
daf44c531c Merge branch 'release/1.4.4' into develop 2021-12-19 22:25:56 +01:00
4e12eb1552 Merge branch 'release/1.4.4' 2021-12-19 22:25:52 +01:00
c846cc999f Version 1.4.4 2021-12-19 22:25:47 +01:00
47d430292c Update template of login issue email (#1724)
* Update sdk

* Update template of login issue email
2021-12-19 22:08:39 +01:00
5e1ff2243f Fix exception in TimetableAdapter (#1721) 2021-12-12 23:09:34 +01:00
a35bef58f2 Bump gradle from 7.0.3 to 7.0.4 (#1718) 2021-12-12 14:06:15 +00:00
0005d84974 Bump hilt_version from 2.40.4 to 2.40.5 (#1719) 2021-12-12 14:05:53 +00:00
19558cb871 Bump firebase-bom from 29.0.1 to 29.0.2 (#1720) 2021-12-12 14:05:35 +00:00
45e884127f After deselecting fakelog, clear credentials from login form (#1713) 2021-12-12 15:04:31 +01:00
c87085a226 Fix invalid order of school announcements (#1689) 2021-12-11 17:35:55 +01:00
79b970256f More strongly typed data in preferences (#1697) 2021-12-11 16:14:46 +00:00
70f038f15f Remove useless group property from NotificationType (#1714) 2021-12-11 17:12:47 +01:00
9cabd7ef08 Deduplicate timetable time left string (#1710) 2021-12-11 16:42:33 +01:00
d89e4ccfdf Fix grade sorting by date (#1717) 2021-12-11 11:54:07 +01:00
1bcc4d199e When replying to a message use Re instead of RE (#1712) 2021-12-10 16:24:39 +01:00
2e85e88c5d Bump agcp from 1.6.2.200 to 1.6.2.300 (#1693) 2021-12-08 10:21:00 +00:00
6ab67fe25b Bump firebase-bom from 29.0.0 to 29.0.1 (#1696) 2021-12-08 10:04:29 +00:00
8563277a89 Bump robolectric from 4.7.2 to 4.7.3 (#1695) 2021-12-08 10:04:10 +00:00
e458cc90b0 Bump agconnect-crash from 1.6.2.200 to 1.6.2.300 (#1694) 2021-12-08 10:03:42 +00:00
651e3a21b9 Bump firebase-crashlytics-gradle from 2.8.0 to 2.8.1 (#1692) 2021-12-08 10:03:06 +00:00
f6b969cfb1 Bump hilt_version from 2.40.2 to 2.40.4 (#1691) 2021-12-08 10:02:43 +00:00
d2aa940d46 Convert from a stringly typed grade color to enum GradeColorTheme (#1672) 2021-11-27 10:11:17 +01:00
ab435a72ea Merge branch 'release/1.4.3' into develop 2021-11-26 22:29:13 +01:00
a56f4b8745 Merge branch 'release/1.4.3' 2021-11-26 22:29:09 +01:00
d003b0897c Version 1.4.3 2021-11-26 22:29:03 +01:00
581bb2de77 New Crowdin updates (#1669) 2021-11-26 20:22:54 +01:00
495e385228 Fix snackbar crash in grade statistics view (#1682) 2021-11-25 23:48:08 +01:00
10ba36ba44 Bump hianalytics from 6.3.0.303 to 6.3.2.300 (#1684) 2021-11-25 22:46:30 +00:00
eae396424f Bump hilt_version from 2.40.1 to 2.40.2 (#1683) 2021-11-25 22:46:17 +00:00
a7891bb266 Update viewpager2 library to fix duplicated menu bug (#1681) 2021-11-24 09:53:16 +01:00
6e82409dbc Bump play-services-ads from 20.4.0 to 20.5.0 (#1675) 2021-11-23 02:02:03 +00:00
984db18be3 Bump agcp from 1.6.1.300 to 1.6.2.200 (#1674) 2021-11-23 01:55:49 +00:00
c99bc96c08 Bump logging-interceptor from 4.9.2 to 4.9.3 (#1676) 2021-11-23 01:55:10 +00:00
3e7030abc2 Bump agconnect-crash from 1.6.1.300 to 1.6.2.200 (#1677) 2021-11-23 01:54:47 +00:00
6dad3b299b Bump robolectric from 4.7 to 4.7.2 (#1678) 2021-11-23 01:54:26 +00:00
5e997f5a3e Merge branch 'release/1.4.2' into develop 2021-11-21 13:31:56 +01:00
601d573283 Merge branch 'release/1.4.2' 2021-11-21 13:31:51 +01:00
6ae6ca7fbb Version 1.4.2 2021-11-21 13:31:45 +01:00
c3d38afc3d New Crowdin updates (#1658) 2021-11-21 13:23:43 +01:00
4e19964249 Make admin messages dissmisable (#1661) 2021-11-21 09:02:12 +01:00
a6c0efcb81 Fix empty student list in LoginStudentSelect view (#1668) 2021-11-21 07:47:23 +00:00
fcc71c0d5f Add ads limit (#1662) 2021-11-21 08:34:28 +01:00
a59d10b6c1 Disable personalized ads in single support advert (#1665) 2021-11-20 16:46:14 +01:00
a48e4eb4ee Probably fix snackbar crash in grade statistics view (#1663) 2021-11-20 16:42:21 +01:00
2a3668bb18 Fix nul login data in login symbol view (#1664) 2021-11-20 16:41:12 +01:00
804d0d9113 Add multiline to support ad preference (#1651) 2021-11-18 20:23:09 +01:00
88b893e6c0 Fix upcoming lesson notifications on Android 12 (#1650) 2021-11-18 20:22:15 +01:00
2874a7495e Add Czech and Slovak README (#1631) 2021-11-18 19:38:51 +01:00
40d8f7a93d German readme version (#1629) 2021-11-18 16:31:59 +01:00
84cd51205f Bump appcompat from 1.4.0-rc01 to 1.4.0 (#1654) 2021-11-18 01:02:12 +00:00
bac1832f27 Bump mockk from 1.12.0 to 1.12.1 (#1653) 2021-11-18 00:40:59 +00:00
8bf1e22407 Bump flow-preferences from 1.5.0 to 1.6.0 (#1657) 2021-11-18 00:40:38 +00:00
e9f43f925c Bump constraintlayout from 2.1.1 to 2.1.2 (#1656) 2021-11-18 00:37:26 +00:00
aa632edf5c Bump fragment-ktx from 1.4.0-rc01 to 1.4.0 (#1655) 2021-11-18 00:36:18 +00:00
57315d75c6 Bump work_manager from 2.7.0 to 2.7.1 (#1652) 2021-11-18 00:36:00 +00:00
4552bc85b0 Bump kotlin_version from 1.5.31 to 1.6.0 (#1635) 2021-11-18 01:34:55 +01:00
6b7795118c Merge branch 'release/1.4.1' into develop 2021-11-16 23:29:22 +01:00
1960782d8e Merge branch 'release/1.4.1' 2021-11-16 23:29:17 +01:00
8836be3766 Version 1.4.1 2021-11-16 23:29:12 +01:00
8697993149 Add missing env for google play build (#1647) 2021-11-16 23:28:03 +01:00
b88c7eb4e4 Merge branch 'release/1.4.0' into develop 2021-11-16 22:49:58 +01:00
9066bce0d5 Merge branch 'release/1.4.0' 2021-11-16 22:49:53 +01:00
f15b90782a Version 1.4.0 2021-11-16 22:40:30 +01:00
0642bf7d73 New Crowdin updates (#1646) 2021-11-16 22:38:53 +01:00
981d6d559c Login improvements (#1645) 2021-11-16 21:05:00 +00:00
39327ff3ea School and teachers UI fixes (#1644) 2021-11-16 21:45:14 +01:00
b098ac029b Fix displaying errors in GradeDetailsPresenter (#1600) 2021-11-16 20:42:06 +00:00
7e0e2fbb67 Fix saved state in main and splash activity (#1633) 2021-11-16 18:13:10 +01:00
8a181c747c Remove deprecated usage of LifecycleObserver (#1641) 2021-11-16 00:38:52 +01:00
68fdb167c2 Sort items in homework and grade tiles on the dashboard (#1634) 2021-11-15 22:35:01 +01:00
17563d1a4b Bump hianalytics from 6.3.0.302 to 6.3.0.303 (#1636) 2021-11-15 13:56:39 +00:00
370881104e Bump hilt_version from 2.40 to 2.40.1 (#1637) 2021-11-15 13:56:03 +00:00
62b1b18326 Bump kotlinx-serialization-json from 1.3.0 to 1.3.1 (#1638) 2021-11-15 13:55:45 +00:00
214e43bd4b Bump robolectric from 4.6.1 to 4.7 (#1639) 2021-11-15 13:55:18 +00:00
358e0850ad Bump appcompat from 1.4.0-beta01 to 1.4.0-rc01 (#1640) 2021-11-15 13:40:51 +00:00
c183428107 Prevent changing the current day by accident when excusing absences (#1599) 2021-11-13 19:56:17 +01:00
6de937703a Fix admin messages caching (#1632) 2021-11-13 19:50:26 +01:00
10cb2b70f1 New Crowdin updates (#1630) 2021-11-13 10:36:19 +01:00
9230db3f99 Do not show student's name in notifications if there's only one student (#1609) 2021-11-13 10:06:59 +01:00
66e58ab74e Bump activity-ktx from 1.3.1 to 1.4.0 (#1620) 2021-11-13 03:15:14 +00:00
99b7af64c0 Bump lifecycle-livedata-ktx from 2.3.1 to 2.4.0 (#1618) 2021-11-13 02:25:38 +00:00
4295dd6246 New Crowdin updates (#1566) 2021-11-11 15:56:56 +01:00
fb2d92c749 Fix homework sync (#1627) 2021-11-11 15:52:46 +01:00
07b1969a35 Bump core-ktx from 1.6.0 to 1.7.0 (#1622) 2021-11-11 14:33:01 +00:00
886403bf1e Bump annotation from 1.2.0 to 1.3.0 (#1628) 2021-11-11 14:32:19 +00:00
e8b21c1429 Bump coil from 1.3.2 to 1.4.0 (#1573) 2021-11-11 14:32:04 +00:00
007d62e61d Update project to Android SDK 31 (#1570) 2021-11-11 15:23:20 +01:00
f88d44f0ec Add timetable changes, attendance notifications and refactor notification deeplinks (#1547) 2021-11-06 22:21:34 +01:00
4401df6203 Migrate from ViewPager to ViewPager2 (#1601) 2021-11-06 19:07:26 +01:00
e6f23ab35b Add support for user ca in debug flavor(#1624) 2021-11-04 03:09:47 +01:00
eea20ced57 Notifications settings reorganize and strings update (#1616) 2021-11-04 03:06:54 +01:00
b7134221cb Bump hilt_version from 2.39.1 to 2.40 (#1617) 2021-11-01 17:05:57 +00:00
8be605629a Bump firebase-crashlytics-gradle from 2.7.1 to 2.8.0 (#1623) 2021-11-01 16:56:18 +00:00
1a3d580116 Bump firebase-bom from 28.4.2 to 29.0.0 (#1619) 2021-11-01 16:54:43 +00:00
a62ed54d07 Bump hianalytics from 6.3.0.301 to 6.3.0.302 (#1621) 2021-11-01 16:54:10 +00:00
36a570eeb0 Allow selecting text in error dialog (#1615) 2021-11-01 01:46:23 +01:00
8ed8b5a33c Error messages content wrap in error dialog (#1577) 2021-10-31 20:28:01 +01:00
26c749c219 Fix about header layout to support long app names (for DEV builds) (#1602)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-10-29 20:30:27 +02:00
1d910f8d66 Fix excuse button showing up despite no lessons available to excuse (#1607)
This was happening when there was an unexcused lesson that you excused until the teacher sent a response (accepted or denied it)
2021-10-27 10:07:04 +02:00
de11644e9b Bump agconnect-crash from 1.6.1.200 to 1.6.1.300 (#1605) 2021-10-26 09:53:16 +00:00
621db49fbf Bump agcp from 1.6.1.200 to 1.6.1.300 (#1606) 2021-10-26 09:52:55 +00:00
b593795844 Bump about_libraries from 8.9.3 to 8.9.4 (#1604) 2021-10-26 09:51:36 +00:00
0f800b61f6 Allow expanding multiple subject' grades at once (#1584) 2021-10-24 01:23:36 +02:00
94fd303f8e Add single support advert (#1484) 2021-10-21 10:51:00 +02:00
09a134d442 Fix last sync date to save only successful sync (#1595) 2021-10-21 10:47:37 +02:00
58ea2c530e Bump hianalytics from 6.3.0.300 to 6.3.0.301 (#1593) 2021-10-19 06:36:46 +00:00
84e4167dbd Mi Band notification improvements (#1579) 2021-10-18 00:11:46 +02:00
54e9ea6478 Use FloatingActionButton.{show,hide} instead of using setVisibility (#1591) 2021-10-16 11:17:00 +02:00
4c8d9c8f7f Fix infinite refresh when admin messages list is empty (#1587) 2021-10-14 16:25:09 +02:00
e7550f7a43 Bump gradle from 7.0.2 to 7.0.3 (#1586) 2021-10-14 00:10:22 +00:00
ac86737050 Fix NPE in SyncPresenter (#1582) 2021-10-14 01:44:34 +02:00
e3122127c0 Add admin messages (#1553) 2021-10-13 23:58:24 +02:00
d6918077bf Set upcoming lesson notification visibility to public (#1581) 2021-10-13 21:47:03 +02:00
9d0366d010 Bump firebase-bom from 28.4.1 to 28.4.2 (#1574) 2021-10-11 15:44:19 +00:00
3d0cd11ba4 Bump Treessence from 1.0.4 to 1.0.5 (#1575) 2021-10-11 15:44:03 +00:00
64dbbd54b4 Bump hianalytics from 6.2.0.301 to 6.3.0.300 (#1576) 2021-10-11 15:43:29 +00:00
539be586ce Fix text color of time left indicator on dashboard timetable card (#1572) 2021-10-11 14:39:54 +02:00
a240fd5d5f Add build timestamp as build config field (#1567) 2021-10-09 18:37:27 +02:00
4e69cfe23c Change text when there are no lessons today and tomorrow in dashboard (#1571) 2021-10-09 15:36:22 +00:00
2ab0a57a41 Separate calculated average settings (#1558) 2021-10-09 01:55:00 +02:00
ebf9e741c2 Fix homework last item padding (#1568) 2021-10-09 01:04:04 +02:00
e8075e30e4 Add "add homework" feature (#1564) 2021-10-08 11:19:49 +02:00
1839d7cb8f Migrate from moshi to kotlinx serialization (#1557) 2021-10-04 17:13:31 +02:00
2d84b0775a Bump hilt_version from 2.38.1 to 2.39.1 (#1561) 2021-10-04 14:51:31 +00:00
426379ec17 Bump about_libraries from 8.9.1 to 8.9.3 (#1560) 2021-10-04 14:45:09 +00:00
8315759c83 Bump agcp from 1.6.0.300 to 1.6.1.200 (#1562) 2021-10-04 14:44:15 +00:00
04393e60bb Bump agconnect-crash from 1.6.0.300 to 1.6.1.200 (#1563) 2021-10-04 14:43:46 +00:00
031a17ea50 Change text to bold in notifications center (#1546) 2021-10-04 16:35:37 +02:00
60501fcd72 Set buildTimestamp through manifest meta (#1556) 2021-10-03 14:13:42 +02:00
8e607d48f7 Add coroutines scope to presenter (#1554) 2021-10-03 10:36:17 +02:00
e02d93f979 Add Czech and Slovak listings (#1555) 2021-10-03 01:07:45 +02:00
76514e2d72 Merge branch 'release/1.3.0' into develop 2021-09-28 23:26:22 +02:00
689012131f Merge branch 'release/1.3.0' 2021-09-28 23:26:18 +02:00
6cdcf92782 Version 1.3.0 2021-09-28 23:26:10 +02:00
9c8bcbfdd3 New Crowdin updates (#1544) 2021-09-28 21:11:59 +00:00
0b83a66b85 Remove disappearing teachers workaround from timetable repository (#1545) 2021-09-28 23:10:11 +02:00
9711cc868c New Crowdin updates (#1522) 2021-09-28 22:42:06 +02:00
f8cb7599e6 Add missing auto refresh to recipients, subjects and teachers (#1540) 2021-09-28 22:40:43 +02:00
7636618e23 Update License (#1542) 2021-09-28 21:55:40 +02:00
5bc54c12f1 Add option to make upcoming lesson notification not persistent (#1537) 2021-09-28 11:48:25 +02:00
e10e530dee Remove seconds from timetable timer (#1539) 2021-09-27 23:03:59 +02:00
d69118b085 Add notifications center (#1524) 2021-09-27 20:58:25 +02:00
dc90549b9d Fix hiding last element in messages (#1538) 2021-09-27 17:56:43 +02:00
b552dbc904 Bump constraintlayout from 2.1.0 to 2.1.1 (#1535) 2021-09-27 15:56:11 +00:00
a6a1678b47 Bump core from 1.10.1 to 1.10.2 (#1536) 2021-09-27 15:51:06 +00:00
7a46ef5f19 Add calculated average help dialog (#1379)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-09-25 17:19:21 +02:00
f9e0f7b390 Don't stop loading the timetable when error occurs in upcoming lessons notification scheduling (#1532) 2021-09-25 15:18:40 +02:00
9211baf7ec Add notification piggyback (#1503) 2021-09-25 14:02:38 +02:00
de6131f4f5 Add transparency to lucky number widget (#1530) 2021-09-25 13:46:35 +02:00
2cb11e443c Mark teacher with yellow when new and old are the same (#1529) 2021-09-25 13:46:11 +02:00
a43ffcdef4 Display bad credentials error in the message box above login form (#1525) 2021-09-24 21:02:51 +02:00
6615e68430 Bump kotlin_version from 1.5.30 to 1.5.31 (#1528) 2021-09-22 09:25:54 +02:00
36daa7ccc1 Always include all language resources in app bundle (#1527) 2021-09-22 09:25:16 +02:00
6e5481f345 Upgrade Gradle Play Publisher to 3.6.0 (#1526) 2021-09-20 11:38:13 +02:00
ba1c14ca0e Merge branch 'release/1.2.3' into develop 2021-09-16 12:01:58 +02:00
c69bb2ef71 Merge branch 'release/1.2.3' 2021-09-16 12:01:54 +02:00
9cb4754132 Version 1.2.3 2021-09-16 12:01:49 +02:00
5ba8289c87 Display info in timetable as-is when lesson has change flag (#1521) 2021-09-16 11:59:23 +02:00
258782c648 New Crowdin updates (#1482) 2021-09-16 11:30:05 +02:00
c568bc1515 Fix ghost account after logout not current student (#1518) 2021-09-16 11:29:11 +02:00
da668f93cf Fix bugs in dashboard (#1517) 2021-09-16 11:24:52 +02:00
037dbd792f Add conference dialog (#1519) 2021-09-16 10:51:38 +02:00
7ec7afed87 Bump firebase-bom from 28.4.0 to 28.4.1 (#1520) 2021-09-16 08:22:06 +00:00
bea50e6db5 Merge branch 'release/1.2.2' into develop 2021-09-13 14:53:38 +02:00
6a00e75816 Merge branch 'release/1.2.2' 2021-09-13 14:53:32 +02:00
957adaf6ee Version 1.2.2 2021-09-13 14:53:27 +02:00
827fb33eeb Fix login process after was interrupted (#1505) 2021-09-13 14:36:31 +02:00
19c96ee83f Unlock sunday in navigation datepicker (#1506) 2021-09-13 14:19:46 +02:00
5a7f52c773 Update help email pre-filled content (#1507) 2021-09-13 14:19:24 +02:00
dddeff802f Fix date picker crash after saved state (#1502) 2021-09-12 17:29:46 +02:00
91f6310892 Restore lucky number in more view (#1504) 2021-09-11 19:43:05 +02:00
0389642543 Fix empty list on excuse submit (#1501) 2021-09-11 19:40:09 +02:00
8528e0beff Fix crash in school info when dialer is unavailable (#1500) 2021-09-10 09:49:22 +00:00
e665a8f18b Fix error view in attendance summary (#1492) 2021-09-10 00:48:29 +02:00
6d5acbad2c Fix overlapping error view (#1493) 2021-09-10 00:36:44 +02:00
7217d0f753 Fix NPE in timetable dashboard tile (#1498) 2021-09-10 00:27:48 +02:00
16a5d88dfb Fix overlapping shadow in dashboard (#1494) 2021-09-10 00:25:23 +02:00
646a46727f Update material chips input (#1495) 2021-09-08 09:13:52 +02:00
f5e9197f98 Bump work_manager from 2.5.0 to 2.6.0 (#1478) 2021-09-06 23:38:10 +00:00
b47f26684b Change AppGallery deploy format to aab (#1483) 2021-09-06 03:27:54 +02:00
3a03b5f1c6 Merge branch 'release/1.2.1' into develop 2021-09-05 23:29:30 +02:00
3d0dcead50 Merge branch 'release/1.2.1' 2021-09-05 23:29:23 +02:00
b64b41c11c Version 1.2.1 2021-09-05 23:29:15 +02:00
77c5330f91 Dashboard fixes (#1463) 2021-09-05 23:24:03 +02:00
2b55ec02ff New translations strings.xml (Polish) (#1474) 2021-09-05 23:06:44 +02:00
49ebae6e63 Fix overlaping empty and error view in grade statistics (#1475)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-09-05 19:59:03 +00:00
44a9db48a6 Bump hianalytics from 6.2.0.300 to 6.2.0.301 (#1476) 2021-09-05 18:17:18 +00:00
0008a72be1 Bump kotlinx-coroutines-test from 1.5.1 to 1.5.2 (#1477) 2021-09-05 18:10:22 +00:00
a43acaaa07 Bump kotlinx-coroutines-android from 1.5.1 to 1.5.2 (#1479) 2021-09-05 18:10:05 +00:00
e6c9abb4e5 Bump core from 1.10.0 to 1.10.1 (#1480) 2021-09-05 18:09:42 +00:00
3b9451184c Fix preview of second student guardian when first guardian is null (#1473) 2021-09-05 03:15:40 +02:00
45d1727dbe Add missing school announcement dialog (#1470) 2021-09-04 15:54:37 +02:00
8d7b611c44 Fix showing error view in timetable (#1472) 2021-09-04 15:54:05 +02:00
c3adb9b6d6 Bump agp to 7.0.2 (#1469) 2021-09-03 22:54:29 +02:00
d87283eb31 Fix opening twitter link from about on android 11 (#1460) 2021-08-30 00:20:13 +02:00
d139c22782 Bump hianalytics from 6.1.1.300 to 6.2.0.300 (#1457) 2021-08-29 19:37:18 +00:00
e557021ad9 Bump huawei-publish-gradle-plugin from 1.2.4 to 1.3.0 (#1458) 2021-08-29 19:37:01 +00:00
37af5de25c Merge branch 'release/1.2.0' into develop 2021-08-29 21:08:23 +02:00
db6c84775b Merge branch 'release/1.2.0' 2021-08-29 21:08:18 +02:00
72d8b4aa84 Version 1.2.0 2021-08-29 21:08:08 +02:00
170b7c4379 New Crowdin updates (#1459) 2021-08-29 21:06:33 +02:00
79e9e1a780 New Crowdin updates (#1321) 2021-08-29 20:01:36 +02:00
98dcc62bb7 Add excuse function to "not excusable" account (#1429) 2021-08-29 19:47:14 +02:00
ea0fb00bde Fix crash on opening date pickers during holidays (#1456) 2021-08-29 19:31:28 +02:00
4aa6b0b995 Hide keyboard on opening login host dropdown (#1455) 2021-08-29 19:00:30 +02:00
57d11e825b Update readBy and unreadBy fields during message list fetch (#1452) 2021-08-29 15:40:28 +02:00
2f43b6e552 Change display name for MRmlik12 (#1451) 2021-08-29 14:08:48 +02:00
765f8a2d1f Add in app review (#1435) 2021-08-29 00:43:58 +02:00
04c727a0c8 Exams and homework notification fixes (#1292) 2021-08-29 00:41:58 +02:00
55518cb044 Add missing dashboard item in default view settings (#1450) 2021-08-28 21:43:10 +02:00
cebd1aa75d Remove lithuanian lang (#1449) 2021-08-28 12:14:01 +02:00
4a38a0be70 Add change password snackbar (#1336) 2021-08-26 17:35:41 +00:00
b4b9d91ea6 Update dependencies (#1448) 2021-08-25 20:49:44 +02:00
a6a2bcff3b Remove Zachowanie from all count of subjects (#1447) 2021-08-24 19:51:08 +02:00
2979d8b62a Show information when the recipient has read the message (#1430) 2021-08-23 16:16:41 +00:00
aba2068a84 New timetable widget design (#1384) 2021-08-23 16:02:21 +00:00
076948a680 Bump gradle from 7.0.0 to 7.0.1 (#1445) 2021-08-23 13:53:04 +00:00
1cfabe43a5 Add captions for averages from how many items have been counted (#1437) 2021-08-23 15:48:48 +02:00
02b87c8c6a Bump firebase-bom from 28.3.1 to 28.4.0 (#1446) 2021-08-23 13:42:20 +00:00
eb94e06d54 Fix buggy timers in timetable (#1428)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-08-22 16:33:12 +02:00
d3b3939d26 Bump timber from 4.7.1 to 5.0.1 (#1440) 2021-08-17 13:44:06 +00:00
9c5d2fbf84 Bump google-services from 4.3.9 to 4.3.10 (#1439) 2021-08-17 13:32:48 +00:00
428e40d7fe Bump hianalytics from 6.1.0.300 to 6.1.1.300 (#1441) 2021-08-17 13:32:34 +00:00
9c819835ca Add last sync date in sync settings (#1436) 2021-08-15 13:59:32 +00:00
626169de11 Add drag and drop to dashboard tiles (#1415) 2021-08-10 11:55:51 +02:00
72ef5f428e Bump firebase-bom from 28.3.0 to 28.3.1 (#1431) 2021-08-09 13:55:03 +00:00
4ae3f7b016 Bump google-services from 4.3.8 to 4.3.9 (#1432) 2021-08-09 13:54:48 +00:00
7c94837af0 Bump coil from 1.3.1 to 1.3.2 (#1433) 2021-08-09 13:54:31 +00:00
2a91346155 Bump activity-ktx from 1.3.0 to 1.3.1 (#1434) 2021-08-09 13:53:54 +00:00
ec6d18968f Fix filter search bug (#1427)
* Fix filter search bug

* refractor
2021-08-07 10:27:51 +02:00
b61e63249c Add messages sorting (#1262) 2021-08-04 15:16:54 +02:00
d73aa605f9 Change dashboard no data strings (#1426) 2021-08-03 18:55:20 +02:00
14f4808434 Add student nick-or-name to notification summary (#1425) 2021-08-03 15:48:11 +02:00
2bc6d7ad0d Bump gradle from 4.2.2 to 7.0.0 (#1419) 2021-08-02 16:28:12 +00:00
888052cd9c Bump agcp from 1.5.3.200 to 1.6.0.300 (#1424) 2021-08-02 15:18:29 +00:00
bdc2281fdc Bump agconnect-crash from 1.5.3.200 to 1.6.0.300 (#1423) 2021-08-02 15:18:18 +00:00
d01edc2312 Bump activity-ktx from 1.2.4 to 1.3.0 (#1422) 2021-08-02 15:17:05 +00:00
484a3aa731 Bump chucker from 3.5.1 to 3.5.2 (#1417) 2021-08-02 13:26:33 +00:00
51be23470f Bump hilt_version from 2.38 to 2.38.1 (#1418) 2021-08-02 13:25:19 +00:00
19495ffce9 Bump constraintlayout from 2.1.0-beta02 to 2.1.0 (#1420) 2021-08-02 13:24:31 +00:00
bd766d33db Bump coil from 1.3.0 to 1.3.1 (#1421) 2021-08-02 13:23:25 +00:00
ff8b3f8837 Send mutltiple notifications instead of summary notification (#1365) 2021-08-01 13:19:46 +02:00
e678e6d7f9 Fix margin and attedance destination (#1414) 2021-07-31 20:19:05 +02:00
f6f3447f1d Fix sorting notes in loading state (#1413) 2021-07-31 18:08:35 +02:00
e1c1f305c4 Add draft message (#1306) 2021-07-31 18:00:22 +02:00
c8c9001277 Add twitter page link to about fragment (#1411) 2021-07-30 19:13:06 +02:00
3422951e47 Add dashboard (#1267) 2021-07-30 18:49:19 +02:00
3278c11cce Bump hilt_version from 2.37 to 2.38 (#1405) 2021-07-27 08:39:37 +00:00
e00dea51f1 Bump appcompat from 1.3.0 to 1.3.1 (#1409) 2021-07-26 19:55:08 +00:00
5bf411039d Bump fragment-ktx from 1.3.5 to 1.3.6 (#1404) 2021-07-26 19:54:50 +00:00
62ca394c9a Bump appcompat-resources from 1.3.0 to 1.3.1 (#1403) 2021-07-26 19:48:14 +00:00
255b89bbb3 Bump about_libraries from 8.9.0 to 8.9.1 (#1406) 2021-07-26 19:42:25 +00:00
f7987f4b29 Bump chucker from 3.5.0 to 3.5.1 (#1407) 2021-07-26 19:42:11 +00:00
0b583439dd Bump firebase-bom from 28.2.1 to 28.3.0 (#1408) 2021-07-26 19:41:55 +00:00
ca481dc6f5 Bump activity-ktx from 1.2.3 to 1.2.4 (#1410) 2021-07-26 19:41:28 +00:00
f6a92a4cc3 Bump hianalytics from 6.0.0.301 to 6.1.0.300 (#1402) 2021-07-21 07:21:49 +00:00
55a6219a42 Bump kotlin_version from 1.5.20 to 1.5.21 (#1401) 2021-07-21 07:21:25 +00:00
ad653f10df Bump firebase-bom from 28.2.0 to 28.2.1 (#1400) 2021-07-12 22:44:06 +02:00
7a780486f6 Bump kotlinx-coroutines-android from 1.5.0 to 1.5.1-native-mt (#1395) 2021-07-12 19:54:35 +00:00
c01b0eff9d Bump agconnect-crash from 1.5.2.300 to 1.5.3.200 (#1399) 2021-07-12 19:53:03 +00:00
3a4614e2b7 Bump robolectric from 4.5.1 to 4.6.1 (#1392) 2021-07-12 19:52:39 +00:00
44ee8859b1 Bump junit from 1.1.2 to 1.1.3 (#1389) 2021-07-12 19:52:25 +00:00
3dd7878ae5 Bump mockk from 1.11.0 to 1.12.0 (#1387) 2021-07-12 19:47:16 +00:00
0305a005ab Bump agcp from 1.5.2.300 to 1.5.3.200 (#1398) 2021-07-12 19:47:04 +00:00
2229f0e3e9 Bump coil from 1.2.2 to 1.3.0 (#1397) 2021-07-12 19:46:13 +00:00
d9aab7afa2 Bump runner from 1.3.0 to 1.4.0 (#1386) 2021-07-12 19:45:36 +00:00
0558f30646 Bump material from 1.3.0 to 1.4.0 (#1390) 2021-07-12 19:44:04 +00:00
238f257c6c Bump hianalytics from 5.3.1.300 to 6.0.0.301 (#1394) 2021-07-12 19:43:46 +00:00
40372e7cea Bump core-ktx from 1.5.0 to 1.6.0 (#1388) 2021-07-12 19:40:32 +00:00
b65a060fca Bump chucker from 3.4.0 to 3.5.0 (#1385) 2021-07-12 19:40:15 +00:00
c1ed748188 Bump gradle from 4.2.1 to 4.2.2 (#1393) 2021-07-12 19:39:19 +00:00
b911521ccc Bump core from 1.3.0 to 1.4.0 (#1391) 2021-07-12 19:39:02 +00:00
b046679542 Bump kotlin_version from 1.5.10 to 1.5.20 (#1381) 2021-06-27 20:09:46 +00:00
3decc95a20 Bump firebase-crashlytics-gradle from 2.7.0 to 2.7.1 (#1382) 2021-06-27 19:37:24 +00:00
c301198006 Bump firebase-bom from 28.1.0 to 28.2.0 (#1383) 2021-06-27 19:33:51 +00:00
190a5f2067 Bump fragment-ktx from 1.3.4 to 1.3.5 (#1380) 2021-06-22 20:37:21 +00:00
27e1a07eec Add notifications debug screen (#1370) 2021-06-21 10:29:04 +02:00
64feae9f1c Bump hilt_version from 2.36 to 2.37 (#1376) 2021-06-12 12:31:59 +00:00
085158721e Bump sonarqube-gradle-plugin from 3.2.0 to 3.3 (#1378) 2021-06-11 11:45:25 +00:00
44888b048d Add "I forgot my password" button in upper bar (#1375) 2021-06-11 09:53:11 +02:00
b9a12e46bf Upgrade gradle to 6.9 (#1371) 2021-06-09 09:46:16 +02:00
2fe5e62e72 Bump recyclerview from 1.2.0 to 1.2.1 (#1366) 2021-06-08 10:02:09 +00:00
6305e1a908 Bump firebase-bom from 28.0.1 to 28.1.0 (#1367) 2021-06-08 10:01:12 +00:00
6bf7a2e26c Bump firebase-crashlytics-gradle from 2.6.1 to 2.7.0 (#1368) 2021-06-08 10:00:27 +00:00
34487175d8 Bump coil from 1.2.1 to 1.2.2 (#1369) 2021-06-08 10:00:10 +00:00
f02db914bf Fix treessence upgrade (#1361) 2021-06-02 12:45:16 +02:00
18e0a59e2b Bump hilt_version from 2.35.1 to 2.36 (#1362) 2021-06-02 09:12:01 +00:00
e4371af284 Bump about_libraries from 8.8.5 to 8.9.0 (#1363) 2021-06-02 08:21:34 +00:00
44d5f69de1 Remove jcenter repository and unused code from gradle config (#1360) 2021-05-28 10:57:25 +02:00
d13e0adb00 Bump appcompat from 1.2.0 to 1.3.0 (#1357) 2021-05-28 07:09:47 +00:00
e60e573ac0 Bump appcompat-resources from 1.2.0 to 1.3.0 (#1359) 2021-05-28 07:01:57 +00:00
91dbc9e3d7 Bump core-ktx from 1.3.2 to 1.5.0 (#1356) 2021-05-28 06:15:18 +00:00
8ccbea2c21 Bump fragment-ktx from 1.3.3 to 1.3.4 (#1358) 2021-05-25 11:10:52 +00:00
211cb5e4f2 Merge branch 'hotfix/messages-send' into develop 2021-05-21 14:09:45 +02:00
b60c59216d Merge branch 'hotfix/messages-send' 2021-05-21 14:08:00 +02:00
d20f3180cf Version 1.1.6 2021-05-21 14:03:13 +02:00
17761af9d6 Bump sdk 2021-05-21 12:35:57 +02:00
067817bace Bump huawei-publish-gradle-plugin from 1.2.2 to 1.2.4 (#1314)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
(cherry picked from commit 022a4d1ea2)
2021-05-21 12:30:36 +02:00
51800d91b2 Bump gradle from 4.1.3 to 4.2.1 (#1339) 2021-05-19 22:40:21 +00:00
3640c4f249 Update dependabot config (#1353) 2021-05-18 09:40:08 +00:00
05aa38b591 Add arrows to student family list items (#1338) 2021-05-17 15:35:36 +02:00
983dcd8656 Add conferences and announcements notifications (#1330) 2021-05-17 15:19:39 +02:00
59cf4fb222 Bump kotlinx-coroutines-android from 1.5.0-RC to 1.5.0 (#1348) 2021-05-17 11:33:27 +00:00
d6ebcc97e3 Bump firebase-crashlytics-gradle from 2.5.2 to 2.6.1 (#1342) 2021-05-17 11:32:03 +00:00
047579c394 Bump agcp from 1.5.2.201 to 1.5.2.300 (#1349) 2021-05-17 11:24:31 +00:00
a90fd4b776 Bump agconnect-crash from 1.5.2.201 to 1.5.2.300 (#1350) 2021-05-17 11:21:48 +00:00
03d3a5db11 Bump firebase-bom from 27.1.0 to 28.0.1 (#1341) 2021-05-17 11:21:31 +00:00
bf5e61490d Bump google-services from 4.3.5 to 4.3.8 (#1344) 2021-05-17 11:18:08 +00:00
d87fa589a8 Bump hianalytics from 5.3.0.300 to 5.3.1.300 (#1332) 2021-05-10 11:50:20 +00:00
1fff1c2b14 Bump kotlin_version from 1.4.32 to 1.5.0 (#1310) 2021-05-06 11:02:08 +00:00
58d66b6e70 Bump work_hilt from 1.0.0-beta01 to 1.0.0 (#1329) 2021-05-05 22:23:31 +00:00
202d13d509 Bump activity-ktx from 1.2.2 to 1.2.3 (#1328) 2021-05-05 22:21:48 +00:00
db808de06c Fix no info text position in school announcements (#1327) 2021-05-05 20:18:16 +02:00
d8dae09f39 Add notification icons (#1276)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-05-03 18:24:54 +02:00
32640e0796 Change mobile devices item order (#1324)
* Change more items order

* Resolve conflicts
2021-05-03 18:23:09 +02:00
4e80441167 Add school announcements (#1323) 2021-05-03 17:24:01 +02:00
075cfb20b1 Fix missing snackbar in sync settings fragment (#1325) 2021-05-03 16:42:59 +02:00
56e4e9be5e Fix homework dialog attachments margin (#1322) 2021-05-02 21:56:41 +02:00
53c798ebdb Change titles in Student Info (#1121) 2021-05-02 14:09:42 +00:00
022a4d1ea2 Bump huawei-publish-gradle-plugin from 1.2.2 to 1.2.4 (#1314)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2021-05-02 13:49:28 +02:00
dfa25d8445 New Crowdin updates (#1268) 2021-05-02 12:53:53 +02:00
b2efe0d981 Probably fix list divider color (#1270)
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-05-02 12:33:27 +02:00
2a7f846d3f Bump hilt_version from 2.35 to 2.35.1 (#1313) 2021-04-30 14:05:08 +00:00
da5817d08a Bump sonarqube-gradle-plugin from 3.1.1 to 3.2.0 (#1315) 2021-04-30 13:59:46 +00:00
cacf2f651a Bump agcp from 1.5.1.300 to 1.5.2.201 (#1311) 2021-04-30 13:57:51 +00:00
605c816a32 Bump coil from 1.2.0 to 1.2.1 (#1312) 2021-04-30 13:57:35 +00:00
1587be2fa8 Bump hianalytics from 5.2.0.301 to 5.3.0.300 (#1319) 2021-04-30 13:53:54 +00:00
00b23ca20c Bump agconnect-crash from 1.5.1.300 to 1.5.2.201 (#1316) 2021-04-30 13:46:30 +00:00
34db20ab0c Upgrade to GitHub-native Dependabot (#1309) 2021-04-30 13:23:57 +00:00
0d271d925a Bump room from 2.3.0-rc01 to 2.3.0 (#1302) 2021-04-25 01:31:48 +02:00
b7da43a52a Bump hilt_version from 2.34.1-beta to 2.35 (#1303) 2021-04-24 12:57:55 +00:00
44af5d59fb Bump fragment-ktx from 1.3.2 to 1.3.3 (#1304) 2021-04-24 12:57:41 +00:00
bc776993a9 Bump firebase-bom from 27.0.0 to 27.1.0 (#1305) 2021-04-24 12:57:21 +00:00
9a19ce9ca4 Fix Homework dialog buttons layout (#1297) 2021-04-19 16:09:14 +00:00
6855296de4 Merge branch 'hotfix/all-year-average' into develop 2021-04-18 20:43:29 +02:00
800a31f160 Merge branch 'hotfix/all-year-average' 2021-04-18 20:40:02 +02:00
8b83b37b09 Version 1.1.5 2021-04-18 20:38:18 +02:00
43e95cfdc6 Fix all year average 2021-04-18 19:36:02 +02:00
ae2a697e01 Merge pull request #1295 from wulkanowy/rbo/update-workflow
Update github action workflow
2021-04-18 19:34:32 +02:00
b695c7f600 Bump hilt_version from 2.34-beta to 2.34.1-beta (#1293) 2021-04-17 20:45:38 +00:00
3a1a383383 Bump recyclerview from 1.1.0 to 1.2.0 (#1287) 2021-04-14 18:59:12 +00:00
97810d02ab Bump moshi from 1.11.0 to 1.12.0 (#1284) 2021-04-14 18:58:54 +00:00
30b337a364 Bump about_libraries from 8.8.4 to 8.8.5 (#1281) 2021-04-13 11:55:39 +00:00
8f6c847562 Bump agconnect-crash from 1.5.1.200 to 1.5.1.300 (#1283) 2021-04-13 11:44:01 +00:00
e5d54c95f3 Bump firebase-bom from 26.8.0 to 27.0.0 (#1285) 2021-04-13 11:43:09 +00:00
eb5ad81ec1 Bump agcp from 1.5.1.200 to 1.5.1.300 (#1286) 2021-04-13 11:42:48 +00:00
3aa9f0ca2f Bump coil from 1.1.1 to 1.2.0 (#1282) 2021-04-13 11:42:21 +00:00
8e587358aa Bump hilt_version from 2.33-beta to 2.34-beta (#1280) 2021-04-13 11:39:14 +00:00
4492f4a864 Dialogs adjustments to meet MD rules (#1227) 2021-04-12 20:06:28 +00:00
b453225941 Student info and Teachers screens unification (#1279) 2021-04-12 19:58:58 +00:00
13ccfda009 Migrate material date picker (#1277) 2021-04-12 21:43:52 +02:00
95ffb0a687 Ignore all throwable from WebView (#1275) 2021-04-08 10:41:49 +02:00
f131edf857 Add system settings shortcut (#1271) 2021-04-07 11:56:33 +00:00
bd2d26418a Cleanup github workflows (#1272) 2021-04-07 13:25:48 +02:00
aeb3b2a030 Display day header from website in timetable (#1269) 2021-04-05 15:07:29 +02:00
7bc5219d81 Add new notifications (#1243) 2021-04-04 14:15:07 +00:00
6cb4ea4b0f Drop support for android 4.x (#1232) 2021-04-03 09:56:07 +00:00
0bdd33ef4a Migrate to material components bottom navigation (#1244) 2021-04-03 11:46:36 +02:00
792de4cd3d Merge branch 'hotfix/fix-recovery-visibility' into develop 2021-04-01 22:40:33 +02:00
3f5fbbc71b Merge branch 'hotfix/fix-recovery-visibility' 2021-04-01 22:40:20 +02:00
206b40ce1b Change version in changelog 2021-04-01 22:38:35 +02:00
43c56b5534 Version 1.1.4 2021-04-01 22:36:51 +02:00
a1076539dc Fix content visibility in login recovery 2021-04-01 22:30:09 +02:00
3071e19584 Implement a toggleable setting to count an arithmetic average of grades when all weights are equal to zero (#1186) 2021-03-30 13:59:36 +02:00
f2130998ec Bump firebase-crashlytics-gradle from 2.5.1 to 2.5.2 (#1264) 2021-03-30 10:49:40 +00:00
8a5ca8c91f Bump firebase-bom from 26.7.0 to 26.8.0 (#1263) 2021-03-30 10:48:12 +00:00
fada13e2d3 Update issue templates (#1257) 2021-03-29 18:39:08 +02:00
6e19eb943d Add deploy to AppGallery github actions config (#1259) 2021-03-29 17:37:26 +02:00
c70fe3430c Merge branch 'release/1.1.3' into develop 2021-03-28 20:13:43 +02:00
3c48264539 Merge branch 'release/1.1.3' 2021-03-28 20:13:37 +02:00
539cf2207b Version 1.1.3 2021-03-28 20:13:32 +02:00
f0e897713c New Crowdin updates (#1233) 2021-03-28 19:52:38 +02:00
a448092008 Allow special login format in login form (#1258) 2021-03-28 19:46:56 +02:00
f5b46707ff Fixing README.md (#1255) 2021-03-28 15:56:44 +02:00
e6247d4428 Fix clearing no existing dialog fragment (#1242) 2021-03-28 08:18:07 +02:00
d0869b235a Use db student id to distinguish reporting units and recipients (#1254) 2021-03-27 13:43:25 +01:00
464900d95b Bump annotation from 1.1.0 to 1.2.0 (#1245) 2021-03-25 10:12:05 +00:00
368274239e Bump agconnect-crash from 1.5.0.300 to 1.5.1.200 (#1247) 2021-03-25 10:11:19 +00:00
ee33197494 Bump room from 2.3.0-beta03 to 2.3.0-rc01 (#1246) 2021-03-25 10:09:21 +00:00
d3ea743707 Bump kotlin_version from 1.4.31 to 1.4.32 (#1253) 2021-03-25 10:07:43 +00:00
976d4b8ce2 Bump fragment-ktx from 1.3.1 to 1.3.2 (#1248) 2021-03-25 11:05:14 +01:00
b77fc0d32a Bump activity-ktx from 1.2.1 to 1.2.2 (#1249) 2021-03-25 11:04:37 +01:00
bd3716609e Bump hianalytics from 5.2.0.300 to 5.2.0.301 (#1250) 2021-03-25 11:04:04 +01:00
5b87cc9009 Bump agcp from 1.5.0.300 to 1.5.1.200 (#1251) 2021-03-25 11:03:37 +01:00
4f7be8d2cb Bump lifecycle-livedata-ktx from 2.3.0 to 2.3.1 (#1252) 2021-03-25 11:02:39 +01:00
8733e7782f Fix colorPrimary and class name in widget account manager (#1241) 2021-03-21 22:37:34 +01:00
e03b0dfa01 Fix missing avatars in widgets (#1238) 2021-03-21 12:04:55 +01:00
efafd2094a Add dialog with info about dropping support for android 4 (#1221) 2021-03-20 14:01:17 +01:00
1560335749 Fix very rare crash in login recovery (#1231) 2021-03-20 13:27:47 +01:00
5bee155f1e Remove listenablefuture from dependencies (#1237) 2021-03-20 12:10:53 +00:00
c9dc9a323f Bump gradle from 4.1.2 to 4.1.3 (#1234) 2021-03-19 15:02:28 +00:00
87e7e00705 Remove firebase inappmessage dependency (#1235) 2021-03-19 15:57:12 +01:00
57681b35ea Bump mockk from 1.10.6 to 1.11.0 (#1229) 2021-03-17 22:58:17 +00:00
8fb09d7b7d Merge branch 'release/1.1.2' into develop 2021-03-16 12:59:00 +01:00
168f750863 Merge branch 'release/1.1.2' 2021-03-16 12:58:56 +01:00
3e1acbd3bf Version 1.1.2 2021-03-16 12:58:52 +01:00
21ef2adcf6 Disable optimization in r8 config and fix crash in grade fragment (#1226) 2021-03-16 11:49:17 +00:00
3f6159e976 Fix show error details button in additional lessons (#1225) 2021-03-16 12:47:51 +01:00
555b5ec112 Merge branch 'release/1.1.1' into develop 2021-03-16 00:43:39 +01:00
60a9bcae46 Merge branch 'release/1.1.1' 2021-03-16 00:43:33 +01:00
eeb1341c1f Version 1.1.1 2021-03-16 00:43:28 +01:00
c77b50d51b New Crowdin updates (#1204) 2021-03-16 00:30:28 +01:00
8644ce32d5 Fix semester switch when student have only one semester (#1215) 2021-03-15 23:58:50 +01:00
94506aca52 Add github actions config to deploy apk to App Center (#1220) 2021-03-15 18:18:08 +01:00
eee4e1f4b5 Fix empty view in attendance (#1217) 2021-03-15 00:33:40 +01:00
c1942d012f Maybe fix fragment commits after activity state is saved (#1216) 2021-03-13 20:15:12 +01:00
fe846b463a Update material chips input (#1214) 2021-03-13 20:14:36 +01:00
0ea2e68249 Fix and clean proguard/r8 file (#1213) 2021-03-13 20:14:10 +01:00
be0445b227 Change the absence request confirmation message string (#1212) 2021-03-13 20:13:57 +01:00
48249f3093 Update kotlin coroutines (#1211) 2021-03-13 20:13:48 +01:00
8d7110735d Ignore no current student during avatar loading (#1210) 2021-03-13 20:13:37 +01:00
94957850c3 Bump fragment-ktx from 1.3.0 to 1.3.1 (#1205) 2021-03-12 21:50:59 +00:00
fa2cfc8427 Bump room from 2.3.0-beta02 to 2.3.0-beta03 (#1207) 2021-03-12 21:33:30 +00:00
3d467c43ba Use new kotlin compiler backend (#1202) 2021-03-12 22:07:27 +01:00
b76032044d Bump activity-ktx from 1.2.0 to 1.2.1 (#1206) 2021-03-12 21:06:33 +00:00
495b84204c Bump work_hilt from 1.0.0-alpha03 to 1.0.0-beta01 (#1208) 2021-03-12 21:06:27 +00:00
ea4b299de6 Bump firebase-bom from 26.6.0 to 26.7.0 (#1209) 2021-03-12 12:39:01 +00:00
acb5e2afd4 Replace dash mark with no data string in SchoolFragment (#1203) 2021-03-09 17:49:24 +01:00
50863d6ac2 Merge branch 'release/1.1.0' into develop 2021-03-07 21:58:30 +01:00
e15eb03299 Merge branch 'release/1.1.0' 2021-03-07 21:58:23 +01:00
be48791d51 Version 1.1.0 2021-03-07 21:58:14 +01:00
c0e1a5b401 New Crowdin updates (#1167) 2021-03-07 20:48:29 +00:00
cb1b467a21 Add studzinskik to contributors (#1198) 2021-03-07 20:31:14 +00:00
f14346ff32 Fix duplicate items after running automatic and manual sync at the same time (#1197) 2021-03-07 20:47:18 +01:00
af8108a649 Add lucky number history (#1184) 2021-03-07 20:17:03 +01:00
5743928126 Fix notification and status bars colors (#1196) 2021-03-07 14:04:37 +00:00
388d37bf9c Fix date picker theme (#1194) 2021-03-07 13:41:54 +01:00
d572fc737f Fix typo (#1193) 2021-03-07 00:07:57 +01:00
47b0f1b527 Settings revamp (#1160) 2021-03-06 17:18:42 +00:00
1afa7ecf3c Fix OOM in grade statistics (#1192) 2021-03-06 16:50:06 +01:00
9139febbdf Migrate database migrations from androidTest to roboelectric (#1191) 2021-03-06 14:34:07 +00:00
2dd0b56333 Bump agconnect-crash from 1.5.0.200 to 1.5.0.300 (#1190) 2021-03-06 12:08:43 +00:00
3b970209a5 Fix grade fragment subtitle (#1185) 2021-03-06 13:01:41 +01:00
6f590eb194 Fix empty license dialogs (#1182) 2021-03-06 13:01:17 +01:00
b20b8fb243 Bump firebase-bom from 26.5.0 to 26.6.0 (#1189) 2021-03-06 11:23:16 +00:00
7e4a212951 Bump agcp from 1.5.0.200 to 1.5.0.300 (#1187) 2021-03-06 10:55:37 +00:00
6dfeed3a26 Fix API host key capitalisation for powiat krasnostawski (#1181) 2021-03-04 20:32:17 +00:00
06a27199ee Add early validation for special mail domains (#1000) (#1176) 2021-03-03 22:37:58 +01:00
76039e5eb9 Remove hardcoded strings (#1177) 2021-03-03 20:18:03 +01:00
6a4aaff8d6 Fix no system theme option in Czech and Slovak (#1178) 2021-03-03 19:16:46 +00:00
9e2985864a Add avatars (#1146) 2021-03-02 23:34:25 +00:00
412057b512 Remove deprecations (#1170) 2021-03-02 17:28:47 +01:00
963caadced Bump firebase-crashlytics-gradle from 2.5.0 to 2.5.1 (#1171) 2021-03-01 22:19:31 +00:00
8388a8a5fc Fix calling of binding outside lifecycle (#1169) 2021-03-01 21:57:47 +00:00
a801c8f8be Add exception ignoring to UpdateHelper when PendingIntent is duplicated (#1168) 2021-03-01 21:35:49 +00:00
9d8ad73e63 Bump hilt_version from 2.32-alpha to 2.33-beta (#1163)
* Bump hilt_version from 2.32-alpha to 2.33-beta

Bumps `hilt_version` from 2.32-alpha to 2.33-beta.

Updates `hilt-android-gradle-plugin` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Updates `hilt-android` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Updates `hilt-android-compiler` from 2.32-alpha to 2.33-beta
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* Add inject before super.onCreate() in activity

* Fix format

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Rafał Borcz <RafalBO99@outlook.com>
2021-02-27 22:49:50 +01:00
182f6c8a81 Bump kotlin_version from 1.4.30 to 1.4.31 (#1166) 2021-02-26 19:21:02 +00:00
1e4a3536cf Bump desugar_jdk_libs from 1.1.1 to 1.1.5 (#1164) 2021-02-26 18:50:58 +00:00
169a314664 Bump about_libraries from 8.8.2 to 8.8.3 (#1165) 2021-02-26 18:49:43 +00:00
904eed648b Bump hianalytics from 5.1.0.301 to 5.2.0.300 (#1161) 2021-02-24 23:00:00 +00:00
3bb94adece Bump room from 2.3.0-beta01 to 2.3.0-beta02 (#1158) 2021-02-22 23:07:37 +00:00
105b70fcad Add Daxxxis to contributors (#1156) 2021-02-18 21:25:46 +01:00
b4bf7c7589 Add Slovak to dialog (#1154) 2021-02-18 00:05:40 +01:00
ff425d6d2b Change background color of navigation and notification bars (#1120) 2021-02-18 00:05:27 +01:00
4fceb854b3 Bump activity-ktx from 1.1.0 to 1.2.0 (#1134) 2021-02-17 12:08:10 +00:00
3adac154b4 Bump firebase-crashlytics-gradle from 2.4.1 to 2.5.0 (#1147) 2021-02-17 11:55:27 +00:00
a320cf8f7c Bump fragment-ktx from 1.2.5 to 1.3.0 (#1148) 2021-02-17 11:39:26 +00:00
1ed0884dfd Bump hilt_version from 2.31.2-alpha to 2.32-alpha (#1133) 2021-02-17 11:38:51 +00:00
021e9726c6 Bump lifecycle-livedata-ktx from 2.2.0 to 2.3.0 (#1136) 2021-02-17 11:38:33 +00:00
3c438757e3 Bump firebase-bom from 26.4.0 to 26.5.0 (#1151) 2021-02-17 11:31:05 +00:00
99c4a65df5 Merge tag '1.0.1' into develop
Version 1.0.1
2021-02-16 12:46:54 +01:00
2c442fc87b Merge branch 'release/1.0.1' 2021-02-16 12:44:34 +01:00
44ba0d76de Version 1.0.1 2021-02-16 12:44:24 +01:00
17aa77ad41 New Crowdin updates (#1152) 2021-02-16 12:12:35 +01:00
c18302b812 Bump junit from 4.13.1 to 4.13.2 (#1150) 2021-02-14 12:14:28 +00:00
de8e9bde49 Bump mockk from 1.10.5 to 1.10.6 (#1149) 2021-02-14 12:13:21 +00:00
000cbd11a2 Fix EOF error in messages (#1145) 2021-02-13 20:39:52 +01:00
5e3b89636f Add checking vulcan average from both semesters (#1140) 2021-02-13 12:33:53 +01:00
dd085a14fa Revert "Bump fragment-ktx from 1.2.5 to 1.3.0 (#1138)" (#1144)
This reverts commit cac76857c4.
2021-02-13 10:58:01 +00:00
bfe558d887 Update README (#1143) 2021-02-12 19:14:45 +01:00
4841a0439d New Crowdin updates (#1131) 2021-02-12 19:07:36 +01:00
cac76857c4 Bump fragment-ktx from 1.2.5 to 1.3.0 (#1138) 2021-02-12 18:05:33 +00:00
6b8b7c9143 Bump material from 1.3.0-rc01 to 1.3.0 (#1137) 2021-02-12 10:12:35 +01:00
53584026dc Bump about_libraries from 8.7.0 to 8.8.2 (#1135) 2021-02-12 09:11:52 +00:00
7900ad913f Bump kotlin_version from 1.4.21 to 1.4.30 (#1139) 2021-02-11 12:20:45 +00:00
8ec844a8fe Merge branch 'release/1.0.0' into develop 2021-02-07 23:48:43 +01:00
19ff953ab2 Merge branch 'release/1.0.0' 2021-02-07 23:48:38 +01:00
e29c211cf2 Version 1.0.0 2021-02-07 23:48:32 +01:00
2492a9c204 Update screenshots (#1130) 2021-02-07 22:08:39 +00:00
61de1de532 New Crowdin updates (#1129) 2021-02-07 12:01:34 +00:00
b5862da776 Merge branch 'release/0.25.1' into develop 2021-02-06 16:54:26 +01:00
e0c802bf67 Merge branch 'release/0.25.1' 2021-02-06 16:54:22 +01:00
dcac138ff8 Version 0.25.1 2021-02-06 16:54:17 +01:00
23411a608f Fix nullable student guardians (#1128) 2021-02-06 16:19:50 +01:00
87facd2663 Add MRmlik12 to contributors (#1126) 2021-02-05 15:49:29 +00:00
bad0776cab Add final average grades calculation with modifiers (#1125) 2021-02-05 10:50:35 +01:00
a063aabc7c Ignore webview init exceptions (#1124) 2021-02-03 20:59:24 +01:00
1fdbdf34b9 Merge branch 'release/0.25.0' into develop 2021-02-02 00:47:40 +01:00
624fd71dbb Merge branch 'release/0.25.0' 2021-02-02 00:47:35 +01:00
dfa10883d3 Version 0.25.0 2021-02-02 00:47:30 +01:00
aff40df707 New Crowdin updates (#1095) 2021-02-02 00:25:27 +01:00
42f9594210 Fix empty message bug (#1122) 2021-02-02 00:11:34 +01:00
3e3a080b70 Add nick for student (#1119) 2021-02-01 23:58:44 +01:00
39534aeda4 Add dark mode to swipe refresh layout (#1118) 2021-02-01 18:13:11 +01:00
e39b053d2d Change timetable icon (#1115) 2021-02-01 13:15:36 +01:00
28fd7460cb Replace progressBar with CircularProgressIndicator (#1117) 2021-02-01 11:45:10 +01:00
82b207b03a Fix follow system language setting (#1113) 2021-01-31 22:38:30 +01:00
4984cb9b26 Update auto update priority policy (#1051) 2021-01-31 20:46:24 +00:00
e2ba265048 Add build date to version info (#1114) 2021-01-31 17:12:38 +01:00
d1cd497a23 Fix null data in Status.SUCCESS in emission from average provider (#1105) 2021-01-30 16:07:37 +01:00
dd5ce752da Update gradle and build tools (#1108) 2021-01-30 15:26:31 +01:00
e5e95e7dec Bump room from 2.3.0-alpha04 to 2.3.0-beta01 (#1112) 2021-01-30 14:22:08 +00:00
f5e4c63fed Bump about_libraries from 8.6.9 to 8.7.0 (#1111) 2021-01-30 14:18:28 +00:00
70d42bb864 Bump agcp from 1.4.2.301 to 1.5.0.200 (#1109) 2021-01-30 14:14:08 +00:00
82df5b9515 Bump agconnect-crash from 1.4.2.301 to 1.5.0.200 (#1110) 2021-01-30 14:13:35 +00:00
6568c4abf8 Bump hilt-work from 1.0.0-alpha02 to 1.0.0-alpha03 (#1099) 2021-01-29 21:24:30 +00:00
d79b1c9a58 Add account manager (#671) 2021-01-29 21:53:46 +01:00
26565b627a Bump work_manager from 2.4.0 to 2.5.0 (#1103) 2021-01-28 20:58:15 +00:00
c0a53cb90c Bump sonarqube-gradle-plugin from 3.1 to 3.1.1 (#1100) 2021-01-28 20:57:53 +00:00
2bcbac5ab3 Bump about_libraries from 8.6.7 to 8.6.9 (#1098) 2021-01-28 20:57:22 +00:00
5581fdcab8 Bump google-services from 4.3.4 to 4.3.5 (#1104) 2021-01-28 20:56:54 +00:00
6a8161cd98 Bump firebase-bom from 26.3.0 to 26.4.0 (#1102) 2021-01-28 20:26:38 +00:00
e0b067fadd Fix selected semester after change account (#1097) 2021-01-27 00:18:56 +01:00
f37ddfe00f Disable vibrations in data picker (#1093) 2021-01-24 20:01:18 +01:00
3a887f597b Bump hilt_version from 2.30.1-alpha to 2.31.2-alpha (#1094) 2021-01-24 16:52:16 +00:00
52d359827e Fix translations of month name in attendance summary (#1091) 2021-01-24 17:21:02 +01:00
a70ccbb0d0 Make strings in grade class stats translatable (#1092) 2021-01-24 17:20:26 +01:00
2b6386c522 Merge branch 'release/0.24.3' into develop 2021-01-21 14:24:45 +01:00
60ae14719d Merge branch 'release/0.24.3' 2021-01-21 14:24:41 +01:00
a4594b2853 Version 0.24.3 2021-01-21 14:14:39 +01:00
6578d2eb49 Merge branch 'release/0.24.2' into develop 2021-01-21 13:49:48 +01:00
e543c0aa2c Merge branch 'release/0.24.2' 2021-01-21 13:49:42 +01:00
17c80416fe Version 0.24.2 2021-01-21 13:49:35 +01:00
f2cb7f741b Merge branch 'release/0.24.1' into develop 2021-01-21 10:46:20 +01:00
51d9e9b9af Merge branch 'release/0.24.1' 2021-01-21 10:46:16 +01:00
b1e1b801b5 Version 0.24.1 2021-01-21 10:46:11 +01:00
04ff05c22a Fix google play deploy config (#1089) 2021-01-21 10:24:38 +01:00
81c9144448 Merge branch 'release/0.24.0' into develop 2021-01-20 18:29:24 +01:00
70d456a6dc Merge branch 'release/0.24.0' 2021-01-20 18:29:19 +01:00
b55c05aaed Version 0.24.0 2021-01-20 18:29:13 +01:00
01fd146c99 New Crowdin updates (#1088) 2021-01-20 18:03:18 +01:00
5d849b3ada Fix endless loading in grades (#1084) 2021-01-20 17:42:19 +01:00
1a4eaec47f Bump gradle from 4.1.1 to 4.1.2 (#1086) 2021-01-20 10:53:33 +00:00
5b9d40a4f9 Bump about_libraries from 8.6.6 to 8.6.7 (#1085) 2021-01-20 10:50:20 +00:00
e6e9d201ce Show appropriate message when message does not exist (#1083) 2021-01-20 11:49:06 +01:00
9128e0b55f Bump about_libraries from 8.6.5 to 8.6.6 (#1080) 2021-01-16 14:10:49 +00:00
7f893a8868 Bump hianalytics from 5.1.0.300 to 5.1.0.301 (#1082) 2021-01-16 13:54:36 +00:00
89f92ed027 Bump sonarqube-gradle-plugin from 3.0 to 3.1 (#1081) 2021-01-16 13:52:33 +00:00
99e06f6539 Bump mockk from 1.10.4 to 1.10.5 (#1077) 2021-01-16 13:24:15 +00:00
12da5e5381 Bump firebase-bom from 26.2.0 to 26.3.0 (#1078) 2021-01-16 13:04:54 +00:00
a7bb026c1b Use senderId to differentiate saved recipients between accounts (#1075) 2021-01-14 18:37:02 +01:00
8ce59a3098 Use userLoginId to differentiate saved mobiles devices between accounts (#1076) 2021-01-14 18:36:32 +01:00
a1d4b3d19e Auto-refresh displayed data after some time (#1068)
* Auto-refresh displayed data after some time

* Use refresh interval from settings

* Auto-refresh exams

* Add refresh utils

* Auto-refresh timetable

* Auto-refresh grade details and summary

* Auto-refresh grades

* Auto-refresh attendance summary

* Add cacheKey variables

* Auto-refres completed lessons

* Auto-refres conferences

* Auto-refres homework

* Auto-refresh messages

* Auto-refresh mobile devices

* Auto-refresh notes

* Fix tests

* Fix instrumentation tests

* Create AutoRefreshHelper
2021-01-13 10:01:45 +00:00
64cc49055b Bump coil from 1.1.0 to 1.1.1 (#1072) 2021-01-13 09:47:46 +00:00
91ece39517 Bump about_libraries from 8.6.3 to 8.6.5 (#1074) 2021-01-13 07:25:59 +00:00
a99e742472 Handle URLs from FCM push notification (#1070) 2021-01-11 10:41:17 +01:00
d332369872 Disable force dark theme on Android >9 (#1071) 2021-01-11 09:53:19 +01:00
205bcf9c22 Use work-gcm dependency in play flavor only (#1069) 2021-01-11 09:52:44 +01:00
344d404238 Bump hianalytics from 5.0.5.301 to 5.1.0.300 (#1060) 2021-01-05 04:37:48 +00:00
8b2dc514f4 Use Firebase Android BoM (#1064)
* Use Firebase Android BoM

* Use androidx-bom to resolve androidx versions

* Revert "Use androidx-bom to resolve androidx versions"

This reverts commit 55a79a61cfa55090e157c66d4aed94322d44ac69.
2021-01-03 23:21:25 +00:00
bee62d4769 Remove remote and local repositories (#1065)
* Remove remote and local repos

* Move repositories out of sub-packages

* Update chucker config

* Move repositories tests from androidTest to unit tests

* Rewrite grades tests

* Fix more tests

* Update grade statistics tests
2021-01-03 23:13:50 +00:00
fb36fb379a Bump room from 2.2.5 to 2.2.6 (#1058) 2021-01-03 22:57:41 +00:00
a2c4f4a51d Bump mockk from 1.10.3-jdk8 to 1.10.4 (#1059) 2021-01-02 12:49:57 +00:00
b0d713dc0c New Crowdin updates (#1053) 2020-12-28 23:34:35 +01:00
5a2a0e3d6d Github workflow config improvements (#1056) 2020-12-28 22:45:21 +01:00
7fe638130e Configure github actions (#1055)
* Create test.yml

* Change list of emulator api levels

* Downgrade emulator with api 30 to 29

* Exclude jdk.internal in jacoco config

* Use jdk 15

* Downgrade jdk to 11 due to jacoco incompatibility

gradle/gradle#15038

* Fix tests on jdk11

* Add codecov

* Add missing jacoco report generaction command

* Add flags to codecov uploads

* Add deploy config

* Replace travis badge with gh actions badge

* Add info about coroutines to readme, replace dagger with hilt

* Decrease instrumentation tests to 15 minutes

* Skip duplicate actions

* Remove comment

* Change os of instrumentation tests

* Downgrade android emulator runner to v2.13.0

* Add pre-build job

* Pass prebuild files between jobs

* Fix gh actions yaml config

* Tar build cache

* Fix upload-artifact filename

* Fix prebuild cache name

* Add more to cache, change cache key
2020-12-27 17:30:50 +00:00
9763208688 Add additional lessons to timetable (#1019) 2020-12-27 14:06:07 +01:00
295fd0fd90 Add language event (#1052)
* Add log event to language

* Add log event to app
2020-12-26 22:40:21 +01:00
c052f31424 Merge branch 'release/0.23.1' into develop 2020-12-16 21:19:57 +01:00
3486d52a26 Merge branch 'release/0.23.1' 2020-12-16 21:19:52 +01:00
88c5c7d9dc Version 0.23.1 2020-12-16 21:19:47 +01:00
315e9b0595 Fix username label on registers other than default (#1050) 2020-12-16 20:48:01 +01:00
3eba89aeb9 Disable recordException in HMS (#1048) 2020-12-10 21:12:59 +01:00
1680ad233e New translations strings.xml (Czech) (#1049) 2020-12-10 21:12:14 +01:00
93bc4e92a9 Bump kotlin_version from 1.4.20 to 1.4.21 (#1047) 2020-12-09 15:38:06 +00:00
7536f98e6e Merge branch 'release/0.23.0' into develop 2020-12-06 22:21:42 +01:00
afee97a706 Merge branch 'release/0.23.0' 2020-12-06 22:21:36 +01:00
73a92497ed Version 0.23.0 2020-12-06 22:12:18 +01:00
67cef0f6d9 Add register variant auto-matching based on email (#1041) 2020-12-06 21:23:02 +01:00
6ca5e11371 Fix HMS analytics and crashlytics (#1042) 2020-12-06 19:31:35 +01:00
05a597313b Bump hilt_version from 2.29.1-alpha to 2.30.1-alpha (#1035) 2020-12-06 17:54:09 +00:00
33d540e1c9 Bump desugar_jdk_libs from 1.0.10 to 1.1.1 (#1039) 2020-12-06 15:04:43 +00:00
d115372c3b Bump coil from 1.0.0 to 1.1.0 (#1040) 2020-12-06 14:57:50 +00:00
e637896ad3 Bump firebase-crashlytics from 17.2.2 to 17.3.0 (#1038) 2020-12-06 14:50:57 +00:00
ce802cc737 Bump about_libraries from 8.6.2 to 8.6.3 (#1037) 2020-12-06 14:43:48 +00:00
bf342ed289 Bump kotlinx-coroutines-test from 1.4.0 to 1.4.2-native-mt (#1031) 2020-12-06 14:32:08 +00:00
40ec5bbe86 Bump kotlinx-coroutines-android from 1.4.0 to 1.4.2-native-mt (#1032) 2020-12-06 14:29:32 +00:00
41dbd2d25f New Crowdin updates (#1033) 2020-12-06 15:14:58 +01:00
f263b5534a Bump mockk from 1.10.2 to 1.10.3-jdk8 (#1034) 2020-12-06 14:08:26 +00:00
7ed4787496 Bump chucker from 3.3.0 to 3.4.0 (#1027) 2020-12-03 14:19:21 +00:00
1428887204 Bump agconnect-crash from 1.4.1.300 to 1.4.2.301 (#1030) 2020-12-03 13:57:37 +00:00
0fc828f006 Bump agcp from 1.4.1.300 to 1.4.2.301 (#1024) 2020-12-03 13:48:25 +00:00
13906a7d62 Bump about_libraries from 8.4.3 to 8.6.2 (#1025) 2020-12-03 13:47:26 +00:00
3c0dda9a82 Bump hianalytics from 5.0.4.301 to 5.0.5.301 (#1023) 2020-12-03 13:29:49 +00:00
c42333cd35 Bump firebase-crashlytics-gradle from 2.3.0 to 2.4.1 (#1029) 2020-12-03 13:28:10 +00:00
c675dc8b84 Bump kotlin_version from 1.4.10 to 1.4.20 (#1026) 2020-12-03 13:27:47 +00:00
5e9853b043 New Crowdin updates (#1022) 2020-11-21 15:50:18 +01:00
c7fdcc2bbd Add facebook link to about (#1021) 2020-11-17 16:58:24 +01:00
8a00ae95b8 Update contributor's username (#1020) 2020-11-13 23:59:45 +01:00
a1ebf6c6ad Add average in class grades statistics (#1017) 2020-11-11 16:03:52 +01:00
ada5854d10 New Crowdin updates (#1013) 2020-11-02 17:54:02 +01:00
fe191bb0df Bump firebase-analytics from 17.6.0 to 18.0.0 (#1009) 2020-11-01 18:36:55 +00:00
9eb091fbf4 Bump kotlinx-coroutines-android from 1.3.9 to 1.4.0 (#1005) 2020-11-01 18:16:21 +00:00
57e760844f Bump kotlinx-coroutines-test from 1.3.9 to 1.4.0 (#1012) 2020-11-01 18:15:52 +00:00
20644a7a67 Update english strings (#1014) 2020-11-01 19:05:05 +01:00
b3109aed0b Bump firebase-messaging from 20.3.0 to 21.0.0 (#1008) 2020-11-01 16:40:39 +00:00
9ba999feb0 Bump about_libraries from 8.4.2 to 8.4.3 (#1011) 2020-11-01 16:28:32 +00:00
7c9e85793b Bump firebase-inappmessaging-display-ktx from 19.1.1 to 19.1.2 (#1007) 2020-11-01 16:15:17 +00:00
6af8263952 Bump firebase-inappmessaging-ktx from 19.1.1 to 19.1.2 (#1010) 2020-11-01 15:55:51 +00:00
83d1d860a6 Bump coil from 1.0.0-rc3 to 1.0.0 (#1006) 2020-11-01 15:55:36 +00:00
8830240182 Add conferences (#1004) 2020-11-01 16:53:31 +01:00
c3061e75b5 Merge branch 'release/0.22.2' into develop 2020-10-30 12:31:58 +01:00
5f1bb7c1d0 Merge branch 'release/0.22.2' into master 2020-10-30 12:31:50 +01:00
c6f4c868b2 Version 0.22.2 2020-10-30 12:31:41 +01:00
c634c64e70 Update hianalytics to 5.0.4.301 (#1003) 2020-10-30 12:24:00 +01:00
da2b7dbf7e Merge branch 'release/0.22.1' into develop 2020-10-30 01:49:56 +01:00
26267507eb Merge branch 'release/0.22.1' into master 2020-10-30 01:49:42 +01:00
24d0c5057b Version 0.22.1 2020-10-30 01:49:30 +01:00
b05026a6e6 New Crowdin updates (#1002) 2020-10-30 00:54:35 +01:00
8036f3d7f7 Add HMS flavor (#998) 2020-10-29 13:58:56 +01:00
23e309d38e New Crowdin updates (#993) 2020-10-26 11:54:27 +01:00
bf92c6b2e9 Fix grade header item object comparision (#999) 2020-10-25 12:16:19 +01:00
c00b5edaf7 Make AppGallery badge background transparent. (#997) 2020-10-22 16:17:52 +02:00
cb09ca13dc Bump junit from 4.13 to 4.13.1 (#995) 2020-10-15 18:36:31 +00:00
3d68b8e629 Bump gradle from 4.0.2 to 4.1.0 (#996) 2020-10-15 18:36:13 +00:00
b3173581e5 Merge tag '0.22.0' into develop
Version 0.22.0
2020-10-15 17:54:27 +02:00
ddac1d0f98 Merge branch 'release/0.22.0' into master 2020-10-15 17:54:22 +02:00
db6a359bea Version 0.22.0 2020-10-15 17:54:14 +02:00
e7221e6a32 Add Vulcan and Scrapper Exceptions to known exceptions (#994) 2020-10-15 15:55:59 +02:00
db9c2640c7 Add in-app updates support (#914) 2020-10-15 01:00:41 +02:00
ca67e144e4 Add ConnectException and StreamResetException to known exceptions (#992) 2020-10-13 22:32:15 +02:00
da2346ed83 New Crowdin updates (#987) 2020-10-11 21:00:48 +02:00
a87818f3d0 Cancel scheduled lesson notifications which turned into canceled (#991) 2020-10-11 20:51:03 +02:00
5092f8c0bf Reload grade list on mark all as read (#990) 2020-10-11 20:33:18 +02:00
af0787c0b1 Add support for BIG font (#989)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-10-10 02:53:25 +02:00
721b4ac797 Add support for night mode in account switcher dialog (#988) 2020-10-09 21:24:58 +02:00
26a69092cc Add AppGallery badge (#986) 2020-10-07 11:19:34 +02:00
2bd0c75055 Bump about_libraries from 8.3.1 to 8.4.2 (#985) 2020-10-06 21:56:46 +00:00
d6f3c57293 Bump moshi from 1.10.0 to 1.11.0 (#984) 2020-10-06 21:45:38 +00:00
518387e7bb Bump gradle from 4.0.1 to 4.0.2 (#982) 2020-10-06 21:43:56 +00:00
ca6dfbf2d0 Bump core-ktx from 1.3.1 to 1.3.2 (#983) 2020-10-06 21:43:50 +00:00
da6d8a74fd New Crowdin updates (#981) 2020-10-06 23:34:27 +02:00
e35e4ef152 New Crowdin updates (#948) 2020-10-03 13:01:11 +02:00
40fc6ec2e0 Upgrade android sdk to 30 (#966) 2020-10-03 01:08:57 +02:00
b91973aec3 Bump chucker from 3.2.0 to 3.3.0 (#979) 2020-10-01 15:38:29 +00:00
047e70ad46 Bump firebase-crashlytics from 17.2.1 to 17.2.2 (#974) 2020-09-30 20:13:18 +00:00
112c1eb793 Bump moshi from 1.9.3 to 1.10.0 (#972) 2020-09-30 20:13:01 +00:00
c479b31670 Bump coil from 1.0.0-rc2 to 1.0.0-rc3 (#976) 2020-09-30 20:01:45 +00:00
43ed8c8fce Bump firebase-messaging from 20.2.4 to 20.3.0 (#973) 2020-09-30 19:52:02 +00:00
613fa44c27 Bump about_libraries from 8.3.0 to 8.3.1 (#975) 2020-09-30 19:34:53 +00:00
f21216286d Bump mockk from 1.10.0 to 1.10.2 (#977) 2020-09-30 19:34:13 +00:00
7298d0d75a Bump google-services from 4.3.3 to 4.3.4 (#978) 2020-09-30 19:33:22 +00:00
ee0fbcdfd6 Merge tag '0.21.2' into develop
Version 0.21.2
2020-09-29 21:10:17 +02:00
c362ad12c7 Merge branch 'release/0.21.2' into master 2020-09-29 21:10:11 +02:00
8a1a712d6d Version 0.21.2 2020-09-29 21:10:05 +02:00
1f0f6b3e51 Fix string pair list type converter (#971) 2020-09-29 21:02:49 +02:00
11487e77ca Merge tag '0.21.1' into develop
Version 0.21.1
2020-09-29 11:43:58 +02:00
fd0fd4df55 Merge branch 'release/0.21.1' into master 2020-09-29 11:43:54 +02:00
d95a33787b Version 0.21.1 2020-09-29 11:43:49 +02:00
e5661098d9 Fix string pair list type converter (#970) 2020-09-29 11:42:54 +02:00
d020b01794 Merge tag '0.21.0' into develop
Version 0.21.0
2020-09-27 22:12:31 +02:00
d8b1264024 Merge branch 'release/0.21.0' into master 2020-09-27 22:12:27 +02:00
cddd17650b Version 0.21.0 2020-09-27 22:11:55 +02:00
a0f9c70036 Migrate from gson to moshi (#969) 2020-09-27 20:59:27 +02:00
2e05416fb5 Show groups next to subjects in timetable (#953) 2020-09-27 16:33:36 +02:00
d32ebd66de Add subjects sorting in grades (#946) 2020-09-27 16:28:39 +02:00
c6a99f1000 Add remembering the full screen mode in homework (#956)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-27 14:49:19 +02:00
bafe52e310 Different notification for notes and praises (#952) 2020-09-25 15:46:08 +02:00
e08abc1fc2 Show subjects without grades in "Grades" (#947) 2020-09-25 15:45:07 +02:00
2a74b11cce Add app shortcuts (#939)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-25 15:37:19 +02:00
b0b3ccfd53 Upgrade gradle wrapper to 6.6.1 (#968) 2020-09-20 21:54:59 +02:00
6c68456f7a Merge tag '0.20.5' into develop
Version 0.20.5
2020-09-19 13:03:32 +02:00
3e8e9b4ecc Merge branch 'release/0.20.5' into master 2020-09-19 13:03:28 +02:00
d6ebc343d5 Version 0.20.5 2020-09-19 01:25:34 +02:00
73be416807 Fix crash in flowWithResourceIn() (#967) 2020-09-19 00:57:55 +02:00
0cb65a29ba Merge tag '0.20.4' into develop
Version 0.20.4
2020-09-13 19:00:45 +02:00
13198f2ab4 Merge branch 'release/0.20.4' into master 2020-09-13 19:00:39 +02:00
cd92f37435 Version 0.20.4 2020-09-13 19:00:32 +02:00
5d8fb376ab Expand exam sync date range to next month (#960) 2020-09-13 18:37:34 +02:00
47150364d8 Fix lifecycle of timer tasks in timetable lessons (#958)
Co-authored-by: Faierbel <RafalBO99@outlook.com>
2020-09-13 16:27:53 +02:00
792b123598 Bump coil from 1.0.0-rc1 to 1.0.0-rc2 (#961) 2020-09-13 14:07:30 +00:00
acf5c8e9ba Bump firebase-crashlytics-gradle from 2.2.1 to 2.3.0 (#964) 2020-09-13 14:04:41 +00:00
53561668fc Bump hilt_version from 2.28.3-alpha to 2.29.1-alpha (#962) 2020-09-13 14:03:09 +00:00
7cfe58d311 Bump material from 1.2.0 to 1.2.1 (#963) 2020-09-13 14:02:31 +00:00
cd51fac621 Add eduportal.koszalin.pl register (#959) 2020-09-13 13:46:45 +02:00
adde5541e2 Move timetable notifications scheduling to background thread (#954) 2020-09-11 13:02:16 +02:00
6e56d3ff06 Ignore empty semesters on refresh (#955) 2020-09-09 13:28:44 +02:00
ec761f6329 Fix bug in grade statistics (#951) 2020-09-08 20:13:17 +02:00
6363c90e37 Disable sound of upcoming lessons notification (fix) (#950) 2020-09-07 20:28:32 +02:00
c30f105be5 Fix crash on unknown attendance category type (#949) 2020-09-07 09:35:26 +02:00
9f85b2206a Merge tag '0.20.3' into develop
Version 0.20.3
2020-09-04 23:42:12 +02:00
42515fd084 Merge branch 'release/0.20.3' into master 2020-09-04 23:42:07 +02:00
9a7c04fe7b Version 0.20.3 2020-09-04 23:42:01 +02:00
debb21f5f9 Add full stacktrace to errors list in sync now (#945) 2020-09-03 21:10:39 +02:00
18b9bf42e1 Fix crash in flowWithResourceIn() (#944) 2020-09-03 20:54:28 +02:00
6ded83d132 Fix attendance item description (#943) 2020-09-03 20:52:24 +02:00
71d37a1c6c Merge tag '0.20.2' into develop
Version 0.20.2
2020-09-02 00:23:49 +02:00
3975d06cde Merge branch 'release/0.20.2' into master 2020-09-02 00:23:45 +02:00
ee168bafe0 Version 0.20.2 2020-09-02 00:23:41 +02:00
42ed7e0ae1 Merge tag '0.20.1' into develop
Version 0.20.1
2020-09-02 00:14:35 +02:00
0e92447974 Merge branch 'release/0.20.1' into master 2020-09-02 00:14:23 +02:00
40492e6c01 Version 0.20.1 2020-09-02 00:14:18 +02:00
69a1193154 Fix semester list refresh on no current semester found (#940) 2020-09-01 23:58:18 +02:00
0f65af8958 Fix grade summary empty view (#941) 2020-09-01 23:57:56 +02:00
2ad1d086e0 Fix lucky number notification (#937) 2020-09-01 15:39:34 +02:00
f8b7baef24 Remove force sync dialog (#938) 2020-09-01 14:58:45 +02:00
90be9d1add Disable notification sound (#936) 2020-09-01 12:57:45 +02:00
20f931c5cc Fix recaptcha loading in password recover (#935) 2020-09-01 09:33:14 +02:00
9997b1adbb Add skarzyskokamienna vulcan register (#934) 2020-09-01 09:31:36 +02:00
eb616eedc7 Fix crash in flowWithResourceIn() (#933) 2020-09-01 09:31:01 +02:00
a5de39a366 Update UI dependencies (#927) 2020-08-31 12:55:51 +02:00
57bc2b2533 Bump firebase-crashlytics from 17.1.1 to 17.2.1 (#931) 2020-08-31 10:09:37 +00:00
d1ce16d2b1 Bump runner from 1.2.0 to 1.3.0 (#932) 2020-08-31 10:03:20 +00:00
54fb01cd0d Bump firebase-inappmessaging-display-ktx from 19.1.0 to 19.1.1 (#930) 2020-08-31 09:42:25 +00:00
370cfbf22a Bump core from 1.2.0 to 1.3.0 (#929) 2020-08-31 09:42:18 +00:00
d198a2ba21 Merge tag '0.20.0' into develop
Version 0.20.0
2020-08-29 23:57:20 +02:00
580ad58dd6 Merge branch 'release/0.20.0' into master 2020-08-29 23:57:14 +02:00
b5f7c5f318 Version 0.20.0 2020-08-29 23:57:06 +02:00
7e2de594a4 Fix messages after 20.09 update (#916) 2020-08-29 23:53:55 +02:00
36984e08b5 Bump coil from 0.11.0 to 1.0.0-rc1 (#920) 2020-08-29 11:12:27 +00:00
f8031e1eca Bump appcompat from 1.2.0-rc02 to 1.2.0 (#926) 2020-08-29 09:39:31 +00:00
5bc49b2e74 Bump firebase-inappmessaging-ktx from 19.1.0 to 19.1.1 (#918) 2020-08-29 09:29:00 +00:00
ba81b4b465 Bump junit from 1.1.1 to 1.1.2 (#924) 2020-08-29 09:20:43 +00:00
5cc31a7c5e Bump firebase-crashlytics-gradle from 2.2.0 to 2.2.1 (#923) 2020-08-29 09:14:35 +00:00
de70719d38 Bump appcompat-resources from 1.1.0 to 1.2.0 (#922) 2020-08-29 09:09:41 +00:00
9f315b3af1 Bump firebase-analytics from 17.4.4 to 17.5.0 (#917) 2020-08-29 08:50:49 +00:00
d5187d1808 Save semesters with students during registration (#915) 2020-08-26 10:25:01 +02:00
ca7d977342 Bump work_manager from 2.3.4 to 2.4.0 (#910)
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-08-02 18:41:22 +02:00
062985c5a0 Bump firebase-messaging from 20.2.3 to 20.2.4 (#912) 2020-08-02 16:30:31 +00:00
8922d7d48d Bump core-ktx from 1.3.0 to 1.3.1 (#911) 2020-08-02 16:30:06 +00:00
3ba16f2903 Migrate to dagger hilt (#909) 2020-08-02 18:29:41 +02:00
6a1a347579 Migrate workers and app widgets to coroutines (#907) 2020-07-27 13:20:45 +02:00
6c4f27aff5 Remove threetenabp (#908) 2020-07-27 11:44:30 +02:00
f6dce0fbda Bump kotlinx-coroutines-rx2 from 1.3.7 to 1.3.8 (#901) 2020-07-19 12:00:08 +00:00
1ac42bb56d Migrate presenters from rxjava to coroutines flow (#894) 2020-07-19 13:30:29 +02:00
b0a674b471 Bump kotlinx-coroutines-core from 1.3.7 to 1.3.8 (#903) 2020-07-19 11:25:48 +00:00
1c1a90c12f Bump firebase-inappmessaging-display-ktx from 19.0.7 to 19.1.0 (#905) 2020-07-18 23:51:24 +00:00
d4ee1f8b98 Bump firebase-crashlytics from 17.1.0 to 17.1.1 (#902) 2020-07-18 23:32:38 +00:00
152382a0c9 Bump firebase-analytics from 17.4.3 to 17.4.4 (#906) 2020-07-18 23:31:27 +00:00
776972514a Bump firebase-inappmessaging-ktx from 19.0.7 to 19.1.0 (#904) 2020-07-18 23:00:03 +00:00
e072bf9fe3 Bump gradle from 4.0.0 to 4.0.1 (#900) 2020-07-18 22:42:05 +00:00
927415f9a3 Bump dagger from 2.28.1 to 2.28.3 (#899) 2020-07-18 22:41:41 +00:00
76b2ab1f25 Bump firebase-messaging from 20.2.1 to 20.2.3 (#898) 2020-07-18 22:40:01 +00:00
c9a0bbda01 New Crowdin updates (#888) 2020-07-12 17:55:27 +02:00
cbabe44461 Bump about_libraries from 8.2.0 to 8.3.0 (#896) 2020-07-11 09:41:12 +00:00
5c313f986c Bump swiperefreshlayout from 1.1.0-rc01 to 1.1.0 (#897) 2020-07-02 10:15:34 +00:00
f2682c6d30 Bump dagger from 2.28 to 2.28.1 (#895) 2020-07-02 10:15:28 +00:00
3571f8bd04 Bump firebase-crashlytics from 17.0.1 to 17.1.0 (#892) 2020-06-20 16:00:47 +00:00
dfcd5fc4d0 Bump firebase-crashlytics-gradle from 2.1.1 to 2.2.0 (#889) 2020-06-20 15:38:08 +00:00
b8ea0ab0f9 Bump firebase-messaging from 20.2.0 to 20.2.1 (#890) 2020-06-20 15:37:34 +00:00
4434d6f024 Migrate repositories from rxjava to coroutines (#885) 2020-06-20 15:07:57 +02:00
8cee882c08 Merge tag '0.19.0' into develop
Version 0.19.0
2020-06-14 22:44:41 +02:00
9f87b92937 Merge branch 'release/0.19.0' 2020-06-14 22:44:36 +02:00
c13f12f729 Version 0.19.0 2020-06-14 22:40:36 +02:00
dfe7981e7f New Crowdin translations (#874)
Co-authored-by: Mikołaj Pich <m.pich@outlook.com>
2020-06-14 22:37:58 +02:00
6e1ddb482e Message fuzzy search (#869) 2020-06-14 14:05:24 +02:00
924bcb0d64 Message sharing and printing (#866) 2020-06-14 00:50:09 +02:00
a6682c9b73 Add predicted and final grade notifications (#872) 2020-06-13 17:11:18 +02:00
a529836937 Fix lint errors (#873) 2020-06-13 14:12:01 +02:00
a05da2656a Add account headers in student picker (#871) 2020-06-12 21:35:51 +02:00
30af77614e Fix showing summary summary for subjects without partial grades (#877) 2020-06-11 14:38:04 +02:00
eedaa63771 Bump sonarqube-gradle-plugin from 2.8 to 3.0 (#882) 2020-06-11 12:05:54 +00:00
f151f7bd62 Bump about_libraries from 8.1.6 to 8.2.0 (#879) 2020-06-11 12:05:30 +00:00
00943717a2 Bump firebase-crashlytics from 17.0.0 to 17.0.1 (#880) 2020-06-11 12:02:38 +00:00
8cce81585a Bump firebase-analytics from 17.4.2 to 17.4.3 (#881) 2020-06-11 12:02:10 +00:00
5529ffcf73 Bump fragment-ktx from 1.2.4 to 1.2.5 (#878) 2020-06-11 12:01:52 +00:00
7e6f892e23 Merge tag '0.18.3' into develop
Version 0.18.3
2020-06-10 19:18:31 +02:00
d3a6ea5acf Merge branch 'release/0.18.3' 2020-06-10 19:18:23 +02:00
674a78b661 Version 0.18.3 2020-06-10 19:18:09 +02:00
5c84c8d5b1 Fix force average calc from two semesters (#870) 2020-06-10 17:28:49 +02:00
522a36d670 Fix message deleting (#875) 2020-06-10 16:26:45 +02:00
2d0cfc3e8e Merge tag '0.18.2' into develop
Version 0.18.2
2020-06-02 17:08:02 +02:00
4b6b722f87 Merge branch 'release/0.18.2' 2020-06-02 17:07:58 +02:00
419675066f Version 0.18.2 2020-06-02 17:07:52 +02:00
191b1ad022 Emulate summaries from grade list when summaries are empty (#855) 2020-06-02 15:51:15 +02:00
792e44a9d0 Fix login button state in student select login fragment (#863) 2020-06-02 15:50:32 +02:00
ff5a47b0df New Crowdin translations (#856) 2020-06-02 15:18:41 +02:00
7bf0acb703 Revert "Bump sonarqube-gradle-plugin from 2.8 to 3.0" (#864)
This reverts commit ab7d30c995.
2020-06-02 15:13:41 +02:00
ba5dbf90d8 Fixes in updating adapter items (#854) 2020-06-02 01:04:41 +02:00
54f41aaa63 Fix too many alarms on samsung devices (#859) 2020-06-02 01:04:02 +02:00
1db42210e8 Bump about_libraries from 8.1.4 to 8.1.6 (#861)
Bumps `about_libraries` from 8.1.4 to 8.1.6.

Updates `aboutlibraries-plugin` from 8.1.4 to 8.1.6
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Changelog](https://github.com/mikepenz/AboutLibraries/blob/develop/gradle-release.gradle)
- [Commits](https://github.com/mikepenz/AboutLibraries/compare/v8.1.4...v8.1.6)

Updates `aboutlibraries-core` from 8.1.4 to 8.1.6
- [Release notes](https://github.com/mikepenz/AboutLibraries/releases)
- [Changelog](https://github.com/mikepenz/AboutLibraries/blob/develop/gradle-release.gradle)
- [Commits](https://github.com/mikepenz/AboutLibraries/compare/v8.1.4...v8.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-06-02 01:02:16 +02:00
fb554a4a3b Fix capitalization in new message activity (#860) 2020-06-02 01:01:58 +02:00
d8d13c73fb Filter out empty items in grade summary (#857) 2020-06-02 01:01:02 +02:00
5c0160a24d Don't capture click on login student select checkbox (#862) 2020-06-02 00:57:22 +02:00
ab7d30c995 Bump sonarqube-gradle-plugin from 2.8 to 3.0 (#853) 2020-05-30 12:19:52 +00:00
1cfa1f15c0 Bump gradle from 3.6.3 to 4.0.0 (#852) 2020-05-30 11:33:43 +00:00
2149a4db9f Bump about_libraries from 8.1.3 to 8.1.4 (#851) 2020-05-30 11:17:22 +00:00
df57d16d21 Bump dagger from 2.27 to 2.28 (#850) 2020-05-30 11:16:58 +00:00
2ff031005e Fix displaying the feature disabled message in completed lessons (#849) 2020-05-30 13:15:28 +02:00
b9ab85ee55 Merge tag '0.18.1' into develop
Version 0.18.1
2020-05-24 21:20:28 +02:00
064998129e Merge branch 'release/0.18.1' 2020-05-24 21:20:23 +02:00
4044cdd9a5 Version 0.18.1 2020-05-24 21:20:17 +02:00
1ee10a5902 New Crowdin translations (#847) 2020-05-24 21:18:49 +02:00
27b1d076c7 Bump firebase-inappmessaging-ktx from 19.0.6 to 19.0.7 (#844) 2020-05-24 21:03:35 +02:00
c8b32fdb3b Bump firebase-analytics from 17.4.1 to 17.4.2 (#843) 2020-05-24 21:02:42 +02:00
0b4434fdb6 Bump firebase-crashlytics-gradle from 2.1.0 to 2.1.1 (#841) 2020-05-24 20:53:59 +02:00
699fbff082 Fix debug channel (#846) 2020-05-24 20:53:23 +02:00
4c295f2ab4 Bump firebase-messaging from 20.1.7 to 20.2.0 (#839) 2020-05-24 18:42:24 +00:00
dcbaa170db Bump about_libraries from 8.1.2 to 8.1.3 (#845) 2020-05-24 20:36:09 +02:00
c71b533645 Bump firebase-inappmessaging-display-ktx from 19.0.6 to 19.0.7 (#838) 2020-05-24 18:10:47 +00:00
63f2576ff1 Hide advanced login options button (#837) 2020-05-24 20:07:24 +02:00
b744a4182b Open dontkillmyapp.com if no action found in app killer manager (#835) 2020-05-24 20:04:09 +02:00
0c4364609b Show check for updates dialog before report a bug (#834) 2020-05-24 20:03:46 +02:00
3308d7fe6f Wrap long preference titles (#836) 2020-05-24 19:52:01 +02:00
2cdde78c54 Allow access to saturday in timetable and attendance (#833) 2020-05-24 19:48:56 +02:00
428b599be0 Improve firebase logging (#832) 2020-05-24 19:48:14 +02:00
3541ab81b8 Destroy webview in password recover before setting binding to null (#829) 2020-05-24 19:47:20 +02:00
7fa14e5077 Set app_name in build.gradle (#830) 2020-05-24 19:36:40 +02:00
cec1068f2e Fix crash in timetable time left (#826) 2020-05-24 19:34:10 +02:00
f737018548 Add debug statements to get/update methods in grade details adapter (#827) 2020-05-24 19:33:04 +02:00
9c01316178 Fix mark message as read in search mode (#828) 2020-05-24 19:24:01 +02:00
c3a6f8253a Fix grade sorting (#825) 2020-05-24 19:23:35 +02:00
d558c4db66 New Crowdin translations (#817) 2020-05-23 16:34:26 +02:00
722886aaf2 Merge tag '0.18.0' into develop
Version 0.18.0
2020-05-21 00:59:19 +02:00
31902a7667 Merge branch 'release/0.18.0' 2020-05-21 00:59:13 +02:00
4c1c4f8a43 Version 0.18.0 2020-05-21 00:59:05 +02:00
7850412ba9 Fix crash in timetable on api < 21 (#816) 2020-05-20 23:08:32 +02:00
4f0ff5f49c New Crowdin translations (#813) 2020-05-20 22:48:09 +02:00
131ba7dbb1 Add app killer manager to settings (#808) 2020-05-20 16:59:26 +02:00
b95b529015 Add lesson time left display (#550) 2020-05-20 16:06:24 +02:00
29226dd93e Add notification about upcoming lesson (#578) 2020-05-20 15:11:01 +02:00
115da64167 Add search in messages (#804) 2020-05-20 14:12:32 +02:00
6cd1877af7 Fix notifications on android 8.0 (#814) 2020-05-20 12:34:29 +02:00
78a90591fd Bump coil from 0.10.1 to 0.11.0 (#812) 2020-05-16 21:06:45 +00:00
45265d025d Bump appcompat from 1.2.0-beta01 to 1.2.0-rc01 (#811) 2020-05-16 20:52:37 +00:00
9bf5c2dc40 Bump firebase-crashlytics-gradle from 2.0.0 to 2.1.0 (#810) 2020-05-16 20:48:15 +00:00
ee4bdd2a9a Bump firebase-analytics from 17.4.0 to 17.4.1 (#809) 2020-05-16 20:46:11 +00:00
0b75635ad5 Add option to hide/show chart list in grade class stats (#807) 2020-05-16 22:21:14 +02:00
f7b5b9c413 Add fullscreen mode to homework dialog (#806) 2020-05-16 22:06:00 +02:00
52d66ac30b New Crowdin translations (#797) 2020-05-13 11:25:50 +02:00
6ac5c6a0b4 Add widget system theme option (#759) 2020-05-10 12:00:21 +02:00
45fc76a9a5 Update translations (#794) 2020-05-10 11:34:54 +02:00
6d1fa0cf05 Optimize grade average provider (#792) 2020-05-10 10:51:01 +02:00
8eb0c0351b Use view binding instead of kotlin synthetics (#791) 2020-05-10 10:39:10 +02:00
ec80f939f1 Update Crowdin configuration file 2020-05-06 23:10:19 +02:00
70fc51a0b5 Update Crowdin configuration file 2020-05-06 23:07:13 +02:00
bd700a88bf Add nav bar color in night style (#790) 2020-05-03 15:06:49 +02:00
98f2f0e74f Migrate from fabric to firebase crashlytics (#789) 2020-05-01 19:00:42 +02:00
4a3b746d48 Remove flexible adapter (#781) 2020-05-01 17:38:19 +02:00
a1f864b35e Add importantForAutofill to login fields (#788) 2020-05-01 12:54:01 +02:00
17ac3cfd52 Bump firebase-analytics from 17.3.0 to 17.4.0 (#787) 2020-04-30 22:40:38 +00:00
c6c2b1c6a3 Bump coil from 0.9.5 to 0.10.1 (#785) 2020-04-29 14:40:12 +00:00
5fba3d5775 Bump firebase-inappmessaging-ktx from 19.0.5 to 19.0.6 (#782) 2020-04-28 21:25:27 +00:00
6fe62edd63 Bump firebase-inappmessaging-display-ktx from 19.0.5 to 19.0.6 (#786) 2020-04-28 21:04:54 +00:00
87af3da1ad Bump threetenabp from 1.2.3 to 1.2.4 (#783) 2020-04-28 20:57:14 +00:00
155f0cc347 Bump threetenbp from 1.4.3 to 1.4.4 (#784) 2020-04-28 20:56:55 +00:00
2de1ad5334 Merge tag '0.17.4' into develop
Version 0.17.4
2020-04-23 19:24:59 +02:00
763543a16e Merge branch 'release/0.17.4' 2020-04-23 19:24:54 +02:00
acabe90c9f Version 0.17.4 2020-04-23 19:24:49 +02:00
f79da9003a Merge tag '0.17.3' into develop
Version 0.17.3
2020-04-23 16:22:49 +02:00
fc9e558cd6 Merge branch 'release/0.17.3' 2020-04-23 16:22:44 +02:00
68140bd544 Version 0.17.3 2020-04-23 16:22:39 +02:00
2c4c2d1f49 Fix injector of ErrorDialog (#780) 2020-04-23 11:07:18 +02:00
4894086d9d Bump about_libraries from 8.1.1 to 8.1.2 (#779) 2020-04-21 16:21:44 +00:00
1d29ef5fe3 Merge tag '0.17.2' into develop
Version 0.17.2
2020-04-19 23:42:00 +02:00
7fa333cff2 Merge branch 'release/0.17.2' 2020-04-19 23:41:53 +02:00
c1ffc2ae72 Version 0.17.2 2020-04-19 23:37:29 +02:00
9c0e2dc533 Refresh semesters if previous list was downloaded in different m… (#776) 2020-04-19 23:21:59 +02:00
9b18e3669d Fix crash after send message when activity is in background (#777) 2020-04-19 23:21:25 +02:00
366ebc781d Add error message and bug report button to error dialog (#778) 2020-04-19 23:20:55 +02:00
4bd0459155 Don't log common errors to crashlytics (#775) 2020-04-18 23:07:20 +02:00
b19084cb57 Fix visibility of dialog close button when homework content is l… (#774) 2020-04-18 23:06:05 +02:00
69be7ca412 Bump kotlin_version from 1.3.71 to 1.3.72 (#773) 2020-04-17 21:01:41 +00:00
07307b9709 Bump swiperefreshlayout from 1.1.0-beta01 to 1.1.0-rc01 (#770) 2020-04-17 20:59:02 +00:00
ee4a5e56a9 Bump gradle from 3.6.2 to 3.6.3 (#772) 2020-04-17 20:37:38 +00:00
c8f8ec77a9 Bump preference-ktx from 1.1.0 to 1.1.1 (#771) 2020-04-17 20:35:24 +00:00
be46a43427 Merge tag '0.17.1' into develop
Version 0.17.1
2020-04-12 19:20:59 +02:00
183e379223 Merge branch 'release/0.17.1' 2020-04-12 19:20:53 +02:00
2350fc2ddf Version 0.17.1 2020-04-12 19:20:44 +02:00
152f966a66 Bump firebase-inappmessaging-display-ktx from 19.0.4 to 19.0.5 (#767) 2020-04-12 17:19:06 +00:00
85ee7fad1d Bump firebase-inappmessaging-ktx from 19.0.4 to 19.0.5 (#768) 2020-04-12 16:58:23 +00:00
3ac085573f Show all known adfslight registers in register list (#766) 2020-04-12 18:55:16 +02:00
64a19d9627 Bump about_libraries from 8.1.0 to 8.1.1 (#769) 2020-04-12 15:14:08 +00:00
76af623c94 Add Sdk.init(student) call in all remote repositories (#764) 2020-04-12 15:13:35 +02:00
11c285be01 Fix homework dialog size (#765) 2020-04-12 15:12:25 +02:00
a0528496eb Fix crash caused by updating view in not attached fragment (#763) 2020-04-09 23:46:42 +02:00
299345b864 Fix crash in message preview (#762) 2020-04-09 23:30:56 +02:00
0a18fefb1f Use recycler view in homework details dialog (#761) 2020-04-08 18:17:20 +02:00
a26f0ec8c8 Merge tag '0.17.0' into develop
Version 0.17.0
2020-04-05 18:42:42 +02:00
232d8d38bd Merge branch 'release/0.17.0' 2020-04-05 18:42:36 +02:00
4833e1e130 Version 0.17.0 2020-04-05 18:35:00 +02:00
bb30cf2ce3 Revert "Add "System theme" option to widgets" (#753) 2020-04-05 18:32:57 +02:00
c9b35bed7e Bump chucker from 3.1.1 to 3.2.0 (#755) 2020-04-05 16:22:50 +00:00
999672fcc3 Bump threetenbp from 1.4.2 to 1.4.3 (#756) 2020-04-05 15:32:18 +00:00
6a0ce3a58d Add force sync feature in settings (#643) 2020-04-05 16:46:49 +02:00
3612326628 Add missing sdk initialization in lucky number repository (#752) 2020-04-04 20:59:44 +02:00
bf61dd1bad Add more details in email template (#751) 2020-04-04 20:57:50 +02:00
18c1153e12 Add mark as done feature in homework (#743) 2020-04-03 17:39:36 +02:00
651be69ad2 Add firebase messaging (#740) 2020-04-02 22:47:10 +02:00
394e3bb79c Add firebase messaging (#740) 2020-04-02 22:43:03 +02:00
502a98b70a Add message attachments (#734) 2020-04-02 20:27:53 +02:00
da357775ff Add better validation to login/email field (#741) 2020-04-02 20:27:14 +02:00
c0adeaadfd Add "System theme" option to widgets (#739) 2020-04-02 20:26:28 +02:00
358c87528a Update gradle to 6.2.2 (#750) 2020-04-02 00:34:24 +02:00
0cb4866f40 Bump appcompat from 1.2.0-alpha03 to 1.2.0-beta01 (#749) 2020-04-01 22:21:25 +00:00
6ec13c896d Bump about_libraries from 8.0.2 to 8.1.0 (#747) 2020-04-01 22:01:41 +00:00
a0587a8bce Bump fragment-ktx from 1.2.3 to 1.2.4 (#748) 2020-04-01 22:00:50 +00:00
184c9413f8 Bump firebase-core from 17.2.3 to 17.3.0 (#746) 2020-04-01 18:58:26 +00:00
6440820dc5 Bump gradle from 3.6.1 to 3.6.2 (#744) 2020-04-01 18:56:41 +00:00
d9322b0df4 Bump aboutlibraries-core from 7.1.0 to 8.0.0 (#731) 2020-03-29 18:55:00 +02:00
b9a19b60e4 Bump appcompat from 1.1.0 to 1.2.0-alpha03 to fix webview crash… (#737) 2020-03-29 14:38:39 +02:00
6f697eff47 Add points to notes (#738) 2020-03-29 14:26:56 +02:00
d9c8bb399b Change strings.xml form from male to impersonal (#736) 2020-03-28 19:51:22 +01:00
2137b6c225 Bump threetenabp from 1.2.2 to 1.2.3 (#735) 2020-03-28 10:56:07 +00:00
0320079d02 Bump chucker from 2.0.4 to 3.1.1 (#733) 2020-03-28 11:44:09 +01:00
95a833ea85 Bump room from 2.2.4 to 2.2.5 (#727) 2020-03-24 22:04:25 +00:00
a85a4fe7a0 Bump kotlin_version from 1.3.70 to 1.3.71 (#732) 2020-03-24 20:30:48 +00:00
f94b8c9be8 Bump threetenbp from 1.4.1 to 1.4.2 (#730) 2020-03-24 19:53:59 +00:00
5dfe9cdd4f Bump work_manager from 2.3.3 to 2.3.4 (#728) 2020-03-24 19:52:47 +00:00
9a83b43d57 Bump fragment-ktx from 1.2.2 to 1.2.3 (#729) 2020-03-24 19:52:33 +00:00
7d21babd38 Bump rxjava from 2.2.18 to 2.2.19 (#726) 2020-03-14 22:25:05 +00:00
f763a42323 Bump mockito-inline from 3.3.1 to 3.3.3 (#725) 2020-03-14 22:20:14 +00:00
478596c4e6 Fix marking message as read in hybrid and mobile api mode (#722) 2020-03-14 23:19:59 +01:00
37842a3603 Bump dagger from 2.26 to 2.27 (#724) 2020-03-14 22:19:47 +00:00
1775e2fe62 Bump mockito-android from 3.3.1 to 3.3.3 (#723) 2020-03-14 22:18:34 +00:00
68b26d5e2b Update gradle-publisher to 2.7.2 (#719) 2020-03-07 13:38:15 +01:00
6304395050 Bump swiperefreshlayout from 1.1.0-alpha03 to 1.1.0-beta01 (#718) 2020-03-05 10:59:07 +00:00
fa3c357665 Bump work_manager from 2.3.2 to 2.3.3 (#717) 2020-03-05 10:58:38 +00:00
83282aeab6 Merge tag '0.16.0' into develop
Version 0.16.0
2020-03-05 09:47:43 +01:00
5de2e9afbd Merge branch 'release/0.16.0' 2020-03-05 09:47:37 +01:00
cd99c6b2aa Version 0.16.0 2020-03-05 09:20:46 +01:00
42aacb755c Add some login help messages (#716) 2020-03-04 22:39:28 +01:00
a880b3a9db Bump kotlin_version from 1.3.61 to 1.3.70 (#715)
Bumps `kotlin_version` from 1.3.61 to 1.3.70.

Updates `kotlin-gradle-plugin` from 1.3.61 to 1.3.70

Updates `kotlin-stdlib-jdk8` from 1.3.61 to 1.3.70
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.3.61...v1.3.70)

Updates `kotlin-test` from 1.3.61 to 1.3.70
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v1.3.61...v1.3.70)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-04 16:39:13 +01:00
7837fae2aa Add German language (#712) 2020-03-03 22:20:57 +01:00
70e9f025bb Replace Creators with Contributors (#675) 2020-03-03 18:07:38 +01:00
ab1d9b358e Change asset name and contributor name (#714) 2020-03-03 18:06:37 +01:00
2634c270b1 Set missing styles to small lesson items (#707) 2020-03-02 22:45:56 +01:00
79bd2fccdf Replace Maybe with Single in Message DAO (#710) 2020-03-02 22:31:55 +01:00
87107ec474 Filter lucky numbers by school shortcut (#708) 2020-03-02 22:22:41 +01:00
8aaa066142 Update Ukrainian language (#711) 2020-03-02 21:31:02 +01:00
5b7d465064 Add Ukrainian language (#709) 2020-03-02 20:56:53 +01:00
75c94865e4 Sort the second group's lessons below the student's lessons (#706) 2020-02-29 23:07:47 +01:00
f294e3d57c Add separate host in login form to login to VULCAN adfslight (#704) 2020-02-29 10:30:20 +01:00
565114a2d2 Update gradle to 6.2.1 (#705) 2020-02-29 02:37:58 +01:00
be057dd63c Show list of charts in grade statistics (#689) 2020-02-29 02:19:48 +01:00
e61c2bced8 Add new notifications categories (#685) 2020-02-29 01:15:26 +01:00
3abfb9f819 Bump gradle from 3.6.0 to 3.6.1 (#702) 2020-02-28 23:19:38 +00:00
7c86fabd7b Bump firebase-core from 17.2.2 to 17.2.3 (#703) 2020-02-28 23:19:00 +00:00
59f2d4b0f3 Bump gradle from 3.5.3 to 3.6.0 (#698) 2020-02-27 21:22:37 +00:00
8571586b0c Bump room from 2.2.3 to 2.2.4 (#694) 2020-02-27 21:11:48 +00:00
e21de811e2 Bump mockito-android from 3.2.4 to 3.3.1 (#696) 2020-02-27 20:35:50 +00:00
7b502ce9a8 Bump mockito-inline from 3.2.4 to 3.3.1 (#693) 2020-02-27 20:35:28 +00:00
33447d2ada Bump fragment-ktx from 1.2.0 to 1.2.2 (#695) 2020-02-27 20:35:05 +00:00
7f6b2ec096 Bump coil from 0.9.4 to 0.9.5 (#699) 2020-02-27 20:33:25 +00:00
2c35117dfa Bump rxjava from 2.2.17 to 2.2.18 (#700) 2020-02-27 20:32:38 +00:00
5b2ca07506 Bump work_manager from 2.3.0 to 2.3.2 (#697) 2020-02-27 20:30:36 +00:00
18d6ec6961 Add account recover (#635) 2020-02-27 00:10:11 +01:00
96c1bb4c69 Automatically switch semesters without sync (#681) 2020-02-24 00:24:40 +01:00
00f5b9431e Add log viewer (#686) 2020-02-22 21:24:06 +01:00
9a87df7315 Respect user settings in timetable app widget (#687) 2020-02-22 20:42:02 +01:00
30e43501ac Refactor the resizing of the lucky number app widget (#682) 2020-02-14 10:04:53 +01:00
34738a4839 Show semester in appbar subtitle in grades view (#684) 2020-02-14 09:58:58 +01:00
1cc2080cb9 Bump material from 1.1.0-rc02 to 1.1.0 (#680) 2020-02-05 00:22:51 +00:00
0826e45a25 Bump coil from 0.9.2 to 0.9.4 (#679) 2020-02-05 00:22:12 +00:00
6925204019 Fix showing empty total summary and ordering of summary months (#678) 2020-02-05 00:53:07 +01:00
bdbf1fe304 Add dynamic nick/email in login (#676) 2020-02-05 00:42:49 +01:00
720a530a6c Disable signed in students in login (#677) 2020-02-04 09:43:24 +01:00
2f56f7e4a4 Bump dagger from 2.25.4 to 2.26 (#673) 2020-02-02 15:50:12 +00:00
c3a6842027 Add total attendance summary (#672) 2020-02-02 16:40:00 +01:00
731afbb00c Fix login more options button in dark theme (#674) 2020-02-02 16:38:14 +01:00
fb3853dc70 Fix timetable_show_whole_class_entries en translation (#668) 2020-01-30 00:13:34 +01:00
ec5503678a Merge tag '0.15.0' into develop
Version 0.15.0
2020-01-26 18:15:16 +01:00
4ab47fef46 Merge branch 'release/0.15.0' 2020-01-26 18:15:12 +01:00
8e17b1d72a Version 0.15.0 2020-01-26 16:52:41 +01:00
ae9b616896 Show points sum in grades details (#664) 2020-01-26 02:16:05 +01:00
1999cd6eaf Visual enhancement of displaying grades point stats (#665) 2020-01-26 01:26:06 +01:00
1e5269c22c Don't hide password toggle button on error (#666) 2020-01-26 01:24:24 +01:00
19f495cba6 Add excusing for absence (#533) 2020-01-25 18:07:25 +01:00
0c5d45717c Bump fragment-ktx from 1.2.0-rc05 to 1.2.0 (#662) 2020-01-24 09:18:54 +00:00
1dbe470391 Bump activity-ktx from 1.1.0-rc03 to 1.1.0 (#661) 2020-01-24 08:59:20 +00:00
7142e05561 Bump work_manager from 2.3.0-rc01 to 2.3.0 (#660) 2020-01-24 08:58:31 +00:00
4640d114f6 Add creators list (#636) 2020-01-22 10:59:13 +01:00
ad3bb3a522 Add option to show only student plan lessons (#654) 2020-01-20 22:18:26 +01:00
e9fa95f113 Bump rxjava from 2.2.16 to 2.2.17 (#656)
Bumps [rxjava](https://github.com/ReactiveX/RxJava) from 2.2.16 to 2.2.17.
- [Release notes](https://github.com/ReactiveX/RxJava/releases)
- [Changelog](https://github.com/ReactiveX/RxJava/blob/v2.2.17/CHANGES.md)
- [Commits](https://github.com/ReactiveX/RxJava/compare/v2.2.16...v2.2.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 21:51:13 +01:00
76a4bacb34 Fix login info autofill (#652) 2020-01-20 21:29:42 +01:00
c5cadbd004 Improve grades dialog layout (#631) 2020-01-20 21:29:06 +01:00
77e7e4e6e9 Bump material from 1.1.0-rc01 to 1.1.0-rc02 (#655) 2020-01-20 20:27:52 +00:00
cc242e1e87 Bump threetenabp from 1.2.1 to 1.2.2 (#657) 2020-01-20 20:27:29 +00:00
e0ec2f8160 Bump firebase-core from 17.2.1 to 17.2.2 (#658) 2020-01-20 20:27:10 +00:00
eb1ce251a0 Bump threetenbp from 1.4.0 to 1.4.1 (#659) 2020-01-20 20:26:53 +00:00
4d1de2d8ce Add debug notification icons (#637) 2020-01-12 14:21:33 +01:00
0af7c00d12 Merge tag '0.14.2' into develop
Version 0.14.2
2020-01-11 20:10:39 +01:00
afaf6c0e56 Merge branch 'release/0.14.2' 2020-01-11 20:10:34 +01:00
e8b4e16382 Version 0.14.2 2020-01-11 20:10:23 +01:00
83a8c857e5 Change color attr in backtround_header_note drawable to color re… (#644) 2020-01-11 20:09:33 +01:00
57e943fb3b Update error_service_unavailable string (#645) 2020-01-11 17:25:13 +01:00
ed310e7764 Merge tag '0.14.1' into develop
Version 0.14.1
2020-01-09 00:53:55 +01:00
16e3a877af Merge branch 'release/0.14.1' 2020-01-09 00:53:51 +01:00
2b5b87fe84 Version 0.14.1 2020-01-09 00:53:32 +01:00
d706c000b9 Add missing translations (#642) 2020-01-09 00:42:16 +01:00
15184550f4 Bump junit from 4.12 to 4.13 (#640) 2020-01-08 23:25:02 +00:00
69a8e35150 Bump logging-interceptor from 3.12.6 to 3.12.7 (#641) 2020-01-08 23:05:59 +00:00
70166d0245 Bump fragment-ktx from 1.2.0-rc04 to 1.2.0-rc05 (#639) 2020-01-08 22:50:35 +00:00
e0657eb5b2 Bump work_manager from 2.3.0-beta02 to 2.3.0-rc01 (#638) 2020-01-08 22:48:37 +00:00
f204264d2d Change grade header note to unread count (#634) 2020-01-04 01:46:42 +01:00
b9378c24b5 Minor translation changes (#630) 2020-01-03 21:12:05 +01:00
8a6ceeb2e4 Bump aboutlibraries from 7.0.4 to 7.1.0 (#633) 2020-01-02 19:42:15 +00:00
a45c7bd3e3 Bump dagger from 2.25.3 to 2.25.4 (#632) 2019-12-31 22:04:35 +00:00
4df245755a Add fields validation in mobile api login (#629) 2019-12-31 17:31:26 +01:00
6be801d4a8 Fix error view which overlaps grade statistics content (#627) 2019-12-30 22:57:48 +01:00
54f3733b56 Merge tag '0.14.0' into develop
Version 0.14.0
2019-12-25 16:52:34 +01:00
4f60673e4e Merge branch 'release/0.14.0' 2019-12-25 16:52:28 +01:00
7bd4fd7cbd Version 0.14.0 2019-12-25 16:52:17 +01:00
65995cdc6c Change Wulkanowy API link to SDK in README (#626) 2019-12-24 16:51:35 +01:00
9d27723f30 Don't copy teacher from previous lesson with changes if new one… (#622) 2019-12-22 20:19:31 +01:00
2e7d2b66f8 Fix lucky number empty screen (#623) 2019-12-22 20:18:48 +01:00
304c49d61e Migration to Wulkanowy SDK (#336) 2019-12-22 00:14:46 +01:00
826ea32fc0 Bump room from 2.2.2 to 2.2.3 (#618) 2019-12-20 10:18:00 +00:00
d70c4fa9fe Bump work_manager from 2.3.0-beta01 to 2.3.0-beta02 (#620) 2019-12-20 09:46:28 +00:00
bc43359467 Bump mockito-inline from 3.2.0 to 3.2.4 (#621) 2019-12-20 09:44:18 +00:00
cf286f3c23 Bump mockito-android from 3.2.0 to 3.2.4 (#619) 2019-12-20 09:27:14 +00:00
57abd43214 Bump fragment-ktx from 1.2.0-rc03 to 1.2.0-rc04 (#617) 2019-12-20 09:24:51 +00:00
90bdc9d157 Bump material from 1.1.0-beta02 to 1.1.0-rc01 (#616) 2019-12-20 09:13:34 +00:00
93bce685bd Bump dagger from 2.25.2 to 2.25.3 (#614) 2019-12-20 09:07:39 +00:00
4639a075b0 Bump rxjava from 2.2.15 to 2.2.16 (#615) 2019-12-20 09:06:52 +00:00
91f63da6d0 Fixed capitalization in the about tab (en) (#613) 2019-12-09 17:35:18 +01:00
3894c9d48e Fixed letter capitalization in the About tab (pl) (#612) 2019-12-09 17:34:58 +01:00
fb40701962 Merge tag '0.13.0' into develop
Version 0.13.0
2019-12-07 23:04:39 +01:00
ff1e794820 Merge branch 'release/0.13.0' 2019-12-07 23:04:26 +01:00
ceba5f7fe8 Version 0.13.0 2019-12-07 23:04:17 +01:00
f570acbed6 Add FAQ link (#611) 2019-12-07 22:06:15 +01:00
2a7a472d90 Bump fragment-ktx from 1.2.0-rc02 to 1.2.0-rc03 (#610) 2019-12-07 16:07:36 +00:00
138fbe5bf5 Bump activity-ktx from 1.1.0-rc02 to 1.1.0-rc03 (#608) 2019-12-07 12:51:40 +00:00
ad99cc75eb Bump gradle from 3.5.2 to 3.5.3 (#609) 2019-12-07 12:51:24 +00:00
f6606e7a4f Bump coordinatorlayout from 1.1.0-rc01 to 1.1.0 (#607) 2019-12-07 12:51:09 +00:00
3690deef1e Bump mockito-android from 3.1.0 to 3.2.0 (#605) 2019-12-02 16:19:20 +00:00
cd1438587d Bump kotlin_version from 1.3.60 to 1.3.61 (#606) 2019-12-02 16:18:56 +00:00
8193a57227 Bump mockito-inline from 3.1.0 to 3.2.0 (#604) 2019-12-02 16:18:27 +00:00
8467f39ad9 Add russian language (#595) 2019-11-29 20:43:37 +01:00
0fc293f47a Bump assisted-inject-processor-dagger2 from 0.5.1 to 0.5.2 (#601) 2019-11-25 17:15:23 +00:00
9b063edb0b Bump rxjava from 2.2.14 to 2.2.15 (#603) 2019-11-25 16:48:56 +00:00
5d852eee87 Bump assisted-inject-annotations-dagger2 from 0.5.1 to 0.5.2 (#602) 2019-11-25 16:48:07 +00:00
54ab408135 Add error view showing on first loading in fragment view (#590) 2019-11-24 17:05:09 +01:00
41aa326f42 Add 0,00 grade modifier (#596) 2019-11-21 17:41:41 +01:00
24f605c71c Bump work_manager from 2.3.0-alpha03 to 2.3.0-beta01 (#600) 2019-11-21 11:00:11 +00:00
5c52dcc74f Bump room from 2.2.1 to 2.2.2 (#599) 2019-11-21 10:31:14 +00:00
667659fbe6 Bump core-ktx from 1.2.0-beta02 to 1.2.0-rc01 (#598) 2019-11-21 10:30:51 +00:00
d467bf096f Bump recyclerview from 1.1.0-rc01 to 1.1.0 (#597) 2019-11-21 10:28:54 +00:00
98d556bcd5 Bump kotlin_version from 1.3.50 to 1.3.60 (#594) 2019-11-18 10:57:50 +01:00
8c730be635 Bump google-services from 4.3.2 to 4.3.3 (#591) 2019-11-18 08:58:17 +00:00
377d24fbb4 Bump sonarqube-gradle-plugin from 2.8 to 2.8.0.1969 (#593) 2019-11-18 08:26:46 +00:00
bde810e031 Fix screens loading state (#589) 2019-11-17 01:07:43 +01:00
2f18d42c86 Update material design components (#587) 2019-11-10 16:45:53 +01:00
c708b0c20e Bump activity-ktx from 1.1.0-rc01 to 1.1.0-rc02 (#586) 2019-11-09 13:35:59 +00:00
ff8d55d4f8 Bump fragment-ktx from 1.2.0-rc01 to 1.2.0-rc02 (#585) 2019-11-09 13:08:02 +00:00
49bf911c84 Bump core-ktx from 1.2.0-beta01 to 1.2.0-beta02 (#584) 2019-11-09 13:07:27 +00:00
9e33ef419f Fix LuckyNumberWidget not showing ThemeDialog (#583) 2019-11-09 13:59:33 +01:00
40e95eac1e Add BaseDao interface (#581) 2019-11-06 23:52:14 +01:00
19e76a0b5d Bump rxjava from 2.2.13 to 2.2.14 (#580) 2019-11-04 19:23:50 +00:00
5feafe3907 Update gradle wrapper (#579) 2019-11-03 15:07:32 +01:00
b7206ed714 Add DatePicker to Timetable and Attendance modules. (#522) 2019-11-03 14:52:35 +01:00
38370d647d Add language change settings (#577) 2019-11-03 12:37:03 +01:00
323bc188b1 Bump assisted-inject-annotations-dagger2 from 0.5.0 to 0.5.1 (#576) 2019-11-01 20:20:09 +00:00
b17356591a Bump assisted-inject-processor-dagger2 from 0.5.0 to 0.5.1 (#575) 2019-11-01 19:50:28 +00:00
a02c444cf5 Merge tag '0.12.0' into develop
0.12.0
2019-10-29 00:25:17 +01:00
87a133beb9 Merge branch 'release/0.12.0' 2019-10-29 00:25:12 +01:00
1f4a208857 Version 0.12.0 2019-10-29 00:25:03 +01:00
a7c472989c Add support for edu.lublin.eu (#571) 2019-10-28 21:10:58 +01:00
747696e386 Bump firebase-core from 17.2.0 to 17.2.1 (#572) 2019-10-28 14:58:10 +00:00
a71a183160 Add school quick actions (#570) 2019-10-27 00:36:39 +02:00
125a010f03 Fix restoring state in exposed dropdown menu (#569) 2019-10-24 22:56:49 +02:00
5c5993cc2a Change FAB to extended FAB in messages (#536) 2019-10-24 18:45:05 +02:00
f234b71932 Bump dagger from 2.24 to 2.25.2 (#564) 2019-10-24 18:24:22 +02:00
497a3391d4 Bump fragment-ktx from 1.2.0-beta02 to 1.2.0-rc01 (#568) 2019-10-24 06:58:42 +00:00
a72c743c6f Bump work_manager from 2.3.0-alpha02 to 2.3.0-alpha03 (#563) 2019-10-24 06:37:24 +00:00
98fdfd001a Bump recyclerview from 1.1.0-beta05 to 1.1.0-rc01 (#566) 2019-10-24 06:17:11 +00:00
994b162ae3 Bump activity-ktx from 1.1.0-beta01 to 1.1.0-rc01 (#567) 2019-10-24 06:16:51 +00:00
90c60f399b Bump coordinatorlayout from 1.1.0-beta01 to 1.1.0-rc01 (#565) 2019-10-24 06:15:58 +00:00
b16b225a1a Bump room from 2.2.0 to 2.2.1 (#562) 2019-10-24 05:55:08 +00:00
7a4cf694ca Add school info (#557)
* Add db layer to school info

* Add base classes

* Add database migration

* Add base view

* Update icon

* Fix textviews height

* Handle error and empty results

* Improve school info look

* Add strings

* Fix action bar elevation in school fragment

* Add missing blank lines

* Reorganize strings

* Make field title first in order

* Make fields views selectable

* Rename SchoolInfo to School
2019-10-21 21:25:15 +02:00
1b492d50fe Bump aboutlibraries from 7.0.3 to 7.0.4 (#559) 2019-10-21 19:23:41 +00:00
d9b5e000f8 Bump gradle from 1.31.1 to 1.31.2 (#560) 2019-10-21 19:23:13 +00:00
7e30524876 Contact info after failed login (#556) 2019-10-20 19:10:32 +02:00
ce9b12eb93 Add system theme setting for Android 10 (#554) 2019-10-16 22:27:16 +02:00
b602657d55 Move default preferences values to separate file (#555) 2019-10-16 20:10:24 +02:00
360dfbcdb5 Update androidx dependencies (#553) 2019-10-15 19:15:28 +02:00
f466497970 Bump recyclerview from 1.1.0-beta04 to 1.1.0-beta05 (#551) 2019-10-11 21:56:19 +00:00
184a7ab200 Bump room from 2.2.0-rc01 to 2.2.0 (#552) 2019-10-11 21:55:28 +00:00
2e5ef7dfa2 Merge tag '0.11.0' into develop
Version 0.11.0
2019-10-07 00:11:59 +02:00
8f617f4ca1 Merge branch 'release/0.11.0' 2019-10-07 00:11:52 +02:00
fe5f96a394 Version 0.11.0 2019-10-07 00:11:33 +02:00
cb9c35d772 Add navigate up to login view (#547) 2019-10-06 22:43:16 +02:00
7cf7977cc6 Bump gson from 2.8.5 to 2.8.6 (#549) 2019-10-06 20:15:53 +00:00
1de747fa35 Add mark as read button enable logic (#534) 2019-10-06 21:25:24 +02:00
93750829d7 Fix duplicate percentage in attendance summary (#548) 2019-10-06 18:21:56 +02:00
798688e7dd Fix multidex in debug variant (#545) 2019-10-05 22:32:55 +02:00
6ab9c1d737 Update mockito to last version from maven central (#546) 2019-10-03 22:47:49 +02:00
b074ce99b7 Bump sonarqube-gradle-plugin from 2.7.1 to 2.8 (#543) 2019-10-03 20:21:43 +00:00
b03fd86be5 Bump gradle from 3.5.0 to 3.5.1 (#542) 2019-10-03 20:08:32 +00:00
3de2f5ff88 Bump githook from 1.1.0 to 1.2.0 (#539) 2019-10-03 19:54:16 +00:00
35adf83154 Bump rxjava from 2.2.12 to 2.2.13 (#538) 2019-10-03 19:43:12 +00:00
0162c8bbee Add better timetable changes display (#513) 2019-10-03 21:13:01 +02:00
736d570f26 Change timetable widget date format (#530) 2019-10-03 15:29:33 +02:00
5b0901e311 Clear Semesters table (#535) 2019-10-03 14:00:07 +02:00
f9474af39e Add points to class grades statistics (#512) 2019-10-03 00:46:08 +02:00
d411d86355 Add click to copy function (#531) 2019-10-02 23:42:38 +02:00
a50c6707cb Update readme badges (#532) 2019-10-01 22:19:28 +02:00
6991c68d3a Bump mockito-core from 3.0.8 to 3.0.11 (#525) 2019-09-30 10:31:07 +00:00
8b1e6f7bd6 Bump play-publisher from 2.4.1 to 2.4.2 (#528) 2019-09-30 10:16:38 +00:00
943fd9c622 Bump logging-interceptor from 3.12.5 to 3.12.6 (#529) 2019-09-30 10:09:57 +00:00
838e2781c0 Bump mockito-inline from 3.0.8 to 3.0.11 (#526) 2019-09-30 10:05:54 +00:00
66cfd7b52c Bump mockito-android from 3.0.8 to 3.0.11 (#527) 2019-09-30 10:04:50 +00:00
a45bc0eef6 Add teachers (#489) 2019-09-29 18:09:53 +02:00
ed7996299e Improve date navigation (#519) 2019-09-28 20:37:14 +02:00
d4b73fb73e Add dark theme for app widgets (#509) 2019-09-25 22:44:55 +02:00
d6ece78eff Bump mockito-android from 3.0.7 to 3.0.8 (#518) 2019-09-22 11:03:41 +00:00
2f44f3c4ba Bump gradle from 1.31.0 to 1.31.1 (#517) 2019-09-22 10:55:34 +00:00
23b49e4b8c Bump mockito-inline from 3.0.7 to 3.0.8 (#516) 2019-09-22 10:50:21 +00:00
5d33cefe1d Bump mockito-core from 3.0.7 to 3.0.8 (#515) 2019-09-22 10:49:39 +00:00
6089df9462 Fix wrong index in form host value (#507) 2019-09-16 23:27:58 +02:00
3ee98e2bd0 Fix privacy link position on small screens (#508) 2019-09-16 23:13:46 +02:00
53a5d02051 Fix attendance_excused_lateness pl typo (#511) 2019-09-16 23:06:37 +02:00
e332fd9cf9 Bump logging-interceptor from 3.12.4 to 3.12.5 (#510) 2019-09-16 08:29:32 +00:00
7232938c12 Update API 28 to API 29 (#506) 2019-09-12 16:36:32 +02:00
fd02f2253b Merge tag '0.10.2' into develop
Version 0.10.2
2019-09-10 13:01:52 +02:00
12046ef0a0 Merge branch 'release/0.10.2' 2019-09-10 13:01:38 +02:00
dfc84b4208 Version 0.10.2 2019-09-10 12:58:27 +02:00
f5f11d5130 Fix login in symbol view (#493) 2019-09-10 12:25:08 +02:00
81ce328abd Bump recyclerview from 1.1.0-beta03 to 1.1.0-beta04 (#504) 2019-09-09 14:05:04 +00:00
867951136a Bump gradle-play-publisher from cdaeb61 to 2.4.0 (#501) 2019-09-09 13:43:55 +00:00
8b41ab27bd Bump mockito-core from 3.0.6 to 3.0.7 (#502) 2019-09-09 09:25:52 +00:00
e542ef003c Bump mockito-android from 3.0.6 to 3.0.7 (#503) 2019-09-09 08:54:03 +00:00
a5f212e6be Bump room from 2.2.0-beta01 to 2.2.0-rc01 (#499) 2019-09-09 08:39:39 +00:00
385a320536 Bump google-services from 4.3.1 to 4.3.2 (#498) 2019-09-09 08:25:51 +00:00
e65000ec2c Bump mockito-inline from 3.0.6 to 3.0.7 (#497) 2019-09-09 08:25:29 +00:00
c87de7b3c2 Bump logging-interceptor from 3.12.3 to 3.12.4 (#496) 2019-09-09 08:23:22 +00:00
bb6023709f Fix grade details header unread info (#494) 2019-09-08 15:10:29 +02:00
e998e54d3e Merge tag '0.10.1' into develop
Version 0.10.1
2019-09-07 02:25:22 +02:00
e269886eae Merge branch 'release/0.10.1' 2019-09-07 02:25:12 +02:00
dabb83c522 Version 0.10.1 2019-09-07 02:23:44 +02:00
6350b72e23 Fix account icon color in widgets (#488) 2019-09-06 18:23:51 +02:00
e4100d940a Fix crashing tab layout on prelolipop (#492) 2019-09-06 13:55:26 +02:00
6575674169 Fix about_feedback_summary typo (#487) 2019-09-05 18:57:37 +02:00
a13aad984c Merge tag '0.10.0' into develop
Version 0.10.0
2019-09-04 22:59:40 +02:00
750fa9a76d Merge branch 'release/0.10.0' 2019-09-04 22:59:26 +02:00
d0ad4d9364 Version 0.10.0 2019-09-04 22:58:53 +02:00
4e0f41dcb2 Change marking current student in accounts dialog (#486) 2019-09-04 21:19:05 +02:00
c3bb489851 Mitigate disappearing teachers in timetable (#485) 2019-09-04 20:45:34 +02:00
e64e6676f3 Fix status bar color on xiaomi (#484) 2019-09-04 13:52:55 +02:00
108440b1ca Reduce grade color saturations (#482) 2019-09-03 22:43:17 +02:00
d54f5ed1aa Bump aboutlibraries from 7.0.2 to 7.0.3 (#480) 2019-09-03 22:39:05 +02:00
0aac6459f3 Fix elevation overlay on pre-lolipop (#475) 2019-09-02 12:56:13 +02:00
bb9ea7eda1 Fix spaming NoCurentStudentException (#476) 2019-09-02 12:38:09 +02:00
455b04f183 Fix empty hosts list after activity recreating (#477) 2019-09-02 10:05:42 +02:00
39fb4f5def Update dependencies (#474) 2019-09-01 13:24:21 +02:00
c60428e29b Add outline icons (#328) 2019-08-30 12:00:34 +02:00
5413ecabb4 Bump firebase-core from 17.1.0 to 17.2.0 (#473) 2019-08-28 17:03:51 +00:00
c6d9dfa0c9 Change app theme (#330) 2019-08-26 20:54:20 +02:00
b0033af048 Bump rxjava from 2.2.11 to 2.2.12 (#472) 2019-08-26 13:11:35 +00:00
405d37e822 Bump play-publisher from 2.2.1 to 2.3.0 (#446) 2019-08-23 18:57:45 +00:00
0d514b7dc9 Bump gradle from 3.4.2 to 3.5.0 (#469) 2019-08-23 18:37:05 +00:00
c3596aa45c Bump reactivenetwork-rx2 from 3.0.4 to 3.0.6 (#468) 2019-08-23 11:50:18 +00:00
d34bdb2ce3 Bump google-services from 4.3.0 to 4.3.1 (#470) 2019-08-23 11:49:51 +00:00
c91870cc04 Bump kotlin_version from 1.3.41 to 1.3.50 (#471) 2019-08-23 11:35:31 +00:00
2f6862967e Bump mockito-core from 3.0.5 to 3.0.6 (#466) 2019-08-20 10:24:11 +00:00
7525395665 Bump mockito-inline from 3.0.5 to 3.0.6 (#465) 2019-08-20 10:07:52 +00:00
657e2b280e Bump mockito-android from 3.0.5 to 3.0.6 (#467) 2019-08-20 10:06:40 +00:00
4ea9be582f Bump mockito-core from 3.0.4 to 3.0.5 (#464) 2019-08-19 09:16:34 +00:00
3dcc8247bf Bump mockito-inline from 3.0.4 to 3.0.5 (#463) 2019-08-19 08:50:35 +00:00
c45b7c04b9 Bump mockito-android from 3.0.4 to 3.0.5 (#462) 2019-08-19 08:42:55 +00:00
33d6ae8afc Bump firebase-core from 17.0.1 to 17.1.0 (#461) 2019-08-19 08:42:26 +00:00
6871606bef Bump work_manager from 2.1.0 to 2.2.0 (#460) 2019-08-17 18:31:53 +02:00
6e266acec9 Merge tag '0.9.4' into develop
0.9.4
2019-08-12 23:18:04 +02:00
ba84f2be6e Merge branch 'release/0.9.4' 2019-08-12 23:17:57 +02:00
db7b7dbadf Version 0.9.4 2019-08-12 23:17:02 +02:00
6bd07d2651 Fix day/week navigation on holiday (#459) 2019-08-12 12:17:39 +02:00
070fba734c Bump assisted-inject-annotations-dagger2 from 0.4.0 to 0.5.0 (#458) 2019-08-09 12:04:05 +00:00
72ef366829 Bump assisted-inject-processor-dagger2 from 0.4.0 to 0.5.0 (#457) 2019-08-09 11:28:33 +00:00
4adfb268a3 Update gitignore (#455) 2019-08-08 17:40:23 +02:00
bf0ea1b012 Bump reactivenetwork-rx2 from 3.0.3 to 3.0.4 (#456) 2019-08-07 17:09:26 +00:00
1267a39e32 Bump rxjava from 2.2.10 to 2.2.11 (#454) 2019-08-02 11:01:28 +00:00
462b917832 Bump mockito-core from 3.0.2 to 3.0.4 (#451) 2019-07-29 07:34:21 +00:00
c5b16bb0d0 Bump mockito-android from 3.0.2 to 3.0.4 (#450) 2019-07-29 07:04:29 +00:00
91268dcc67 Bump mockito-inline from 3.0.2 to 3.0.4 (#452) 2019-07-29 07:02:15 +00:00
13f9981be6 Bump dagger from 2.23.2 to 2.24 (#449) 2019-07-28 12:41:29 +02:00
f9b3bd7b3a Bump gradle from 1.30.0 to 1.31.0 (#448) 2019-07-26 08:14:13 +00:00
39916c2796 Update README (#447) 2019-07-17 13:41:47 +02:00
03f5ddaf0d Bump work_manager from 2.0.1 to 2.1.0 (#441) 2019-07-12 12:50:56 +00:00
ea4f55c06d Bump gradle from 1.29.0 to 1.30.0 (#443) 2019-07-12 08:48:33 +00:00
5b0232f77e Bump mockito-inline from 3.0.1 to 3.0.2 (#442) 2019-07-12 08:47:36 +00:00
0b68091e55 Bump mockito-android from 3.0.1 to 3.0.2 (#444) 2019-07-12 08:47:11 +00:00
7136c9282e Bump mockito-core from 3.0.1 to 3.0.2 (#445) 2019-07-12 08:46:52 +00:00
09303153a5 Bump firebase-core from 17.0.0 to 17.0.1 (#440) 2019-07-12 08:44:52 +00:00
bdf0fba95b Bump gradle from 3.4.1 to 3.4.2 (#438) 2019-07-10 07:22:59 +00:00
86f24e5821 Group dependencies versions in variables (#437) 2019-07-09 13:33:36 +02:00
35f094b983 Bump kotlin_version from 1.3.40 to 1.3.41 (#433) 2019-07-09 07:45:20 +00:00
12cf1e0b66 Bump mockito-inline from 2.28.2 to 3.0.1 (#434) 2019-07-09 07:40:24 +00:00
68b37fc5dd Bump mockito-android from 2.28.2 to 3.0.1 (#435) 2019-07-09 07:22:24 +00:00
ba5bad042a Bump mockito-core from 2.28.2 to 3.0.1 (#436) 2019-07-09 07:21:54 +00:00
c5323ee811 Bump google-services from 4.2.0 to 4.3.0 (#432) 2019-06-28 18:29:30 +00:00
df9c685217 Bump frag-nav from 3.2.0 to 3.3.0 (#430) 2019-06-26 11:44:23 +00:00
73fa21d45f Bump firebase-core from 16.0.9 to 17.0.0 (#423) 2019-06-21 14:06:24 +00:00
344fa1bbd7 Increase min SDK to 16 (#429) 2019-06-21 14:54:10 +02:00
01318c8c29 Bump rxjava from 2.2.9 to 2.2.10 (#428) 2019-06-21 10:08:49 +00:00
851486df28 Bump dagger-android-support from 2.23.1 to 2.23.2 (#424) 2019-06-20 22:00:35 +00:00
d8b3c5d9d6 Bump dagger-android-processor from 2.23.1 to 2.23.2 (#425) 2019-06-20 21:43:05 +00:00
2883b21ddf Bump dagger-compiler from 2.23.1 to 2.23.2 (#426) 2019-06-20 21:22:57 +00:00
4956cf3988 Bump kotlin_version from 1.3.31 to 1.3.40 (#427) 2019-06-20 21:17:57 +00:00
bdbcec786a Merge tag '0.9.3' into develop
0.9.3
2019-06-15 01:14:04 +02:00
c40bbf2398 Merge branch 'release/0.9.3' 2019-06-15 01:13:50 +02:00
08ecbb5341 Version 0.9.3 2019-06-15 01:13:36 +02:00
e38e458386 Fix crash on login when error message is null (#420) 2019-06-15 00:51:54 +02:00
14674b7778 Bump room-testing from 2.1.0-rc01 to 2.1.0 (#417) 2019-06-13 22:33:12 +00:00
c6f0588165 Bump room-compiler from 2.1.0-rc01 to 2.1.0 (#415) 2019-06-13 22:12:23 +00:00
7591af0de1 Bump room-rxjava2 from 2.1.0-rc01 to 2.1.0 (#411) 2019-06-13 21:52:32 +00:00
cbfed09b52 Bump room-runtime from 2.1.0-rc01 to 2.1.0 (#419) 2019-06-13 21:29:47 +00:00
5c185c5eca Merge branch 'release/0.9.2' 2019-06-08 11:38:42 +02:00
4a026e4a70 Merge tag '0.9.2' into develop
0.9.2 0.9.2
2019-06-08 11:38:42 +02:00
0bccbc6011 Version 0.9.2 2019-06-08 11:38:06 +02:00
ed6a0f8cd0 Add StackOverflowError to RxJava's error handler (#408) 2019-06-07 21:38:53 +02:00
58d5e4da0e Fix showing empty view in mobile device view (#407) 2019-06-07 19:03:26 +02:00
ba6fb1a4b9 Fix update of grades in GradeDetailsFragment (#406) 2019-06-07 14:46:11 +02:00
b6b862d4c3 Organize AndroidX libraries (#404) 2019-06-07 14:12:52 +02:00
9b044a19fe Fix typo in service interval (#405) 2019-06-06 22:47:45 +02:00
7485cb2a39 Fix change of worker specs after app update (#402) 2019-06-06 22:32:43 +02:00
75122d0dcd Fix crash TabLayout on Android 4.x in new version of material components (#403) 2019-06-06 19:16:00 +02:00
39af56484b Bump threetenabp from 1.2.0 to 1.2.1 (#401) 2019-06-04 11:23:50 +00:00
05f7e1d115 Merge tag '0.9.1' into develop
Version 0.9.1
2019-06-04 02:44:04 +02:00
9cd5377438 Merge branch 'release/0.9.1' 2019-06-04 02:43:54 +02:00
7a61b233f0 Version 0.9.1 2019-06-04 02:43:50 +02:00
83dbd9874e Add option to force calc average by app (#400) 2019-06-04 02:27:15 +02:00
1d9a49d552 Add githook plugin (#398) 2019-06-04 01:53:20 +02:00
6175081b88 Fix tab layout crash on prelolipop (#399) 2019-06-03 22:47:35 +02:00
116e551186 Merge tag '0.9.0' into develop
0.9.0 0.9.0
2019-06-03 18:15:42 +02:00
713500d892 Merge branch 'release/0.9.0' 2019-06-03 18:15:41 +02:00
dfdbe374c2 Version 0.9.0 2019-06-03 18:15:11 +02:00
b1e3bab5e7 Add F-Droid flavor (#349) 2019-06-03 14:12:48 +02:00
0b2ef367da Change timeout string (#397) 2019-06-03 13:15:21 +02:00
28f27db2b5 Add mobile access managment (#344) 2019-06-03 00:43:54 +02:00
5c70cd8b8c Add session expired dialog after password change (#389) 2019-05-31 15:12:10 +02:00
0f75ff3206 Show grades average from register if exist instead of calculating (#374) 2019-05-31 14:40:53 +02:00
383cab4dae Fix only wifi setting (#394) 2019-05-31 13:46:53 +02:00
e1b0db76c2 Bump material from 1.1.0-alpha06 to 1.1.0-alpha07 (#393) 2019-05-31 11:46:29 +02:00
f10684097c Bump dagger-compiler from 2.23 to 2.23.1 (#391) 2019-05-31 02:02:09 +00:00
35d4342bec Bump dagger-android-processor from 2.23 to 2.23.1 (#392) 2019-05-31 01:42:40 +00:00
068aee215a Bump dagger-android-support from 2.23 to 2.23.1 (#390) 2019-05-31 01:19:26 +00:00
033074c66b Bump room-testing from 2.1.0-beta01 to 2.1.0-rc01 (#377) 2019-05-30 16:46:54 +02:00
0de534cb66 Bump room-rxjava2 from 2.1.0-beta01 to 2.1.0-rc01 (#385) 2019-05-30 16:46:28 +02:00
26e4619dde Bump room-runtime from 2.1.0-beta01 to 2.1.0-rc01 (#388) 2019-05-30 14:06:06 +00:00
cf08d1ff24 Bump mockito-core from 2.28.1 to 2.28.2 (#387) 2019-05-30 13:58:42 +00:00
96c400a0bd Bump runner from 1.1.1 to 1.2.0 (#386) 2019-05-30 13:50:28 +00:00
e238f65dde Bump rxjava from 2.2.8 to 2.2.9 (#381) 2019-05-30 15:22:15 +02:00
ba7966125b Bump dagger-compiler from 2.22.1 to 2.23 (#380) 2019-05-30 12:01:15 +00:00
1536208e45 Bump core from 1.1.0 to 1.2.0 (#383) 2019-05-30 11:46:56 +00:00
24cc07264a Bump dagger-android-support from 2.22.1 to 2.23 (#384) 2019-05-30 11:31:22 +00:00
1ad5232520 Bump mockito-inline from 2.28.1 to 2.28.2 (#382) 2019-05-30 11:29:13 +00:00
07f3333029 Bump mockito-android from 2.28.1 to 2.28.2 (#379) 2019-05-30 11:12:44 +00:00
214afb82a6 Bump junit from 1.1.0 to 1.1.1 (#378) 2019-05-30 11:05:05 +00:00
7a69710261 Bump dagger-android-processor from 2.22.1 to 2.23 (#376) 2019-05-30 10:54:26 +00:00
64d3afbdb3 Bump room-compiler from 2.1.0-beta01 to 2.1.0-rc01 (#375) 2019-05-30 10:53:35 +00:00
387e46f72d Bump mockito-inline from 2.27.5 to 2.28.1 (#372) 2019-05-29 00:16:10 +00:00
89acc2f384 Bump mockito-android from 2.27.5 to 2.28.1 (#373) 2019-05-28 23:59:19 +00:00
4ef1439878 Bump mockito-core from 2.27.2 to 2.28.1 (#371) 2019-05-29 01:57:19 +02:00
6efd170e03 Bump mockito-inline from 2.27.0 to 2.27.5 (#367) 2019-05-28 14:57:39 +00:00
82cd39329a Bump mockito-android from 2.27.0 to 2.27.5 (#354) 2019-05-28 14:22:24 +00:00
b38e0d04e7 Bump threetenbp from 1.3.8 to 1.4.0 (#366) 2019-05-28 14:41:48 +02:00
90b2ffe250 Bump logging-interceptor from 3.12.1 to 3.12.3 (#369)
Bumps logging-interceptor from 3.12.1 to 3.12.3.
2019-05-28 14:41:27 +02:00
33951dff54 Bump crashlytics from 2.9.9 to 2.10.1 (#365) 2019-05-28 11:30:42 +00:00
9ced00c4d7 Bump room-runtime from 2.1.0-alpha07 to 2.1.0-beta01 (#364) 2019-05-28 11:06:56 +00:00
2ac1638911 Bump room-testing from 2.1.0-alpha07 to 2.1.0-beta01 (#363) 2019-05-28 10:48:37 +00:00
463a7e2744 Bump gradle from 1.28.1 to 1.29.0 (#355)
Bumps gradle from 1.28.1 to 1.29.0.
2019-05-28 02:24:36 +02:00
d14382f3b4 Bump firebase-core from 16.0.8 to 16.0.9 (#358)
Bumps firebase-core from 16.0.8 to 16.0.9.
2019-05-28 00:58:09 +02:00
efa0b19cc1 Bump room-rxjava2 from 2.1.0-alpha07 to 2.1.0-beta01 (#357)
Bumps room-rxjava2 from 2.1.0-alpha07 to 2.1.0-beta01.
2019-05-28 00:39:12 +02:00
7cb893a254 Bump play-publisher from 2.2.0 to 2.2.1 (#356)
Bumps play-publisher from 2.2.0 to 2.2.1.
2019-05-28 00:37:06 +02:00
f7371f7b73 Bump room-compiler from 2.1.0-alpha07 to 2.1.0-beta01 (#350)
Bumps room-compiler from 2.1.0-alpha07 to 2.1.0-beta01.
2019-05-27 23:04:12 +02:00
9c626ad517 Bump reactivenetwork-rx2 from 3.0.2 to 3.0.3 (#351)
Bumps [reactivenetwork-rx2](https://github.com/pwittchen/ReactiveNetwork) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/pwittchen/ReactiveNetwork/releases)
- [Changelog](https://github.com/pwittchen/ReactiveNetwork/blob/RxJava2.x/CHANGELOG.md)
- [Commits](https://github.com/pwittchen/ReactiveNetwork/commits)
2019-05-27 22:58:17 +02:00
9c4c6b0192 Bump material from 1.1.0-alpha05 to 1.1.0-alpha06 (#353)
Bumps [material](https://github.com/material-components/material-components-android) from 1.1.0-alpha05 to 1.1.0-alpha06.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.1.0-alpha05...1.1.0-alpha06)
2019-05-27 22:49:16 +02:00
8efc4d750d Bump sonarqube-gradle-plugin from 2.7 to 2.7.1 (#352)
Bumps sonarqube-gradle-plugin from 2.7 to 2.7.1.
2019-05-27 22:41:16 +02:00
e4a6caa13e Version 0.8.4 2019-05-27 18:13:20 +02:00
209e75160a Fix network constraint in background sync (#348) 2019-05-25 14:34:17 +02:00
153e026a8d Version 0.8.3 2019-05-20 00:21:30 +02:00
8731c2e1f2 Change help text when entering the symbol to a more precise one (#345) 2019-05-19 22:47:57 +02:00
0977282a4b Fix no current student in services after logout all accounts (#342) 2019-05-18 23:42:47 +02:00
667c4b6af7 Fix empty maybe when loading message content (#343) 2019-05-18 23:32:37 +02:00
1f5088cfc9 Don't copy teacher from previous lesson to completed (#341) 2019-05-18 13:03:38 +02:00
bf6b857a3e Fix null returns in widgets (#340) 2019-05-18 00:22:07 +02:00
80cb94c434 Version 0.8.2 2019-05-15 19:26:25 +02:00
0cb4eda32b Fix crash on reselecting fragment (#339) 2019-05-15 15:11:28 +02:00
d169f964f2 Fix crash when no webview activity (#338) 2019-05-14 11:45:27 +02:00
103ab95c80 Fix not attached fragment (#337)
* Add condition for error dialog
* Add safe call of forEach in LuckyNumberWidgetProvider
2019-05-09 22:06:11 +02:00
a191f03cdf Version 0.8.1 2019-04-30 23:56:22 +02:00
63404b8576 Fix entity list comparing (#335) 2019-04-30 19:04:05 +02:00
1b7760ff88 Fix dark theme background with custom theme engine (#334) 2019-04-30 17:45:37 +02:00
24f58835e7 Fix menu view initialization and restoration (#333) 2019-04-30 17:28:09 +02:00
b032c459d1 Fix theme on release build (#332) 2019-04-30 11:16:23 +02:00
df0a1e59cc Version 0.8.0 2019-04-29 20:39:35 +02:00
dbbc8069b1 Add showing proper fragment in notifications (#331) 2019-04-29 19:56:23 +02:00
f84040109c Add lucky number widget (#292) 2019-04-29 14:33:33 +02:00
baf1420193 Improve login student selection layout (#329) 2019-04-29 00:55:30 +02:00
4a36d78709 Add activity and fragment lifecycle logging (#327) 2019-04-26 23:53:02 +02:00
4464812651 Fix configure activity's theme (#325) 2019-04-22 09:27:25 +02:00
72a35481e5 Fix showing last message after update (#326) 2019-04-22 09:13:26 +02:00
017c200115 Fix grade summary final grade string (#324) 2019-04-20 22:19:06 +02:00
2bf7755157 Add AMOLED mode (#279) 2019-04-19 23:52:34 +02:00
269af4b7ba Update dependencies (#323) 2019-04-18 16:38:49 +02:00
7431738366 Add a selection of multiple students to login (#318) 2019-04-18 12:18:58 +02:00
034b99c7ab Add counting of the full-year average to the summary of grades (#322) 2019-04-18 00:32:43 +02:00
74e98e4430 Change style of privacy policy link (#321) 2019-04-09 23:33:53 +02:00
cbf3215dd1 Merge branch '0.7.x' 2019-04-08 13:51:02 +02:00
c18877466f Add account picker for timetable widget (#314)
Close #281
2019-04-08 00:18:45 +02:00
6cd6cae1e0 Version 0.7.6 2019-04-07 11:08:46 +02:00
333f7bfa16 Add privacy policy link (#320) 2019-04-07 10:59:27 +02:00
aa6dcaff94 Merge branch '0.7.x' 2019-04-06 01:18:03 +02:00
f2fa04105d Version 0.7.5 2019-04-06 01:06:11 +02:00
7d97d71066 Fix message loading if student and parent are logged in (#319)
Fixes #316
2019-04-05 19:35:21 +02:00
8daea5c900 Add class name to student (#315) 2019-04-04 13:00:07 +02:00
2bff468e56 Add deleting messages (#290) 2019-03-31 22:01:04 +02:00
f2855d598d Merge branch '0.7.x' 2019-03-30 20:19:34 +01:00
297a2909ba Version 0.7.4 2019-03-30 19:45:57 +01:00
935bec3f5b Add 0,75 grade modifier (#313) 2019-03-30 19:26:19 +01:00
e71dd55066 Fix more than one current semester (#307) 2019-03-30 18:28:37 +01:00
4e3864f26f Add opening login view on no current student (#312) 2019-03-30 09:31:30 +01:00
8601093725 Again fix rejected execution in sync worker (#310) 2019-03-28 23:30:30 +01:00
b97b94ae29 Fix more than one current student (#311)
Fix #309
2019-03-28 23:07:59 +01:00
c6c7357623 Fix black spinner in login form (#308) 2019-03-28 18:27:17 +01:00
1ebc296bfe Merge branch '0.7.x' 2019-03-26 21:22:17 +01:00
c2ab53cfeb Version 0.7.3 2019-03-26 19:46:59 +01:00
87268b3ef6 Fix rejected execution in sync worker (#305) 2019-03-26 16:47:14 +01:00
b3cd7e8ac1 Fix undeliverable network exceptions (#306)
* Remove unnecessary this
2019-03-26 14:32:23 +01:00
a2a18e5652 Merge branch '0.7.x' 2019-03-24 23:22:44 +01:00
5a997dacb7 Version 0.7.2 2019-03-24 22:42:09 +01:00
ed9458d9a5 Fix more than one current semester in database (#304) 2019-03-24 20:21:05 +01:00
3656d3161f Fix crash on duplicate items (#303) 2019-03-24 17:31:39 +01:00
d178c15d2f Update dependencies (#302) 2019-03-24 16:03:51 +01:00
1f65b8465e Add logging to sync worker (#300) 2019-03-23 18:35:56 +01:00
6bb03b3be8 Fix day navigation unevenition (#301) 2019-03-23 17:29:34 +01:00
68b9847927 Fix reselecting root fragments (#299) 2019-03-23 16:35:33 +01:00
e1a83927c4 Fix reset button in timetable widget (#298) 2019-03-23 14:44:52 +01:00
fc9981aa5d Fix issues when loading lucky number (#297) 2019-03-23 13:01:01 +01:00
2d6610e05c Set max concurrency in sync worker (#296) 2019-03-23 01:12:17 +01:00
316cd2f7f9 Add checking current student in background services (#295) 2019-03-23 00:37:13 +01:00
36785f019a Fix restoring the grade fragment (#293) 2019-03-22 23:54:58 +01:00
4b78862486 Remove retry sync work when completed lessons is disabled (#294) 2019-03-22 23:41:41 +01:00
cd1ceea860 Add messages forwarding (#288) 2019-03-21 22:55:47 +01:00
20d0abba29 Fix empty container id in grade fragemnt adapter (#289) 2019-03-21 22:34:41 +01:00
5add95ece1 Version 0.7.1 2019-03-20 21:02:09 +01:00
575e244b3a Add swipe refresh to grade fragment (#287) 2019-03-20 20:45:26 +01:00
8db73e9459 Fix the application finish after selecting an account (#286) 2019-03-19 18:14:55 +01:00
040857ba20 Change grade weightValue type to double (#285) 2019-03-19 13:23:52 +01:00
4b0f0de52c Version 0.7.0 2019-03-17 21:20:37 +01:00
ba76453e45 Add replying to messages (#263) 2019-03-17 21:02:41 +01:00
824ed3f282 Centre the login form (#283) 2019-03-17 19:57:25 +01:00
d27d069ce2 Change homework view to weekly (#284) 2019-03-17 00:17:16 +01:00
38aa26a3ff Add homepage button in about fragment (#280) 2019-03-16 14:22:51 +01:00
be807cb6c8 Change settings for checking the internet connection (#282) 2019-03-15 21:33:14 +01:00
35f1fe8d61 Follow current grade scheme in stats chart (#277) 2019-03-12 17:34:04 +01:00
2621e5680d Improve the display of changes in the timetable (#275)
Closes #264
2019-03-11 20:56:47 +01:00
475e7dd6a3 Update dependencies (#274) 2019-03-10 20:18:40 +01:00
feb38b97e4 Change login progress bars (#272) 2019-03-10 11:57:11 +01:00
f773310cdb Disable swipe to refresh on data loading (#270) 2019-03-09 21:40:20 +01:00
f21feabc49 Add debug notification for worker (#271) 2019-03-09 20:34:30 +01:00
ca23f92096 Add missing text when no grade description (#269) 2019-03-09 17:16:30 +01:00
919680c766 Migration to WorkManager (#254)
Closes #241
2019-03-09 10:13:36 +01:00
722f8d691a Fix timetable widget automatic day switching (#267) 2019-03-07 16:38:34 +01:00
4f0021919c Fix grade stats loading issues (#266) 2019-03-07 13:08:59 +01:00
1b7db4bfbb Mitigate disappearing room numbers in timetable (#265) 2019-03-07 13:08:11 +01:00
dcab8df4b9 Add grade statistics (#251) 2019-03-04 12:13:37 +01:00
cae4f140e6 Add option to change grade (background) color scheme (#259) 2019-03-03 15:11:20 +01:00
1b30b00bb8 Settings rename view section (#262) 2019-03-02 19:55:32 +01:00
514d1e11aa Update grade colors (#231) 2019-03-02 19:41:38 +01:00
66bd566526 Update login error message (#260) 2019-03-02 19:18:26 +01:00
e910c7a48e Mitigate notifications from old grades (#258)
Fixes #257
2019-03-02 19:15:37 +01:00
f8ee5cb062 Add lucky number logging (#256) 2019-02-24 19:23:03 +01:00
c72c301039 Add sending messages (#232) 2019-02-24 15:11:32 +01:00
5ba12cf8c6 Fill login credentials with default values upon fakelog selection (#255)
Resolves #245
2019-02-23 14:39:22 +01:00
82d7cf94e8 Mark as read items older than student registration date (#253) 2019-02-20 15:34:24 +01:00
c365564a77 Login form style fix (#252) 2019-02-17 19:15:26 +01:00
5526691cb6 Fix timetable widget crash on update (#250) 2019-02-17 17:32:22 +01:00
1d7585071d Update login form to Material Design 2 (#229) 2019-02-17 00:42:09 +01:00
11b6c00e4a Entities unification (#248)
* Remove default entieties params

* Change var to vals

* Fix indent in data classes

* Change message unread to val

* Make all fields in Message non-nullable

* Add destructive db migrations #246

* Fix password decrypting

* Fix tests

* Fix student logout

* Use orEmpty() on nullable strings

* Use var in Student password and Message unread
2019-02-16 21:20:23 +01:00
c56cfec564 Apply ripple effect on grade details header only if item is expandable (#239)
Resolves #234
2019-02-14 22:23:52 +01:00
f305a7a599 Sort repositories (#244) 2019-02-13 21:44:40 +01:00
ad9b6d42f0 Fix no current student (#243) 2019-02-13 20:49:19 +01:00
297502056c Add completed lessons (#236) 2019-02-13 19:21:27 +01:00
52ed7dcb6c Fix lucky number crash (#242) 2019-02-13 14:10:21 +01:00
9fcf245ecd Fix uninitialized fragment after restoring the activity (#237) 2019-02-12 00:41:02 +01:00
1b1f2ae3bb Split login form for two fragments (#230) 2019-02-11 02:04:24 +01:00
2f87779647 Add Firebase Analytics for the loaded lucky number (#233) 2019-02-05 18:18:49 +01:00
79093ca6f2 Merge branch '0.6.x' 2019-01-26 00:04:11 +01:00
7f162441e2 Version 0.6.6 2019-01-25 22:12:19 +01:00
4da812af39 Add lucky numbers (#216) 2019-01-25 20:54:27 +01:00
43f6048c27 Upgrade to Gradle Play Publisher v2 (#228) 2019-01-25 20:41:03 +01:00
ffc2ef9a4e Remove renaming source file in R8 (#227) 2019-01-25 19:20:13 +01:00
d3c13b8fc3 Fix empty fragment list in fragment manager (#226) 2019-01-24 21:16:22 +01:00
c78fb83774 Fix receiving a lot of notifications after turning them off for a while (#225) 2019-01-24 18:32:51 +01:00
941765a3a3 Fix empty Maybe in student repository (#224) 2019-01-23 18:28:51 +01:00
189830e0f4 Version 0.6.5 2019-01-20 23:38:02 +01:00
2061d6408f Change icon of semester switch (#223) 2019-01-20 23:36:16 +01:00
e29886560e Disable obfuscate in R8 (#222) 2019-01-20 22:43:50 +01:00
20d9313257 Version 0.6.4 2019-01-20 15:39:11 +01:00
8476f0e62e Update dependencies (#221) 2019-01-20 15:00:33 +01:00
a174ae998d Add api initialization to the message repository (#220) 2019-01-20 14:16:24 +01:00
c5bab52fa2 Add more logging (#219) 2019-01-19 23:15:14 +01:00
e6d60e670e Fix crash on duplicate notes (#218) 2019-01-18 19:10:14 +01:00
c0ddd82e03 Fix exam_no_items english translation (#217)
Changed `exam_no_items` from **No exams in this week** to **No exams this week**
2019-01-18 12:41:11 +01:00
28f1430be0 Fix crash on Meizu devices (#215) 2019-01-13 23:53:01 +01:00
840b21a213 Fix dialog state (#214) 2019-01-13 23:25:07 +01:00
65230a31ec Version 0.6.3 2019-01-12 14:41:23 +01:00
c2bcbfaaa9 Add grade id to equals (#213) 2019-01-12 14:16:59 +01:00
c3d354cd5b Add chucker okhttp inspector (#205) 2019-01-10 17:10:10 +01:00
ed49eb4c9c Fix stable id in grade fragment (#211) 2019-01-09 17:30:31 +01:00
7d1866c304 Fix NPE on error dialog (#212) 2019-01-09 17:29:55 +01:00
d2a736295a Version 0.6.2 2019-01-07 13:31:49 +01:00
a9e788f7ff Fix scroll to start in grade fragment (#210) 2019-01-07 12:52:55 +01:00
ea6a928cb4 Fix spinner dropdown arrow not displaying in attendance summary (#207) 2019-01-07 00:56:32 +01:00
b9ac592ea9 Fix broken grade summary view (#208) 2019-01-07 00:55:39 +01:00
450ae4e124 Fix item sorting in grades details (#209) 2019-01-06 23:56:01 +01:00
ca504f6efc Change icon of the attendance summary (#206) 2019-01-06 23:53:20 +01:00
4e1fd6b2cf English translation fix (#204) 2019-01-03 09:49:54 +01:00
3ab15e0e00 Added icon for the DEV version (#203) 2018-12-20 15:03:42 +01:00
504a73ee6c Version 0.6.1 2018-12-18 16:24:45 +01:00
24e4870baf Fix firebase crashlytics (#202) 2018-12-18 16:12:15 +01:00
30388fffd7 Version 0.6.0 2018-12-17 02:19:50 +01:00
04f386ea3d Fix error message snackbar (#201) 2018-12-17 00:17:21 +01:00
9c94305ba5 Configure code shrinking (#200) 2018-12-15 21:29:57 +01:00
765eac5251 Fix blank number and change strikethrough lesson in widget (#198) 2018-12-14 22:36:21 +01:00
2d4ada6c9e Add new app icon (#199) 2018-12-14 21:09:15 +01:00
5ee979447f Migrate to firebase (#196) 2018-12-14 00:20:54 +01:00
229bfe8d22 Adjustment login layout to material design (#197) 2018-12-11 15:54:26 +01:00
175f2d7b57 Update dependencies (#195) 2018-12-08 14:30:10 +01:00
247e81ba00 Show full subject name on expand (#193) 2018-12-08 12:27:00 +01:00
6fd70a0194 Add mark as read to grade menu (#194) 2018-12-08 12:24:52 +01:00
f96d0ebed9 Add a summary of attendance (#132) 2018-12-07 19:01:19 +01:00
900065d758 Add option to change plus and minus modifier separately (#192) 2018-12-07 00:19:04 +01:00
92baecbd0d Add messages (#148) 2018-12-06 18:35:02 +01:00
48f96b5932 Avoid re-loading fragments on the current week/day (#191) 2018-12-02 15:23:46 +01:00
9a298833f5 Add workaround password decryption error (#189) 2018-12-01 15:59:03 +01:00
11cc85e37c Fix the deformed settings icon (#190) 2018-11-30 23:15:13 +01:00
60c7316742 Add version text to login form (#188) 2018-11-29 19:07:44 +01:00
834ef7c297 Fix login when an error occurs (#187) 2018-11-28 20:06:08 +01:00
7686228e01 Add details to error message (#186) 2018-11-25 15:03:47 +01:00
7a3c0de7ad Add account manager (#183) 2018-11-24 18:51:41 +01:00
1f30deb36e Add config for travis ci (#185) 2018-11-23 12:38:55 +01:00
c2b8f85ad9 Fix no expandable grades (#184) 2018-11-15 17:33:12 +01:00
9f04dbf60f Add homework (#181) 2018-11-14 09:18:00 +01:00
24f59b45c3 Fix crash on restore LoginActivity (#182) 2018-11-11 23:24:49 +01:00
cb7e70471b Add notes (#179) 2018-11-11 17:45:58 +01:00
240e61df0e Add preference for the expandable grades (#178) 2018-11-10 23:29:18 +01:00
2b60f555e9 Move night mode initialization to WulkanowyApp (#180)
Fixes #162
2018-11-10 23:24:33 +01:00
2f24b25399 Add preference for the grades modifier (#177)
Resolve #163
2018-11-04 13:23:34 +01:00
533637d32a Add vibrate permission (#176) 2018-11-03 15:21:29 +01:00
fd6c0b6c74 Merge pull request #153 from wulkanowy/app-modules-refactor
Refactor app modules
2018-11-03 15:01:30 +01:00
5e30c8e949 Logger refactor (#175) 2018-11-03 14:49:20 +01:00
7f6f632b73 Timetable widget refactor (#171) 2018-11-02 17:38:20 +01:00
70879945f2 Services refactor (#168) 2018-11-01 19:27:02 +01:00
ab71dd3fde Sort lessons by number (#174) 2018-10-30 22:07:44 +01:00
0a7f09077f Dark theme refactor (#173) 2018-10-30 22:06:29 +01:00
745894f3a3 Fix range of days in exam navigation (#172) 2018-10-24 16:31:08 +02:00
0211a7f0a0 Refactor packages hierarchy (#170) 2018-10-23 17:12:57 +02:00
837bce7286 Settings refactor (#166) 2018-10-22 22:47:54 +02:00
b680cc4366 Migrate to AndroidX (#169) 2018-10-20 20:59:46 +02:00
f35d9d4b93 Change all entities ids from string to int (#167) 2018-10-20 17:57:24 +02:00
27f6fc7e04 Modules improvements (#164) 2018-10-14 22:16:58 +02:00
bb69d1b643 Refactor multi logs support (#165) 2018-10-14 15:42:36 +02:00
5cd8ed88c0 Refactor timetable module (#160) 2018-10-06 10:53:34 +02:00
f2b7c0e781 Refactor grade module (#156) 2018-10-03 21:28:23 +02:00
357b2350cb Refactor attendance module (#161) 2018-10-01 19:41:09 +02:00
a1f64baca4 Refactor exam module (#157) 2018-09-24 15:21:47 +02:00
6b07a56a1b Created issue template (#159) 2018-09-22 23:01:19 +02:00
b617957891 Migrate to new api (#155) 2018-08-26 00:18:31 +02:00
0e962c17c2 Refactor main module (#154) 2018-08-24 15:48:29 +02:00
a90d5cb9c3 Refactor login module (#151) 2018-08-22 22:31:17 +02:00
64b0919b7f Add license scan report and status (#152) 2018-08-17 14:35:41 +02:00
0f5a801464 Add homework api (#150) 2018-08-16 12:27:32 +02:00
d7eac45e96 Make API responses structure flat (#149) 2018-07-27 13:28:32 +02:00
ef5d3aead9 Refactoring password encryption (#147) 2018-07-18 21:13:57 +02:00
5dcd4f9b72 Version 0.5.2 2018-07-15 19:09:31 +02:00
c4792289ef Fix 29 migration (#146) 2018-07-15 19:02:49 +02:00
4b93a76693 Version 0.5.1 2018-07-15 15:40:07 +02:00
d44a1dbce1 Add weight on grades list (#145) 2018-07-15 15:15:19 +02:00
083765b020 Adjust colors of grades in dark theme (#143) 2018-07-15 14:20:22 +02:00
b8a31c3faf Upgrade android SDK (#144) 2018-07-14 20:09:58 +02:00
378aba9716 Add support for multiple SnP sites (#140) 2018-07-14 16:52:09 +02:00
5a4b8b22f3 Stop synchronization on holidays (#142) 2018-07-14 14:06:57 +02:00
8725640168 User short grade names in grades summary (#141) 2018-06-29 11:27:18 +02:00
dab1bd4ac6 Version 0.5.0 2018-06-14 14:45:32 +02:00
11578aa735 Add dark theme (#133) 2018-06-14 11:40:46 +02:00
b63e28f9a9 Separate synchronization from login (#137) 2018-06-13 18:53:42 +02:00
072c504d2b Clean data user on bad user credentials (#138) 2018-06-13 03:07:34 +02:00
7b7be1eef1 API fixes (#136) 2018-06-10 19:46:34 +02:00
81d177c270 Hide actionbar on scroll (#135) 2018-06-09 00:59:39 +02:00
8d014ab7e9 Fix displaying the replacements in widget (#134) 2018-06-07 08:13:49 +02:00
a06d114127 Add logger (#131) 2018-06-06 19:38:54 +02:00
0e16519baf Add a summary of grades (#127) 2018-06-04 21:47:46 +02:00
dde5775a41 Move ticks converter to api (#130) 2018-06-01 12:52:03 +02:00
e2003e2538 Expand current day on startup (#129) 2018-05-31 23:54:59 +02:00
228f680e5d Hide empty fields in summary (#128) 2018-05-31 23:01:52 +02:00
306092ce45 Add mobile access API (#126) 2018-05-30 11:57:29 +02:00
d4b172e022 Version 0.4.5 2018-05-28 11:32:39 +02:00
b4c765b482 [API] Fix timetable endpoint (#125) 2018-05-28 11:29:43 +02:00
3f1fff6d96 Implementation of a new Dagger injection (#103) 2018-05-26 20:44:06 +02:00
b59008a90f Version 0.4.4 2018-05-25 20:33:45 +02:00
74c0dda999 Fix lesson description from warning (#124) 2018-05-25 20:14:16 +02:00
2288ceffb8 Stop refreshing while semester switching window open (#123) 2018-05-25 19:10:34 +02:00
ffe8511e3f Add some fabric answers (#120) 2018-05-25 16:35:12 +02:00
34205e4a8b Fix autofill on api lvl 26 (#122) 2018-05-25 11:49:53 +02:00
ef648c7f8b Clear db before register (#121) 2018-05-24 22:25:24 +02:00
3592946e6f Fix api login(#119) 2018-05-23 19:21:35 +02:00
859f8dc319 Avoid null if cell second div not contain span (#118) 2018-05-23 18:44:04 +02:00
9c97962e89 Version 0.4.3 2018-05-19 23:37:32 +02:00
a4445a8a97 Fix api login error (#115) 2018-05-19 23:02:54 +02:00
3f54d13b6b Add condition to exam query (#116) 2018-05-19 21:11:04 +02:00
5685e73e46 Fix text alignment <= lv l20 (#117) 2018-05-19 19:58:33 +02:00
e9b357e92d Remove the root check (#114) 2018-05-19 12:48:12 +02:00
62bc00cd68 Delete non-existing lessons on sync (#112) 2018-05-19 12:30:17 +02:00
54e6aee82e Stop SyncJob if user is not registered in app (#113) 2018-05-16 20:43:29 +02:00
3000c077c4 Version 0.4.2 2018-05-14 22:20:17 +02:00
7d5072b529 Fix exams sync (#108) 2018-05-14 22:13:08 +02:00
052d5e3911 Stopping job when user not registered in app (#111) 2018-05-14 21:39:09 +02:00
0014b74c6b Fix certificate parsing issues (#109) 2018-05-14 21:12:45 +02:00
08dd316aee Fix adfs login (#110) 2018-05-14 20:56:17 +02:00
95caa21f2a Version 0.4.1 2018-05-13 18:16:39 +02:00
cd6e14b13b [API] Fix first login (#107) 2018-05-13 17:33:31 +02:00
2cf262130e [API] Get rid of NULL in timetable lesson descriptions (#106) 2018-05-13 16:02:51 +02:00
23183c9d7a Call of SyncJob only after user register in app (#105) 2018-05-13 15:25:56 +02:00
be8ee4c835 Fix parsing grade description with symbol containing special chars (#104) 2018-05-11 21:55:38 +02:00
3105e9e53b Version 0.4.0 2018-05-07 19:45:37 +02:00
8e855bd375 Save current tab position in exams (#102) 2018-05-07 18:18:05 +02:00
67f83a4d2f Mark current week (#100) 2018-05-07 17:57:58 +02:00
d7f0fcad30 Remove backup rules (#101) 2018-05-07 17:44:28 +02:00
f29689c6cd Add about section in settings (#99) 2018-05-07 16:05:57 +02:00
dd2c69601a Change description date in exam and fix styles (#98) 2018-05-06 21:16:03 +02:00
bfaa3d196b Fix animations on expand and collapse (#97) 2018-05-06 20:28:24 +02:00
ffd20c94dd Add exams (#87)
* [API/exams] Fix parsing empty list
* [API/exams] Fix date format
* [API/exams] Set day name from api
2018-05-03 19:47:34 +02:00
1740047aea [API] Add support for adfs login (#76) 2018-05-03 14:14:47 +02:00
cb2d4a905d Add option to hide present in attendance (#96) 2018-05-03 12:49:33 +02:00
89350e5793 Update dependencies (#95) 2018-05-03 12:29:10 +02:00
4ef3334bf7 Add semester switch in grades (#94) 2018-05-02 21:51:23 +02:00
cb6d39fe15 Fix widget state change during update (#93) 2018-04-29 19:47:01 +02:00
09a8cc38f9 Refactor model layout (#92) 2018-04-29 12:45:05 +02:00
3443b01b9a Fix grade regex (#91) 2018-04-27 01:36:40 +02:00
7dde13585c Add info about predicted and final ratings (#88) 2018-04-27 00:03:37 +02:00
176d17e1ec Fix notification intent (#89) 2018-04-24 23:52:53 +02:00
119e38254a Refactor entites (#86) 2018-04-24 22:05:46 +02:00
6fcf09e2b7 Add timetable widget (#84) 2018-04-24 21:27:45 +02:00
6927ac0e4f Version 0.3.1 2018-04-20 20:39:18 +02:00
2fd5b0f6ee [API] Improve login (#83) 2018-04-20 20:30:39 +02:00
b7a6b71a4d Change message after sync completed (#85) 2018-04-20 14:07:40 +02:00
ce00c7025a Version 0.3.0 2018-04-08 20:16:52 +02:00
5c558ae1f9 Show fully name on expand header (#82) 2018-04-08 18:05:41 +02:00
0708d84b98 Log non-fatal exceptions with fabric (#80) 2018-04-08 17:34:18 +02:00
b22d95392b Update CI config (#81) 2018-04-08 17:14:59 +02:00
78d57ca746 Notifications improvements (#78)
* Refactor notifications
* Change grade notify icon
2018-04-08 16:37:27 +02:00
0aa8c5605d Add setttings (#74) 2018-04-08 16:15:05 +02:00
cb6afb137f Hide actionbar during login (#79) 2018-04-08 15:54:46 +02:00
c72e7748e2 Migrate to ThreeTenABP (#77) 2018-04-05 21:56:08 +02:00
5c9f10fa50 Update gradle to 4.4 (#75) 2018-04-03 16:10:56 +02:00
cdd3d6a53b Version 0.2.2 2018-03-22 22:54:11 +01:00
8431661d54 Fix resuming states in fragments (#72)
* Downgrade sdk version
* Update dependencies
* Fix infinite loading on restore states
* Fix crash when loading loaded fragments
2018-03-22 22:42:08 +01:00
3dabb11473 [API] Add error messages to exceptions (#71) 2018-03-20 23:10:20 +01:00
63b4ed42ca Version 0.2.1 2018-03-14 22:08:57 +01:00
2bb2341d0f Fix display items on refresh (#70) 2018-03-14 21:56:39 +01:00
797e233809 Fix inactive elements (#69) 2018-03-14 20:22:31 +01:00
64b964ca18 Fix circleci instrumented job (#68) 2018-03-13 22:30:33 +01:00
c9bdac6a66 Fix session handling (#67) 2018-03-13 18:19:04 +01:00
83b4f359bc Version 0.2.0 2018-03-11 20:01:45 +01:00
a094d4f0d9 Fix crash in grades on some devices (#66) 2018-03-11 19:31:56 +01:00
3aca34340d Optimize session handling (#63)
* [APP] Change way the Vulcan is configured (#65)
2018-03-11 19:16:20 +01:00
a0313827ce [DB] Add database migrations (#64) 2018-03-11 18:18:33 +01:00
3799fa910b Add attendance (#58) 2018-03-10 15:55:34 +01:00
828e76821b Replace versioneye with snyk (#62) 2018-03-10 14:04:00 +01:00
e050982de2 Add application id suffix in debug builds (#61) 2018-03-10 13:08:01 +01:00
69fc4bf874 Add cleaning user data on upgrade and downgrade (#60) 2018-03-06 20:14:54 +01:00
c3803b1c96 Add a view of free days to the timetable (#57)
* Fix Timetable freeze when app was killed
* Add views for free days
2018-03-06 00:57:06 +01:00
e274949257 Add remove user id in db upgrade (#59) 2018-03-06 00:25:12 +01:00
1263 changed files with 139046 additions and 16552 deletions

View File

@ -1,5 +1,3 @@
exclude:
- /app/src/main/java/io/github/wulkanowy/data/db/dao/entities/.*
component_depth: 1
component_depth: 10
languages:
- java
- kotlin

View File

@ -7,11 +7,11 @@ references:
container_config: &container_config
docker:
- image: circleci/android:api-27-alpha
- image: circleci/android@sha256:5cdc8626cc6f13efe5ed982cdcdb432b0472f8740fed8743a6461e025ad6cdfc
working_directory: *workspace_root
environment:
environment:
JVM_OPTS: -Xmx3200m
_JAVA_OPTS: -Xmx3072m
attach_workspace: &attach_workspace
attach_workspace:
@ -25,6 +25,8 @@ jobs:
build:
<<: *container_config
steps:
- run: |
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | bash
- checkout
- restore_cache:
<<: *general_cache_key
@ -33,10 +35,10 @@ jobs:
command: ./gradlew dependencies --no-daemon --stacktrace --console=plain -PdisablePreDex || true
- run:
name: Initial build
command: ./gradlew build assembleDebug -x test -x lint -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- store_artifacts:
path: ./app/build/outputs/apk/
destination: apks/
command: ./gradlew build -x test -x lint -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease -x packageRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Run FOSSA
command: fossa --no-ansi || true
- persist_to_workspace:
root: *workspace_root
paths:
@ -54,7 +56,7 @@ jobs:
<<: *general_cache_key
- run:
name: Run lint
command: ./gradlew lint -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
command: ./gradlew lint -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- store_artifacts:
path: ./app/build/reports/
destination: lint_reports/app/
@ -73,16 +75,13 @@ jobs:
<<: *general_cache_key
- run:
name: Run app tests
command: ./gradlew :app:test :app:jacocoTestReport -x fabricGenerateResourcesRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
command: ./gradlew :app:test :app:jacocoTestReport -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Upload unit code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F app
- store_artifacts:
path: ./app/build/reports/tests/
destination: tests_reports/
- store_artifacts:
path: ./app/build/reports/jacoco/jacocoTestDebugUnitTestReport/
destination: coverage_reports/
path: ./app/build/reports/
destination: reports/
- store_test_results:
path: ./app/build/test-results
- persist_to_workspace:
@ -90,42 +89,23 @@ jobs:
paths:
- "./app/build/jacoco"
api-test:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Run api tests
command: ./gradlew :api:test :api:jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Upload code coverage to codecov
command: bash <(curl -s https://codecov.io/bash) -F api
- store_artifacts:
path: ./api/build/reports/tests/
destination: tests_reports/
- store_artifacts:
path: ./api/build/reports/jacoco/test/
destination: coverage_reports/
- store_test_results:
path: ./api/build/test-results
- persist_to_workspace:
root: *workspace_root
paths:
- "./api/build/jacoco"
instrumented:
<<: *container_config
steps:
- *attach_workspace
- run:
name: Accept licenses
command: yes | sdkmanager --licenses && yes | sdkmanager --update
- run:
name: Setup emulator
command: sdkmanager "system-images;android-19;google_apis;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-19;google_apis;armeabi-v7a"
command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a"
- run:
name: Launch emulator
command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on
background: true
- run:
name: Change circle-android script file permissions
command: sudo chmod +rx /bin/circle-android
- run:
name: Wait emulator
command: |
@ -134,15 +114,13 @@ jobs:
# unlock the emulator screen
sleep 30
adb shell input keyevent 82
- run:
name: Clean project
command: ./gradlew clean --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Run instrumented tests
command: ./gradlew createDebugCoverageReport --no-daemon --stacktrace --console=plain -PdisablePreDex
command: ./gradlew clean createFdroidDebugCoverageReport jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Collect logs from emulator
command: adb logcat -d > ./app/build/reports/logcat_emulator.txt
when: always
- run:
name: Upload code covarage to codecov
command: bash <(curl -s https://codecov.io/bash) -F instrumented
@ -167,32 +145,66 @@ jobs:
command: ./gradlew jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
- run:
name: Run sonarqube runner
command: ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex
command: if [ -z ${SONAR_HOST+x} ]; then echo "sonar scan skipped"; else ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex; fi
command: "[[ -v CIRCLE_PR_NUMBER ]] && ./gradlew -x test -x lint sonarqube -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=$CIRCLE_BRANCH --no-daemon --stacktrace --console=plain -PdisablePreDex || true"
deploy:
<<: *container_config
steps:
- *attach_workspace
- restore_cache:
<<: *general_cache_key
- run:
name: Decrypt keys
command: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg
openssl aes-256-cbc -d -in ./app/key-encrypted.p12 -k $ENCRYPT_KEY >> ./app/key.p12
openssl aes-256-cbc -d -in ./app/upload-key-encrypted.jks -k $ENCRYPT_KEY >> ./app/upload-key.jks
- run:
name: Publish release
command: ./gradlew publishPlayRelease --no-daemon --stacktrace --console=plain -PenableCrashlytics -PdisablePreDex
workflows:
version: 2
build_check_tests:
build-test-deploy:
jobs:
- build
- build:
filters:
tags:
only: /.*/
- lint:
filters:
tags:
only: /.*/
requires:
- build
- app-test:
requires:
- build
- api-test:
filters:
tags:
only: /.*/
requires:
- build
- instrumented:
requires:
- build
filters:
tags:
only: /.*/
requires:
- build
- sonarcube:
filters:
tags:
only: /.*/
requires:
- build
- lint
- app-test
- api-test
- instrumented
- deploy:
requires:
- instrumented
filters:
tags:
only: /\d+\.\d+\.\d+/
branches:
ignore: /.*/

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
[*]
charset=utf-8
end_of_line=lf
insert_final_newline=true
indent_style=space
indent_size=4
[*.json]
indent_size=2
[*.{kt,kts}]
disabled_rules=import-ordering,no-wildcard-imports

26
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,26 @@
---
name: Bug report
about: Utwórz raport błędu, aby pomóc nam ulepszyć Wulkanowego
title: ''
labels: ''
assignees: ''
---
## Co powinno się dziać
## Co się dzieje
## Jak to zrobić kolejny raz:
1.
2.
3.
## Informacje o urządzeniu i dzienniku
- Wersja aplikacji:
- Wersja Androida:
- Adres URL dziennika:

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Zaproponuj nowy pomysł dla Wulkanowego
title: ''
labels: ''
assignees: ''
---
** Czy Twoja prośba o funkcję jest związana z problemem? Proszę opisz.**
Jasny i zwięzły opis problemu. Np. Zawsze jestem sfrustrowany, gdy [...]
** Opisz żądane rozwiązanie **
Jasny i zwięzły opis tego, co chcesz, aby się wydarzyło.
** Opisz alternatywy, które rozważałeś **
Jasny i zwięzły opis wszelkich rozważanych alternatywnych rozwiązań lub funkcji.
** Dodatkowy kontekst **
Dodaj inny kontekst lub zrzuty ekranu dotyczące żądania funkcji tutaj.

12
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: gradle
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
target-branch: develop
ignore:
- dependency-name: io.github.wulkanowy:sdk
reviewers:
- Faierbel

76
.github/workflows/deploy-store.yml vendored Normal file
View File

@ -0,0 +1,76 @@
name: Deploy to app stores
on:
release:
types: [ created ]
jobs:
deploy-google-play:
name: Deploy to google play
runs-on: ubuntu-latest
timeout-minutes: 10
environment: google-play
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Decrypt keys
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
SERVICES_ENCRYPT_KEY: ${{ secrets.SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg
- name: Upload apk to google play
env:
PLAY_STORE_PASSWORD: ${{ secrets.PLAY_STORE_PASSWORD }}
PLAY_KEY_ALIAS: ${{ secrets.PLAY_KEY_ALIAS }}
PLAY_KEY_PASSWORD: ${{ secrets.PLAY_KEY_PASSWORD }}
ANDROID_PUBLISHER_CREDENTIALS: ${{ secrets.ANDROID_PUBLISHER_CREDENTIALS }}
ADMOB_PROJECT_ID: ${{ secrets.ADMOB_PROJECT_ID }}
SINGLE_SUPPORT_AD_ID: ${{ secrets.SINGLE_SUPPORT_AD_ID }}
SET_BUILD_TIMESTAMP: ${{ secrets.SET_BUILD_TIMESTAMP }}
run: ./gradlew publishPlayReleaseApps -PenableFirebase --stacktrace;
deploy-app-gallery:
name: Deploy to AppGallery
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-gallery
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Decrypt keys
env:
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
SERVICES_ENCRYPT_KEY: ${{ secrets.SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/agconnect-services.json.gpg
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg
- name: Prepare credentials
env:
AGC_CREDENTIALS: ${{ secrets.AGC_CREDENTIALS }}
run: echo $AGC_CREDENTIALS > ./app/src/release/agconnect-credentials.json
- name: Build and publish HMS version
env:
PLAY_STORE_PASSWORD: ${{ secrets.PLAY_STORE_PASSWORD }}
PLAY_KEY_ALIAS: ${{ secrets.PLAY_KEY_ALIAS }}
PLAY_KEY_PASSWORD: ${{ secrets.PLAY_KEY_PASSWORD }}
SET_BUILD_TIMESTAMP: ${{ secrets.SET_BUILD_TIMESTAMP }}
run: ./gradlew bundleHmsRelease --stacktrace && ./gradlew publishHuaweiAppGalleryHmsRelease --stacktrace

144
.github/workflows/deploy-test.yml vendored Normal file
View File

@ -0,0 +1,144 @@
name: Deploy to app tests
on:
push:
# branches: [ develop ]
branches: [ '!*' ]
pull_request_target:
# branches: [ develop ]
branches: [ '!*' ]
workflow_dispatch:
jobs:
deploy-appcenter:
name: App Center
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-center
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Set run number with offset
env:
BUILD_NUMBER_OFFSET: ${{ secrets.BUILD_NUMBER_OFFSET }}
run: echo "RUN_NUMBER=$((GITHUB_RUN_NUMBER+BUILD_NUMBER_OFFSET))" >> $GITHUB_ENV
- name: Prepare build configuration
run: |
sed -i -e "s#applicationIdSuffix \".dev\"#applicationIdSuffix \".${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/build.gradle
sed -i -e "s#.dev\"#.${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/src/debug/google-services.json
sed -i -e "s#.dev\"#.${GITHUB_HEAD_REF//[-.\/]/_}\"#" app/src/debug/agconnect-services.json
sed -i -e '/versionNameSuffix/d' app/build.gradle
- name: Add signing config
run: |
cat >> app/build.gradle <<EOF
android.signingConfigs.debug {
storeFile file("bitrise.jks")
storePassword System.getenv("BITRISE_KEYSTORE_PASSWORD")
keyAlias System.getenv("BITRISE_KEY_ALIAS")
keyPassword System.getenv("BITRISE_KEY_PASSWORD")
}
EOF
- name: Decrypt keys
env:
BITRISE_ENCRYPT_KEY: ${{ secrets.BITRISE_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$BITRISE_ENCRYPT_KEY ./app/bitrise.jks.gpg
- name: Bump version
uses: chkfung/android-version-actions@v1.1
with:
gradlePath: app/build.gradle
versionCode: ${{ env.RUN_NUMBER }}
versionName: ${{ env.RUN_NUMBER }}-${{ github.head_ref }}
- name: Build apk
env:
BITRISE_KEYSTORE_PASSWORD: ${{ secrets.BITRISE_KEYSTORE_PASSWORD }}
BITRISE_KEY_ALIAS: ${{ secrets.BITRISE_KEY_ALIAS }}
BITRISE_KEY_PASSWORD: ${{ secrets.BITRISE_KEY_PASSWORD }}
run: ./gradlew assembleFdroidDebug --stacktrace
- name: Upload apk to github artifacts
uses: actions/upload-artifact@v2
with:
name: wulkanowyDEV-${{ env.RUN_NUMBER }}.apk
path: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
- name: Deploy to app center
uses: wzieba/AppCenter-Github-Action@v1
with:
appName: wulkanowy/wulkanowy
token: ${{ secrets.APP_CENTER_TOKEN }}
group: Testers
file: app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk
notifyTesters: true
debug: true
deploy-app-distribution:
name: App Distribution
runs-on: ubuntu-latest
timeout-minutes: 10
environment: app-distribution
if: github.event_name != 'pull_request_target'
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Set run number with offset
env:
BUILD_NUMBER_OFFSET: ${{ secrets.BUILD_NUMBER_OFFSET }}
run: echo "RUN_NUMBER=$((GITHUB_RUN_NUMBER+BUILD_NUMBER_OFFSET))" >> $GITHUB_ENV
- name: Add signing config
run: |
cat >> app/build.gradle <<EOF
android.signingConfigs.debug {
storeFile file("bitrise.jks")
storePassword System.getenv("BITRISE_KEYSTORE_PASSWORD")
keyAlias System.getenv("BITRISE_KEY_ALIAS")
keyPassword System.getenv("BITRISE_KEY_PASSWORD")
}
EOF
- name: Decrypt keys
env:
BITRISE_ENCRYPT_KEY: ${{ secrets.BITRISE_ENCRYPT_KEY }}
BITRISE_SERVICES_ENCRYPT_KEY: ${{ secrets.BITRISE_SERVICES_ENCRYPT_KEY }}
run: |
gpg --yes --batch --passphrase=$BITRISE_SERVICES_ENCRYPT_KEY ./app/src/debug/google-services.json.gpg
gpg --yes --batch --passphrase=$BITRISE_ENCRYPT_KEY ./app/bitrise.jks.gpg
- name: Bump version
uses: chkfung/android-version-actions@v1.1
with:
gradlePath: app/build.gradle
versionCode: ${{ env.RUN_NUMBER }}
versionName: ${{ env.RUN_NUMBER }}
- name: Build apk
env:
BITRISE_KEYSTORE_PASSWORD: ${{ secrets.BITRISE_KEYSTORE_PASSWORD }}
BITRISE_KEY_ALIAS: ${{ secrets.BITRISE_KEY_ALIAS }}
BITRISE_KEY_PASSWORD: ${{ secrets.BITRISE_KEY_PASSWORD }}
run: ./gradlew assemblePlayDebug -PenableFirebase --stacktrace
- name: Upload apk to github artifacts
uses: actions/upload-artifact@v2
with:
name: wulkanowyDEV-${{ env.RUN_NUMBER }}-dev.apk
path: app/build/outputs/apk/play/debug/app-play-debug.apk
- name: Deploy to app distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_TOKEN }}
groups: discord
file: app/build/outputs/apk/play/debug/app-play-debug.apk

34
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,34 @@
name: Tests
on:
push:
branches: [ master, develop ]
tags: [ '*' ]
pull_request:
branches: [ master, develop ]
jobs:
unit-tests:
name: Unit tests
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: fkirc/skip-duplicate-actions@master
- uses: actions/checkout@v2
- uses: gradle/wrapper-validation-action@v1
- uses: actions/setup-java@v1
with:
java-version: 11
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}
- name: Unit tests
run: |
./gradlew testFdroidDebugUnitTest --stacktrace
./gradlew jacocoTestReport --stacktrace
- uses: codecov/codecov-action@v1
with:
flags: unit

115
.gitignore vendored
View File

@ -1,38 +1,92 @@
/captures
.externalNativeBuild
## https://gist.github.com/iainconnor/8605514
# Created by https://www.gitignore.io
# Built application files
/build
/*/build/
*.apk
*.ap_
*.aab
# Crashlytics configuations
com_crashlytics_export_strings.xml
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Gradle files
.gradle/
build/
.build-cache
# Local configuration file (sdk path, etc)
local.properties
# Gradle generated files
.gradle/
# Proguard folder generated by Eclipse
proguard/
# Signing files
.signing/
# Log Files
*.log
# User-specific configurations
.idea/copyright/profiles_settings.xml
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ configurations
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
.idea/modules.xml
.idea/navEditor.xml
.idea/caches/
.idea/libraries/
.idea/inspectionProfiles/
.idea/shelf/
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml
*.iml
.idea/jsLibraryMappings.xml
.idea/datasources.xml
.idea/dataSources.ids
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
.idea/runConfigurations.xml
.idea/discord.xml
# Keystore files
*.jks
*.keystore
*.p12
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
lint/reports/
### Android Patch ###
gen-external-apklibs
output.json
# OS-specific files
.DS_Store
@ -42,3 +96,26 @@ local.properties
.Trashes
ehthumbs.db
Thumbs.db
# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar
.idea/jarRepositories.xml
app/src/release/agconnect-services.json
app/src/release/agconnect-credentials.json
.idea/deploymentTargetDropDown.xml

View File

@ -1,4 +1,4 @@
image: circleci/android:api-27-alpha
image: circleci/android:api-28-alpha
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
@ -12,7 +12,7 @@ build:
script:
- ./gradlew --no-daemon --stacktrace dependencies || true
- ./gradlew --no-daemon --stacktrace assembleDebug
- mv app/build/outputs/apk/app-debug.apk .
- mv app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk .
artifacts:
name: "${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}-${CI_BUILD_ID}"
paths:
@ -26,7 +26,7 @@ tests:
- .gradle
policy: pull
script:
- ./gradlew --no-daemon --stacktrace test
- ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease test
artifacts:
paths:
- app/build/reports/tests
@ -39,7 +39,7 @@ lint:
- .gradle
policy: pull
script:
- ./gradlew --no-daemon --stacktrace lint
- ./gradlew --no-daemon --stacktrace -x fabricGenerateResourcesFdroidRelease -x fabricGenerateResourcesPlayRelease lint
artifacts:
paths:
- app/build/reports

View File

@ -1,226 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="android" withSubpackages="true" static="false" />
<emptyLine />
<package name="com" withSubpackages="true" static="false" />
<emptyLine />
<package name="junit" withSubpackages="true" static="false" />
<emptyLine />
<package name="net" withSubpackages="true" static="false" />
<emptyLine />
<package name="org" withSubpackages="true" static="false" />
<emptyLine />
<package name="java" withSubpackages="true" static="false" />
<emptyLine />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="true" />
<emptyLine />
</value>
</option>
<option name="RIGHT_MARGIN" value="100" />
<AndroidXmlCodeStyleSettings>
<option name="USE_CUSTOM_SETTINGS" value="true" />
</AndroidXmlCodeStyleSettings>
<Objective-C-extensions>
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cpp" header="h" />
<pair source="c" header="h" />
</extensions>
</Objective-C-extensions>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_width</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:width</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</value>
</option>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</component>
</project>

123
.idea/codeStyles/Project.xml generated Normal file
View File

@ -0,0 +1,123 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="LINE_SEPARATOR" value="&#10;" />
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

19
.idea/gradle.xml generated
View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/api" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

68
.travis.yml Normal file
View File

@ -0,0 +1,68 @@
language: android
jdk: oraclejdk8
env:
global:
- ANDROID_API_LEVEL=30
- ANDROID_BUILD_TOOLS_VERSION=30.0.2
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
branches:
only:
- develop
- 0.24.0
android:
licenses:
- android-sdk-preview-license-.+
- android-sdk-license-.+
- google-gdk-license-.+
components:
- tools
- platform-tools
# The BuildTools version used by your project
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
# The SDK version used to compile your project
- android-$ANDROID_API_LEVEL
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-$ANDROID_API_LEVEL
# Android emulator
- android-22
- sys-img-armeabi-v7a-android-22
before_install:
- yes | sdkmanager "platforms;android-30"
- yes | sdkmanager "build-tools;30.0.2"
before_script:
# Launch emulator before the execution
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
- "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
script:
- ./gradlew dependencies --stacktrace --daemon
- fossa --no-ansi || true
- ./gradlew -Pcoverage testFdroidDebugUnitTest --stacktrace --daemon
- ./gradlew -Pcoverage connectedFdroidDebugAndroidTest --stacktrace --daemon
- ./gradlew -Pcoverage jacocoTestReport --stacktrace --daemon
- |
if [ $TRAVIS_TAG ]; then
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg;
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/agconnect-services.json.gpg;
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/key.p12.gpg;
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg;
./gradlew publishPlayRelease -PenableFirebase --stacktrace;
fi
after_success:
- bash <(curl -s https://codecov.io/bash)

View File

@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017 wulkanowy
Copyright 2022 Wulkanowy
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

78
README.cs.md Normal file
View File

@ -0,0 +1,78 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Polska wersja README](README.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Neoficiální klient deníku VULCAN UONET+ pro žáka a rodiče
## Funkce
* přihlášení pomocí emailu a hesla
* funkce z webové stránky deníku:
* známky
* statistiky známek
* frekvence
* procento frekvence
* zkoušky
* plán lekce
* dokončené lekce
* zprávy
* domácí úkoly
* poznámky
* šťastné číslo
* další lekce
* školní setkání
* informace o žáku a škole
* výpočet průměru nezávisle na preferencích školy
* upozornění, např. o nových známkách
* podpora více účtů s možností přejmenování žáků
* tmavý a černý (AMOLED) motiv
* offline režim
* žádné reklamy
## Stáhnout
Aktuální verzi si můžete stáhnout z Google Play, F-Droid nebo Huawei AppGallery
[<img src="https://play.google.com/intl/cs-CZ/badges/images/generic/cs_badge_web_generic.png"
alt="Nyní na Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Stáhnout s F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="https://i.imgur.com/baTGiDP.png"
alt="Objevuj v AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Můžete si také stáhnout [vývojovou verzi](https://wulkanowy.github.io/#download), která zahrnuje nové funkce připravované pro příští vydání
## Postaveno s
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Spolupráce
Přispějte do projektu vytvořením PR nebo odesláním issue na GitHub.
Pro zájemce o překlad aplikace do různých jazyků poskytujeme Crowdin:
https://crowdin.com/project/wulkanowy2
## Licence
Tento projekt je licencován pod licencí Apache License 2.0 - podrobnosti v souboru [LICENSE](LICENSE)

74
README.de.md Normal file
View File

@ -0,0 +1,74 @@
[Polska wersja README](README.md)
[English version of README](README.en.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Inoffizieller Android VULCAN UONET+ Registrierungsclient für Schüler und ihre Eltern
## Merkmale
* Einloggen mit E-Mail und Passwort
* Funktionen von der Registerwebsite:
* Noten
* Notenstatistik
* Anwesenheit
* Prozentsatz der Anwesenheit
* Prüfungen
* Stundenplan
* Unterricht abgeschlossen
* Nachrichten
* Hausaufgaben
* Anmerkungen
* Glückszahl
* Zusätzliche Lektionen
* Schulkonferenzen
* Schüler- und Schulinformationen
* Berechnung des Durchschnitts unabhängig von den Präferenzen der Schule
* Benachrichtigungen, z. B. über eine neue Note
* Unterstützung für mehrere Konten mit der Möglichkeit, den Namen des Schülers zu ändern
* dunkles und schwarzes (AMOLED) Thema
* Offline-Modus
* keine Werbung
## Herunterladen
Die aktuelle Version können Sie von der Google Play, F-Droid oder Huawei AppGallery store herunterladen
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Explore it on AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Sie können auch ein [Entwicklungsversion herunterladen](https://wulkanowy.github.io/#download) das beinhaltet neue Funktionen, die für die nächste Version vorbereitet werden
## Gebaut mit
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Beitragen
Bitte tragen Sie zum Projekt bei, indem Sie entweder eine PR erstellen oder ein Issue auf GitHub einreichen.
Für Personen, die daran interessiert sind, die Anwendung in verschiedene Sprachen zu übersetzen, bieten wir Crowdin
https://crowdin.com/project/wulkanowy2
## Lizenz
Dieses Projekt ist unter der Apache License 2.0 lizenziert - siehe die [LIZENZ](LICENSE) Datei für Details

78
README.en.md Normal file
View File

@ -0,0 +1,78 @@
[Polska wersja README](README.md)
[Deutsche Version von README](README.de.md)
[Česká verze README](README.cs.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Unofficial android VULCAN UONET+ register client for both students and their parents
## Features
* logging in using the email and password
* functions from the register website:
* grades
* grade statistics
* attendance
* percentage of attendance
* exams
* timetable
* completed lessons
* messages
* homework
* notes
* lucky number
* additional lessons
* school conferences
* student and school information
* calculation of the average independently of school's preferences
* notifications, e.g. about a new grade
* support for multiple accounts with the ability to rename students
* dark and black (AMOLED) theme
* offline mode
* no ads
## Download
You can download the current version from the Google Play, F-Droid or Huawei AppGallery store
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Explore it on AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
You can also download a [development version](https://wulkanowy.github.io/#download) that includes new features being prepared for the next release
## Built With
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Contributing
Please contribute to the project either by creating a PR or submitting an issue on GitHub.
For people interested in translating the application into different languages, we provide Crowdin
https://crowdin.com/project/wulkanowy2
## License
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details

View File

@ -1,12 +1,79 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Česká verze README](README.cs.md)
[Slovenská verzia README](README.sk.md)
# Wulkanowy
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Dependency Status](https://www.versioneye.com/user/projects/5969ff0b0fb24f004f8c711b/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/5969ff0b0fb24f004f8c711b)
[![CircleCI](https://img.shields.io/circleci/project/github/wulkanowy/wulkanowy.svg?style=flat-square)](https://circleci.com/gh/wulkanowy/wulkanowy)
[![Bitrise](https://img.shields.io/bitrise/daeff1893f3c8128/master.svg?token=Hjm1ACamk86JDeVVJHOeqQ&style=flat-square)](https://www.bitrise.io/app/daeff1893f3c8128)
[![BCH compliance](https://bettercodehub.com/edge/badge/wulkanowy/wulkanowy?branch=master)](https://bettercodehub.com/)
[![Bintray](https://img.shields.io/bintray/v/wulkanowy/wulkanowy/api.svg?style=flat-square)](https://bintray.com/wulkanowy/wulkanowy/api)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
[Pobierz wersję rozwojową](https://bitrise-redirector.herokuapp.com/v0.1/apps/daeff1893f3c8128/builds/master/artifacts/app-release-bitrise-signed.apk)
Nieoficjalny klient dziennika VULCAN UONET+ dla ucznia i rodzica
Wulkanowy to projekt aplikacji na androida ułatwiającej używanie dziennika VULCANa.
## Funkcje
* logowanie za pomocą e-maila i hasła
* funkcje ze strony internetowej dziennika:
* oceny
* statystyki ocen
* frekwencja
* procent frekwencji
* sprawdziany
* plan lekcji
* lekcje zrealizowane
* wiadomości
* zadania domowe
* uwagi
* szczęśliwy numerek
* dodatkowe lekcje
* zebrania w szkole
* informacje o uczniu i szkole
* obliczanie średniej niezależnie od preferencji szkoły
* powiadomienia np. o nowej ocenie
* obsługa wielu kont wraz z możliwością zmiany nazwy ucznia
* ciemny i czarny (AMOLED) motyw
* tryb offline
* brak reklam
## Pobierz
Aktualną wersję możesz pobrać ze sklepu Google Play, F-Droid lub Huawei AppGallery
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Pobierz z Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Pobierz z F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="appgallery_badge.png"
alt="Odkrywaj w AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Możesz także pobrać [wersję rozwojową](https://wulkanowy.github.io/#download), która zawiera nowe funkcje przygotowywane do następnego wydania
## Zbudowana za pomocą
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Współpraca
Wnieś swój wkład w projekt, tworząc PR lub wysyłając issue na GitHub.
Dla osób zainteresowanych tłumaczeniem aplikacji na różne języki udostępniamy Crowdina
https://crowdin.com/project/wulkanowy2
## Licencja
Ten projekt udostępniany jest na licencji Apache License 2.0 - szczegóły w pliku [LICENSE](LICENSE)

78
README.sk.md Normal file
View File

@ -0,0 +1,78 @@
[English version of README](README.en.md)
[Deutsche Version von README](README.de.md)
[Polska wersja README](README.md)
[Česká verze README](README.cs.md)
# Wulkanowy
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
[![Last release](https://img.shields.io/github/release/wulkanowy/wulkanowy.svg?logo=github&style=flat-square)](https://github.com/wulkanowy/wulkanowy/releases)
Neoficiálny klient denníka VULCAN UONET+ pre žiaka a rodičov
## Funkcie
* prihlásenie pomocou emailu a hesla
* funkcie z webovej stránky denníka:
* známky
* štatistiky známok
* frekvencia
* percento frekvencie
* skúšky
* plán lekcie
* dokončené lekcie
* správy
* domáce úlohy
* poznámky
* šťastné číslo
* ďalšie lekcie
* školské stretnutie
* informácie o žiakovi a škole
* výpočet priemeru nezávisle od preferencií školy
* upozornenia, napr. o nových známkach
* podpora viacerých účtov s možnosťou premenovania žiakov
* tmavý a čierny (AMOLED) motív
* offline režim
* žiadne reklamy
## Stiahnuť
Aktuálnu verziu si môžete stiahnuť z Google Play, F-Droid alebo Huawei AppGallery
[<img src="https://play.google.com/intl/sk/badges/images/generic/sk_badge_web_generic.png"
alt="Nyní na Google Play"
height="80">](https://play.google.com/store/apps/details?id=io.github.wulkanowy)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Stiahnuť s F-Droid"
height="80">](https://f-droid.org/packages/io.github.wulkanowy/)
[<img src="https://i.imgur.com/sX8UyAw.png"
alt="Objavíte v AppGallery"
height="80">](https://appgallery.cloud.huawei.com/ag/n/app/C101440411?channelId=Badge&id=1b3f7fbb700849a9be0dba6b520b2282&s=EB1D3BF9ED9D1564D869B7B94B18016D3CABFCA5AEFB8E29F675FA04E0DC131D&detailType=0&v=)
Môžete si tiež stiahnuť [vývojovú verziu](https://wulkanowy.github.io/#download), ktorá zahrňuje nové funkcie pripravované pre budúce vydanie
## Postavené s
* [Wulkanowy SDK](https://github.com/wulkanowy/sdk)
* [Kotlin Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
* [Hilt](https://dagger.dev/hilt/)
* [Room](https://developer.android.com/topic/libraries/architecture/room)
* [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager)
## Spolupráca
Prispejte do projektu vytvorením PR alebo odoslaním issue na GitHub.
Pre záujemcov o preklad aplikácie do rôznych jazykov poskytujeme Crowdin:
https://crowdin.com/project/wulkanowy2
## Licencia
Tento projekt je licencovaný pod licenciou Apache License 2.0 - podrobnosti v súbore [LICENSE](LICENSE)

View File

@ -1,117 +0,0 @@
apply plugin: 'java-library'
apply plugin: 'org.sonarqube'
apply plugin: 'jacoco'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"
ext {
PUBLISH_GROUP_ID = GROUP_ID
PUBLISH_ARTIFACT_ID = 'api'
PUBLISH_VERSION = System.getenv('GIT_TAG')
}
test {
testLogging {
events "passed", "skipped", "failed", "standardOut", "standardError"
outputs.upToDateWhen {false}
showStandardStreams = true
}
}
jacocoTestReport {
reports {
xml.enabled true
}
}
dependencies {
implementation 'org.jsoup:jsoup:1.10.3'
implementation 'org.apache.commons:commons-lang3:3.7'
implementation 'com.google.code.gson:gson:2.8.2'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.13.0'
}
version = PUBLISH_VERSION
group = GROUP_ID
sonarqube {
properties {
property "sonar.projectName", GROUP_ID + ":api"
property "sonar.projectKey", GROUP_ID + ":wulkanowy-api"
}
}
def siteUrl = 'https://github.com/wulkanowy/wulkanowy'
def gitUrl = 'https://github.com/wulkanowy/wulkanowy.git'
bintray {
user = System.getenv('BINTRAY_USER')
key = System.getenv('BINTRAY_KEY')
configurations = ['archives']
pkg {
repo = 'wulkanowy'
name = 'api'
userOrg = 'wulkanowy'
licenses = ['Apache-2.0']
vcsUrl = gitUrl
labels = ['aar', 'android', 'wulkanowy', 'api']
publicDownloadNumbers = true
publish = true
version {
name = PUBLISH_VERSION
vcsTag = PUBLISH_VERSION
released = new Date()
}
}
}
install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
name 'Bintray publish Gradle aar'
url siteUrl
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'mklkj'
name 'Mikołaj Pich'
email 'm.pich@outlook.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}

View File

@ -1,104 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.Map;
public class Client {
private String protocol;
private String host;
private String symbol;
private Cookies cookies = new Cookies();
Client(String protocol, String host, String symbol) {
this.protocol = protocol;
this.host = host;
this.symbol = symbol;
}
String getHost() {
return host;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
Map<String, String> getCookies() {
return cookies.getItems();
}
private String getFilledUrl(String url) {
return url
.replace("{schema}", protocol)
.replace("{host}", host.replace(":", "%253A"))
.replace("{symbol}", symbol == null ? "Default" : symbol);
}
Document getPageByUrl(String url) throws IOException {
Connection.Response response = Jsoup.connect(getFilledUrl(url))
.followRedirects(true)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.parse();
}
public Document postPageByUrl(String url, String[][] params) throws IOException {
Connection connection = Jsoup.connect(getFilledUrl(url));
for (String[] data : params) {
connection.data(data[0], data[1]);
}
Connection.Response response = connection
.followRedirects(true)
.method(Connection.Method.POST)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.parse();
}
public String getJsonStringByUrl(String url) throws IOException {
Connection.Response response = Jsoup.connect(getFilledUrl(url))
.followRedirects(true)
.ignoreContentType(true)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.body();
}
public String postJsonStringByUrl(String url, String[][] params) throws IOException {
Connection connection = Jsoup.connect(getFilledUrl(url));
for (String[] data : params) {
connection.data(data[0], data[1]);
}
Connection.Response response = connection
.followRedirects(true)
.ignoreContentType(true)
.method(Connection.Method.POST)
.cookies(getCookies())
.execute();
this.cookies.addItems(response.cookies());
return response.body();
}
}

View File

@ -1,23 +0,0 @@
package io.github.wulkanowy.api;
import java.util.HashMap;
import java.util.Map;
public class Cookies {
private Map<String, String> jar = new HashMap<>();
public Map<String, String> getItems() {
return jar;
}
public Cookies setItems(Map<String, String> items) {
this.jar = items;
return this;
}
public Cookies addItems(Map<String, String> items) {
this.jar.putAll(items);
return this;
}
}

View File

@ -1,37 +0,0 @@
package io.github.wulkanowy.api;
public class Semester {
private String number = "";
private String id = "";
private boolean isCurrent = false;
public String getNumber() {
return number;
}
public Semester setNumber(String number) {
this.number = number;
return this;
}
public String getId() {
return id;
}
public Semester setId(String id) {
this.id = id;
return this;
}
public boolean isCurrent() {
return isCurrent;
}
public Semester setCurrent(boolean current) {
isCurrent = current;
return this;
}
}

View File

@ -1,26 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import java.util.List;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public interface SnP {
String getId();
void storeContextCookies() throws IOException, NotLoggedInErrorException;
String getRowDataChildValue(Element e, int index);
Document getSnPPageDocument(String url) throws IOException;
List<Semester> getSemesters() throws IOException;
List<Semester> getSemesters(Document gradesPage);
Semester getCurrentSemester(List<Semester> semesterList);
}

View File

@ -1,119 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public class StudentAndParent implements SnP {
private static final String START_PAGE_URL = "{schema}://uonetplus.{host}/{symbol}/Start.mvc/Index";
private static final String BASE_URL = "{schema}://uonetplus-opiekun.{host}/{symbol}/{ID}/";
private static final String GRADES_PAGE_URL = "Oceny/Wszystkie";
private Client client;
private String id;
StudentAndParent(Client client) {
this.client = client;
}
StudentAndParent(Client client, String id) {
this(client);
this.id = id;
}
private String getBaseUrl() {
return BASE_URL.replace("{ID}", getId());
}
public String getId() {
return id;
}
public void storeContextCookies() throws IOException, NotLoggedInErrorException {
client.getPageByUrl(getSnpHomePageUrl());
}
String getSnpHomePageUrl() throws IOException, NotLoggedInErrorException {
if (null != getId()) {
return getBaseUrl();
}
// get url to uonetplus-opiekun.vulcan.net.pl
Document startPage = client.getPageByUrl(START_PAGE_URL);
Element studentTileLink = startPage.select(".panel.linkownia.pracownik.klient > a").first();
if (null == studentTileLink) {
throw new NotLoggedInErrorException();
}
String snpPageUrl = studentTileLink.attr("href");
this.id = getExtractedIdFromUrl(snpPageUrl);
return snpPageUrl;
}
String getExtractedIdFromUrl(String snpPageUrl) throws NotLoggedInErrorException {
String[] path = snpPageUrl.split(client.getHost())[1].split("/");
if (5 != path.length) {
throw new NotLoggedInErrorException();
}
return path[2];
}
public String getRowDataChildValue(Element e, int index) {
return e.select(".daneWiersz .wartosc").get(index - 1).text();
}
public Document getSnPPageDocument(String url) throws IOException {
return client.getPageByUrl(getBaseUrl() + url);
}
public List<Semester> getSemesters() throws IOException {
return getSemesters(getSnPPageDocument(GRADES_PAGE_URL));
}
public List<Semester> getSemesters(Document gradesPage) {
Elements semesterOptions = gradesPage.select("#okresyKlasyfikacyjneDropDownList option");
List<Semester> semesters = new ArrayList<>();
for (Element e : semesterOptions) {
Semester semester = new Semester()
.setId(e.text())
.setNumber(e.attr("value"));
if ("selected".equals(e.attr("selected"))) {
semester.setCurrent(true);
}
semesters.add(semester);
}
return semesters;
}
public Semester getCurrentSemester(List<Semester> semesterList) {
Semester current = null;
for (Semester s : semesterList) {
if (s.isCurrent()) {
current = s;
break;
}
}
return current;
}
}

View File

@ -1,196 +0,0 @@
package io.github.wulkanowy.api;
import java.io.IOException;
import io.github.wulkanowy.api.attendance.AttendanceStatistics;
import io.github.wulkanowy.api.attendance.AttendanceTable;
import io.github.wulkanowy.api.exams.ExamsWeek;
import io.github.wulkanowy.api.grades.GradesList;
import io.github.wulkanowy.api.grades.SubjectsList;
import io.github.wulkanowy.api.login.AccountPermissionException;
import io.github.wulkanowy.api.login.BadCredentialsException;
import io.github.wulkanowy.api.login.Login;
import io.github.wulkanowy.api.login.LoginErrorException;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
import io.github.wulkanowy.api.login.VulcanOfflineException;
import io.github.wulkanowy.api.messages.Messages;
import io.github.wulkanowy.api.notes.AchievementsList;
import io.github.wulkanowy.api.notes.NotesList;
import io.github.wulkanowy.api.school.SchoolInfo;
import io.github.wulkanowy.api.school.TeachersInfo;
import io.github.wulkanowy.api.timetable.Timetable;
import io.github.wulkanowy.api.user.BasicInformation;
import io.github.wulkanowy.api.user.FamilyInformation;
public class Vulcan {
private String id;
private String symbol;
private SnP snp;
private String protocolSchema = "https";
private String logHost = "vulcan.net.pl";
private String email;
private Client client;
private Login login;
public void setClient(Client client) {
this.client = client;
}
public void setLogin(Login login) {
this.login = login;
}
public void login(String email, String password, String symbol)
throws BadCredentialsException, AccountPermissionException,
LoginErrorException, IOException, VulcanOfflineException {
setFullEndpointInfo(email);
login = getLogin();
this.symbol = login.login(this.email, password, symbol);
}
public Vulcan login(String email, String password, String symbol, String id)
throws BadCredentialsException, AccountPermissionException,
LoginErrorException, IOException, VulcanOfflineException {
login(email, password, symbol);
this.id = id;
return this;
}
String getProtocolSchema() {
return protocolSchema;
}
String getLogHost() {
return logHost;
}
public String getEmail() {
return email;
}
public String getSymbol() {
return symbol;
}
private void setFullEndpointInfo(String email) {
String[] creds = email.split("\\\\");
this.email = email;
if (creds.length >= 2) {
String[] url = creds[0].split("://");
this.protocolSchema = url[0];
this.logHost = url[1];
this.email = creds[2];
}
}
protected Client getClient() {
if (null != client) {
return client;
}
client = new Client(getProtocolSchema(), getLogHost(), symbol);
return client;
}
protected Login getLogin() {
if (null != login) {
return login;
}
login = new Login(getClient());
return login;
}
public SnP getStudentAndParent() throws IOException, NotLoggedInErrorException {
if (0 == getClient().getCookies().size()) {
throw new NotLoggedInErrorException();
}
if (null != snp) {
return snp;
}
snp = createSnp(getClient(), id);
snp.storeContextCookies();
return snp;
}
SnP createSnp(Client client, String id) {
if (null == id) {
return new StudentAndParent(client);
}
return new StudentAndParent(client, id);
}
public AttendanceStatistics getAttendanceStatistics() throws IOException, NotLoggedInErrorException {
return new AttendanceStatistics(getStudentAndParent());
}
public AttendanceTable getAttendanceTable() throws IOException, NotLoggedInErrorException {
return new AttendanceTable(getStudentAndParent());
}
public ExamsWeek getExamsList() throws IOException, NotLoggedInErrorException {
return new ExamsWeek(getStudentAndParent());
}
public GradesList getGradesList() throws IOException, NotLoggedInErrorException {
return new GradesList(getStudentAndParent());
}
public SubjectsList getSubjectsList() throws IOException, NotLoggedInErrorException {
return new SubjectsList(getStudentAndParent());
}
public AchievementsList getAchievementsList() throws IOException, NotLoggedInErrorException {
return new AchievementsList(getStudentAndParent());
}
public NotesList getNotesList() throws IOException, NotLoggedInErrorException {
return new NotesList(getStudentAndParent());
}
public SchoolInfo getSchoolInfo() throws IOException, NotLoggedInErrorException {
return new SchoolInfo(getStudentAndParent());
}
public TeachersInfo getTeachersInfo() throws IOException, NotLoggedInErrorException {
return new TeachersInfo(getStudentAndParent());
}
public Timetable getTimetable() throws IOException, NotLoggedInErrorException {
return new Timetable(getStudentAndParent());
}
public BasicInformation getBasicInformation() throws IOException, NotLoggedInErrorException {
return new BasicInformation(getStudentAndParent());
}
public FamilyInformation getFamilyInformation() throws IOException, NotLoggedInErrorException {
return new FamilyInformation(getStudentAndParent());
}
public Messages getMessages() {
return new Messages(getClient());
}
}

View File

@ -1,88 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.apache.commons.lang3.math.NumberUtils;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.generic.Month;
import io.github.wulkanowy.api.generic.Subject;
public class AttendanceStatistics {
private SnP snp;
private String attendancePageUrl = "Frekwencja.mvc";
public AttendanceStatistics(SnP snp) {
this.snp = snp;
}
public Types getTypesTable() throws IOException {
return getTypesTable("");
}
public Types getTypesTable(String tick) throws IOException {
return getTypesTable(tick, -1);
}
public List<Subject> getSubjectList() throws IOException {
Element mainContainer = snp.getSnPPageDocument(attendancePageUrl)
.select(".mainContainer #idPrzedmiot").first();
List<Subject> subjectList = new ArrayList<>();
for (Element subject : mainContainer.select("option")) {
subjectList.add(new Subject()
.setId(Integer.parseInt(subject.attr("value")))
.setName(subject.text())
);
}
return subjectList;
}
public Types getTypesTable(String tick, Integer subjectId) throws IOException {
Element mainContainer = snp.getSnPPageDocument((attendancePageUrl
+ "?data={tick}&idPrzedmiot={subject}")
.replace("{tick}", tick)
.replace("{subject}", subjectId.toString())
).select(".mainContainer").first();
Element table = mainContainer.select("table:nth-of-type(2)").first();
Elements headerCells = table.select("thead th");
List<Type> typeList = new ArrayList<>();
Elements typesRows = table.select("tbody tr");
// fill types with months
for (Element row : typesRows) {
Elements monthsCells = row.select("td");
List<Month> monthList = new ArrayList<>();
// iterate over month in type, first column is empty, last is `total`; (0, n-1)
for (int i = 1; i < monthsCells.size() - 1; i++) {
monthList.add(new Month()
.setValue(NumberUtils.toInt(monthsCells.get(i).text(), 0))
.setName(headerCells.get(i).text()));
}
typeList.add(new Type()
.setTotal(NumberUtils.toInt(monthsCells.last().text(), 0))
.setName(monthsCells.get(0).text())
.setMonthList(monthList));
}
String total = mainContainer.select("h2").text().split(": ")[1];
return new Types()
.setTotal(NumberUtils.toDouble(total.replace("%", "").replace(",", ".")))
.setTypeList(typeList);
}
}

View File

@ -1,101 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.generic.Day;
import io.github.wulkanowy.api.generic.Lesson;
import io.github.wulkanowy.api.generic.Week;
public class AttendanceTable {
private SnP snp;
private String attendancePageUrl = "Frekwencja.mvc?data=";
public AttendanceTable(SnP snp) {
this.snp = snp;
}
public Week<Day> getWeekTable() throws IOException {
return getWeekTable("");
}
public Week<Day> getWeekTable(String tick) throws IOException {
Element table = snp.getSnPPageDocument(attendancePageUrl + tick)
.select(".mainContainer .presentData").first();
Elements headerCells = table.select("thead th");
List<Day> days = new ArrayList<>();
for (int i = 1; i < headerCells.size(); i++) {
days.add(new Day().setDate(headerCells.get(i).html().split("<br>")[1]));
}
Elements hoursInDays = table.select("tbody tr");
// fill days in week with lessons
for (Element row : hoursInDays) {
Elements hours = row.select("td");
// fill hours in day
int size = hours.size();
for (int i = 1; i < size; i++) {
days.get(i - 1).setLesson(getNewLesson(hours.get(i)));
}
}
String[] dayDescription = headerCells.get(1).html().split("<br>");
return new Week<Day>()
.setStartDayDate(dayDescription[1])
.setDays(days);
}
private Lesson getNewLesson(Element cell) {
Lesson lesson = new Lesson();
lesson.setSubject(cell.select("span").text());
if (LessonTypes.CLASS_NOT_EXIST.equals(cell.attr("class"))) {
lesson.setNotExist(true);
lesson.setEmpty(true);
return lesson;
}
switch (cell.select("div").attr("class")) {
case LessonTypes.CLASS_PRESENCE:
lesson.setPresence(true);
break;
case LessonTypes.CLASS_ABSENCE_UNEXCUSED:
lesson.setAbsenceUnexcused(true);
break;
case LessonTypes.CLASS_ABSENCE_EXCUSED:
lesson.setAbsenceExcused(true);
break;
case LessonTypes.CLASS_ABSENCE_FOR_SCHOOL_REASONS:
lesson.setAbsenceForSchoolReasons(true);
break;
case LessonTypes.CLASS_UNEXCUSED_LATENESS:
lesson.setUnexcusedLateness(true);
break;
case LessonTypes.CLASS_EXCUSED_LATENESS:
lesson.setExcusedLateness(true);
break;
case LessonTypes.CLASS_EXEMPTION:
lesson.setExemption(true);
break;
default:
lesson.setEmpty(true);
break;
}
return lesson;
}
}

View File

@ -1,24 +0,0 @@
package io.github.wulkanowy.api.attendance;
class LessonTypes {
static final String CLASS_NOT_EXIST = "x-sp-nieobecny-w-oddziale";
static final String CLASS_PRESENCE = "x-obecnosc";
static final String CLASS_ABSENCE_UNEXCUSED = "x-nieobecnosc-nieuspr";
static final String CLASS_ABSENCE_EXCUSED = "x-nieobecnosc-uspr";
static final String CLASS_ABSENCE_FOR_SCHOOL_REASONS = "x-nieobecnosc-przycz-szkol";
static final String CLASS_UNEXCUSED_LATENESS = "x-sp-nieusprawiedliwione";
static final String CLASS_EXCUSED_LATENESS = "x-sp-spr";
static final String CLASS_EXEMPTION = "x-sp-zwolnienie";
private LessonTypes() {
throw new IllegalStateException("Utility class");
}
}

View File

@ -1,42 +0,0 @@
package io.github.wulkanowy.api.attendance;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.generic.Month;
public class Type {
private String name = "";
private int total = 0;
private List<Month> monthList = new ArrayList<>();
public String getName() {
return name;
}
public Type setName(String name) {
this.name = name;
return this;
}
public int getTotal() {
return total;
}
public Type setTotal(int total) {
this.total = total;
return this;
}
public List<Month> getMonthList() {
return monthList;
}
public Type setMonthList(List<Month> monthList) {
this.monthList = monthList;
return this;
}
}

View File

@ -1,29 +0,0 @@
package io.github.wulkanowy.api.attendance;
import java.util.ArrayList;
import java.util.List;
public class Types {
private double total = 0;
private List<Type> typeList = new ArrayList<>();
public double getTotal() {
return total;
}
public Types setTotal(double total) {
this.total = total;
return this;
}
public List<Type> getTypeList() {
return typeList;
}
public Types setTypeList(List<Type> typeList) {
this.typeList = typeList;
return this;
}
}

View File

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.exams;
public class Exam {
private String subjectAndGroup = "";
private String type = "";
private String description = "";
private String teacher = "";
private String entryDate = "";
public String getSubjectAndGroup() {
return subjectAndGroup;
}
public Exam setSubjectAndGroup(String subjectAndGroup) {
this.subjectAndGroup = subjectAndGroup;
return this;
}
public String getType() {
return type;
}
public Exam setType(String type) {
this.type = type;
return this;
}
public String getDescription() {
return description;
}
public Exam setDescription(String description) {
this.description = description;
return this;
}
public String getTeacher() {
return teacher;
}
public Exam setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getEntryDate() {
return entryDate;
}
public Exam setEntryDate(String entryDate) {
this.entryDate = entryDate;
return this;
}
}

View File

@ -1,19 +0,0 @@
package io.github.wulkanowy.api.exams;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.generic.Day;
public class ExamDay extends Day {
private List<Exam> examList = new ArrayList<>();
public List<Exam> getExamList() {
return examList;
}
public void addExam(Exam exam) {
this.examList.add(exam);
}
}

View File

@ -1,64 +0,0 @@
package io.github.wulkanowy.api.exams;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.generic.Week;
public class ExamsWeek {
private static final String EXAMS_PAGE_URL = "Sprawdziany.mvc/Terminarz?rodzajWidoku=2&data=";
private final SnP snp;
public ExamsWeek(SnP snp) {
this.snp = snp;
}
public Week<ExamDay> getCurrent() throws IOException {
return getWeek("", true);
}
public Week<ExamDay> getWeek(String tick, final boolean onlyNotEmpty) throws IOException {
Document examsPage = snp.getSnPPageDocument(EXAMS_PAGE_URL + tick);
Elements examsDays = examsPage.select(".mainContainer > div:not(.navigation)");
List<ExamDay> days = new ArrayList<>();
for (Element item : examsDays) {
ExamDay day = new ExamDay();
Element dayHeading = item.select("h2").first();
if (null == dayHeading && onlyNotEmpty) {
continue;
}
if (null != dayHeading) {
day.setDate(dayHeading.text().split(", ")[1]);
}
Elements exams = item.select("article");
for (Element e : exams) {
day.addExam(new Exam()
.setSubjectAndGroup(snp.getRowDataChildValue(e, 1))
.setType(snp.getRowDataChildValue(e, 2))
.setDescription(snp.getRowDataChildValue(e, 3))
.setTeacher(snp.getRowDataChildValue(e, 4).split(", ")[0])
.setEntryDate(snp.getRowDataChildValue(e, 4).split(", ")[1])
);
}
days.add(day);
}
return new Week<ExamDay>()
.setStartDayDate(examsDays.select("h2").first().text().split(" ")[1])
.setDays(days);
}
}

View File

@ -1,63 +0,0 @@
package io.github.wulkanowy.api.generic;
import java.util.ArrayList;
import java.util.List;
public class Day {
private List<Lesson> lessons = new ArrayList<>();
protected String date = "";
private String dayName = "";
private boolean isFreeDay = false;
private String freeDayName = "";
public Lesson getLesson(int index) {
return lessons.get(index);
}
public List<Lesson> getLessons() {
return lessons;
}
public Day setLesson(Lesson lesson) {
this.lessons.add(lesson);
return this;
}
public String getDate() {
return date;
}
public Day setDate(String date) {
this.date = date;
return this;
}
public String getDayName() {
return dayName;
}
public void setDayName(String dayName) {
this.dayName = dayName;
}
public boolean isFreeDay() {
return isFreeDay;
}
public void setFreeDay(boolean freeDay) {
isFreeDay = freeDay;
}
public String getFreeDayName() {
return freeDayName;
}
public void setFreeDayName(String freeDayName) {
this.freeDayName = freeDayName;
}
}

View File

@ -1,240 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Lesson {
private String number = "";
private String subject = "";
private String teacher = "";
private String room = "";
private String description = "";
private String groupName = "";
private String startTime = "";
private String endTime = "";
private String date = "";
private boolean isEmpty = false;
private boolean isDivisionIntoGroups = false;
private boolean isPlanning = false;
private boolean isRealized = false;
private boolean isMovedOrCanceled = false;
private boolean isNewMovedInOrChanged = false;
private boolean isNotExist = false;
private boolean isPresence = false;
private boolean isAbsenceUnexcused = false;
private boolean isAbsenceExcused = false;
private boolean isUnexcusedLateness = false;
private boolean isAbsenceForSchoolReasons = false;
private boolean isExcusedLateness = false;
private boolean isExemption = false;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getSubject() {
return subject;
}
public Lesson setSubject(String subject) {
this.subject = subject;
return this;
}
public String getTeacher() {
return teacher;
}
public Lesson setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getRoom() {
return room;
}
public Lesson setRoom(String room) {
this.room = room;
return this;
}
public String getDescription() {
return description;
}
public Lesson setDescription(String description) {
this.description = description;
return this;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getDate() {
return date;
}
public Lesson setDate(String date) {
this.date = date;
return this;
}
public boolean isEmpty() {
return isEmpty;
}
public Lesson setEmpty(boolean empty) {
isEmpty = empty;
return this;
}
public boolean isDivisionIntoGroups() {
return isDivisionIntoGroups;
}
public void setDivisionIntoGroups(boolean divisionIntoGroups) {
isDivisionIntoGroups = divisionIntoGroups;
}
public boolean isPlanning() {
return isPlanning;
}
public void setPlanning(boolean planning) {
isPlanning = planning;
}
public boolean isRealized() {
return isRealized;
}
public void setRealized(boolean realized) {
isRealized = realized;
}
public boolean isMovedOrCanceled() {
return isMovedOrCanceled;
}
public void setMovedOrCanceled(boolean movedOrCanceled) {
isMovedOrCanceled = movedOrCanceled;
}
public boolean isNewMovedInOrChanged() {
return isNewMovedInOrChanged;
}
public void setNewMovedInOrChanged(boolean newMovedInOrChanged) {
isNewMovedInOrChanged = newMovedInOrChanged;
}
public boolean isNotExist() {
return isNotExist;
}
public void setNotExist(boolean notExist) {
isNotExist = notExist;
}
public boolean isPresence() {
return isPresence;
}
public void setPresence(boolean presence) {
isPresence = presence;
}
public boolean isAbsenceUnexcused() {
return isAbsenceUnexcused;
}
public void setAbsenceUnexcused(boolean absenceUnexcused) {
isAbsenceUnexcused = absenceUnexcused;
}
public boolean isAbsenceExcused() {
return isAbsenceExcused;
}
public void setAbsenceExcused(boolean absenceExcused) {
isAbsenceExcused = absenceExcused;
}
public boolean isUnexcusedLateness() {
return isUnexcusedLateness;
}
public void setUnexcusedLateness(boolean unexcusedLateness) {
isUnexcusedLateness = unexcusedLateness;
}
public boolean isAbsenceForSchoolReasons() {
return isAbsenceForSchoolReasons;
}
public void setAbsenceForSchoolReasons(boolean absenceForSchoolReasons) {
isAbsenceForSchoolReasons = absenceForSchoolReasons;
}
public boolean isExcusedLateness() {
return isExcusedLateness;
}
public void setExcusedLateness(boolean excusedLateness) {
isExcusedLateness = excusedLateness;
}
public boolean isExemption() {
return isExemption;
}
public void setExemption(boolean exemption) {
isExemption = exemption;
}
}

View File

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Month {
private String name = "";
private int value = 0;
public String getName() {
return name;
}
public Month setName(String name) {
this.name = name;
return this;
}
public int getValue() {
return value;
}
public Month setValue(int value) {
this.value = value;
return this;
}
}

View File

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.generic;
public class Subject {
private int id = -1;
private String name = "";
public int getId() {
return id;
}
public Subject setId(int id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
}

View File

@ -1,33 +0,0 @@
package io.github.wulkanowy.api.generic;
import java.util.ArrayList;
import java.util.List;
public class Week<T> {
private List<T> days = new ArrayList<>();
private String startDayDate = "";
public T getDay(int index) {
return days.get(index);
}
public List<T> getDays() {
return days;
}
public Week<T> setDays(List<T> days) {
this.days = days;
return this;
}
public String getStartDayDate() {
return startDayDate;
}
public Week<T> setStartDayDate(String startDayDate) {
this.startDayDate = startDayDate;
return this;
}
}

View File

@ -1,112 +0,0 @@
package io.github.wulkanowy.api.grades;
public class Grade {
protected String value = "";
private String subject = "";
private String color = "";
private String symbol = "";
private String description = "";
private String weight = "";
private String date = "";
private String teacher = "";
private String semester = "";
public String getSubject() {
return subject;
}
public Grade setSubject(String subject) {
this.subject = subject;
return this;
}
public String getValue() {
return value;
}
public Grade setValue(String value) {
this.value = value;
return this;
}
public String getColor() {
return color;
}
public Grade setColor(String color) {
this.color = color;
return this;
}
public String getSymbol() {
return symbol;
}
public Grade setSymbol(String symbol) {
this.symbol = symbol;
return this;
}
public String getDescription() {
return description;
}
public Grade setDescription(String description) {
this.description = description;
return this;
}
public String getWeight() {
return weight;
}
public Grade setWeight(String weight) {
this.weight = weight;
return this;
}
public String getDate() {
return date;
}
public Grade setDate(String date) {
this.date = date;
return this;
}
public String getTeacher() {
return teacher;
}
public Grade setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getSemester() {
return semester;
}
public Grade setSemester(String semester) {
this.semester = semester;
return this;
}
}

View File

@ -1,82 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.github.wulkanowy.api.Semester;
import io.github.wulkanowy.api.SnP;
public class GradesList {
private static final String GRADES_PAGE_URL = "Oceny/Wszystkie?details=2&okres=";
private SnP snp = null;
private List<Grade> grades = new ArrayList<>();
public GradesList(SnP snp) {
this.snp = snp;
}
private String getGradesPageUrl() {
return GRADES_PAGE_URL;
}
public List<Grade> getAll() throws IOException, ParseException {
return getAll("");
}
public List<Grade> getAll(String semester) throws IOException, ParseException {
Document gradesPage = snp.getSnPPageDocument(getGradesPageUrl() + semester);
Elements gradesRows = gradesPage.select(".ocenySzczegoly-table > tbody > tr");
Semester currentSemester = snp.getCurrentSemester(snp.getSemesters(gradesPage));
for (Element row : gradesRows) {
if ("Brak ocen".equals(row.select("td:nth-child(2)").text())) {
continue;
}
String descriptions = row.select("td:nth-child(3)").text();
String symbol = descriptions.split(", ")[0];
String description = descriptions.replaceFirst(symbol, "").replaceFirst(", ", "");
Pattern pattern = Pattern.compile("#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})");
Matcher matcher = pattern.matcher(row.select("td:nth-child(2) span.ocenaCzastkowa")
.attr("style"));
String color = "";
while (matcher.find()) {
color = matcher.group(1);
}
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(row.select("td:nth-child(5)").text());
sdf.applyPattern("yyyy-MM-dd");
grades.add(new Grade()
.setSubject(row.select("td:nth-child(1)").text())
.setValue(row.select("td:nth-child(2)").text())
.setColor(color)
.setSymbol(symbol)
.setDescription(description)
.setWeight(row.select("td:nth-child(4)").text())
.setDate(sdf.format(d))
.setTeacher(row.select("td:nth-child(6)").text())
.setSemester(currentSemester.getNumber())
);
}
return grades;
}
}

View File

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.grades;
public class Subject {
private String name;
private String predictedRating;
private String finalRating;
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
public String getPredictedRating() {
return predictedRating;
}
public Subject setPredictedRating(String predictedRating) {
this.predictedRating = predictedRating;
return this;
}
public String getFinalRating() {
return finalRating;
}
public Subject setFinalRating(String finalRating) {
this.finalRating = finalRating;
return this;
}
}

View File

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
public class SubjectsList {
private static final String SUBJECTS_PAGE_URL = "Oceny/Wszystkie?details=1";
private SnP snp = null;
public SubjectsList(SnP snp) {
this.snp = snp;
}
public List<Subject> getAll() throws IOException {
Document subjectPage = snp.getSnPPageDocument(SUBJECTS_PAGE_URL);
Elements rows = subjectPage.select(".ocenyZwykle-table > tbody > tr");
List<Subject> subjects = new ArrayList<>();
for (Element subjectRow : rows) {
subjects.add(new Subject()
.setName(subjectRow.select("td:nth-child(1)").text())
.setPredictedRating(subjectRow.select("td:nth-last-child(2)").text())
.setFinalRating(subjectRow.select("td:nth-last-child(1)").text())
);
}
return subjects;
}
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.login;
public class AccountPermissionException extends Exception {
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.login;
public class BadCredentialsException extends Exception {
}

View File

@ -1,97 +0,0 @@
package io.github.wulkanowy.api.login;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;
import java.io.IOException;
import io.github.wulkanowy.api.Client;
public class Login {
private static final String LOGIN_PAGE_URL = "{schema}://cufs.{host}/{symbol}/Account/LogOn" +
"?ReturnUrl=%2F{symbol}%2FFS%2FLS%3Fwa%3Dwsignin1.0%26wtrealm%3D" +
"{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx%26wctx%3D" +
"{schema}%253a%252f%252fuonetplus.{host}%252f{symbol}%252fLoginEndpoint.aspx";
private static final String LOGIN_ENDPOINT_PAGE_URL =
"{schema}://uonetplus.{host}/{symbol}/LoginEndpoint.aspx";
private Client client;
private String symbol;
public Login(Client client) {
this.client = client;
}
public String login(String email, String password, String symbol)
throws BadCredentialsException, LoginErrorException,
AccountPermissionException, IOException, VulcanOfflineException {
String certificate = sendCredentials(email, password, symbol);
return sendCertificate(certificate, symbol);
}
String sendCredentials(String email, String password, String symbol)
throws IOException, BadCredentialsException {
this.symbol = symbol;
Document html = client.postPageByUrl(LOGIN_PAGE_URL, new String[][]{
{"LoginName", email},
{"Password", password}
});
if (null != html.select(".ErrorMessage").first()) {
throw new BadCredentialsException();
}
return html.select("input[name=wresult]").attr("value");
}
String sendCertificate(String certificate, String defaultSymbol)
throws IOException, LoginErrorException, AccountPermissionException, VulcanOfflineException {
this.symbol = findSymbol(defaultSymbol, certificate);
client.setSymbol(this.symbol);
Document html = client.postPageByUrl(LOGIN_ENDPOINT_PAGE_URL, new String[][]{
{"wa", "wsignin1.0"},
{"wresult", certificate}
});
if (html.getElementsByTag("title").text().equals("Logowanie")) {
throw new AccountPermissionException();
}
if (html.getElementsByTag("title").text().equals("Przerwa techniczna")) {
throw new VulcanOfflineException();
}
if (!html.select("title").text().equals("Uonet+")) {
throw new LoginErrorException();
}
return this.symbol;
}
private String findSymbol(String symbol, String certificate) {
if ("Default".equals(symbol)) {
return findSymbolInCertificate(certificate);
}
return symbol;
}
String findSymbolInCertificate(String certificate) {
Elements els = Jsoup.parse(certificate.replaceAll(":", ""), "", Parser.xmlParser())
.select("[AttributeName=\"UserInstance\"] samlAttributeValue");
if (els.isEmpty()) {
return "";
}
return els.get(1).text();
}
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.login;
public class LoginErrorException extends NotLoggedInErrorException {
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.login;
public class NotLoggedInErrorException extends Exception {
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.login;
public class VulcanOfflineException extends Exception {
}

View File

@ -1,4 +0,0 @@
package io.github.wulkanowy.api.messages;
class BadRequestException extends Exception {
}

View File

@ -1,30 +0,0 @@
package io.github.wulkanowy.api.messages;
import com.google.gson.annotations.SerializedName;
public class Message {
@SerializedName("Nieprzeczytana")
public boolean unread;
@SerializedName("Data")
public String date;
@SerializedName("Tresc")
public String content;
@SerializedName("Temat")
public String subject;
@SerializedName("NadawcaNazwa")
public String sender;
@SerializedName("IdWiadomosci")
public int messageID;
@SerializedName("IdNadawca")
public int senderID;
@SerializedName("Id")
public int id;
}

View File

@ -1,98 +0,0 @@
package io.github.wulkanowy.api.messages;
import com.google.gson.Gson;
import com.google.gson.JsonParseException;
import java.io.IOException;
import java.util.List;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public class Messages {
private static final String BASE_URL = "{schema}://uonetplus-uzytkownik.{host}/{symbol}/";
private static final String LIST_BASE_URL = BASE_URL + "Wiadomosc.mvc/";
private static final String RECEIVED_URL = LIST_BASE_URL + "GetWiadomosciOdebrane";
private static final String SENT_URL = LIST_BASE_URL + "GetWiadomosciWyslane";
private static final String DELETED_URL = LIST_BASE_URL + "GetWiadomosciUsuniete";
private static final String MESSAGE_URL = LIST_BASE_URL + "GetTrescWiadomosci";
public static final int RECEIVED_FOLDER = 1;
public static final int SENT_FOLDER = 2;
public static final int DELETED_FOLDER = 3;
private static final String ERROR_TITLE = "Błąd strony";
private Client client;
public Messages(Client client) {
this.client = client;
}
public List<Message> getReceived() throws IOException, NotLoggedInErrorException, BadRequestException {
return getMessages(RECEIVED_URL);
}
public List<Message> getSent() throws IOException, NotLoggedInErrorException, BadRequestException {
return getMessages(SENT_URL);
}
public List<Message> getDeleted() throws IOException, NotLoggedInErrorException, BadRequestException {
return getMessages(DELETED_URL);
}
private List<Message> getMessages(String url) throws IOException, NotLoggedInErrorException, BadRequestException {
String res = client.getJsonStringByUrl(url);
List<Message> messages;
try {
messages = new Gson().fromJson(res, MessagesContainer.class).data;
} catch (JsonParseException e) {
if (res.contains(ERROR_TITLE)) {
throw new BadRequestException();
}
throw new NotLoggedInErrorException();
}
return messages;
}
public Message getMessage(int id, int folder) throws IOException, BadRequestException, NotLoggedInErrorException {
String res = client.postJsonStringByUrl(MESSAGE_URL, new String[][]{
{"idWiadomosc", String.valueOf(id)},
{"Folder", String.valueOf(folder)}
});
Message message;
try {
message = new Gson().fromJson(res, MessageContainer.class).data;
} catch (JsonParseException e) {
if (res.contains(ERROR_TITLE)) {
throw new BadRequestException();
}
throw new NotLoggedInErrorException();
}
return message;
}
private static class MessagesContainer {
private List<Message> data;
}
private static class MessageContainer {
private Message data;
}
}

View File

@ -1,35 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
public class AchievementsList {
private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie";
private SnP snp = null;
private List<String> achievements = new ArrayList<>();
public AchievementsList(SnP snp) {
this.snp = snp;
}
public List<String> getAllAchievements() throws IOException {
Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL)
.select(".mainContainer > div").get(1);
Elements items = pageFragment.select("article");
for (Element item : items) {
achievements.add(item.text());
}
return achievements;
}
}

View File

@ -1,48 +0,0 @@
package io.github.wulkanowy.api.notes;
public class Note {
private String date;
private String teacher;
private String category;
private String content;
public String getDate() {
return date;
}
public Note setDate(String date) {
this.date = date;
return this;
}
public String getTeacher() {
return teacher;
}
public Note setTeacher(String teacher) {
this.teacher = teacher;
return this;
}
public String getCategory() {
return category;
}
public Note setCategory(String category) {
this.category = category;
return this;
}
public String getContent() {
return content;
}
public Note setContent(String content) {
this.content = content;
return this;
}
}

View File

@ -1,42 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
public class NotesList {
private static final String NOTES_PAGE_URL = "UwagiOsiagniecia.mvc/Wszystkie";
private SnP snp = null;
private List<Note> notes = new ArrayList<>();
public NotesList(SnP snp) {
this.snp = snp;
}
public List<Note> getAllNotes() throws IOException {
Element pageFragment = snp.getSnPPageDocument(NOTES_PAGE_URL)
.select(".mainContainer > div").get(0);
Elements items = pageFragment.select("article");
Elements dates = pageFragment.select("h2");
int index = 0;
for (Element item : items) {
notes.add(new Note()
.setDate(dates.get(index++).text())
.setTeacher(snp.getRowDataChildValue(item, 1))
.setCategory(snp.getRowDataChildValue(item, 2))
.setContent(snp.getRowDataChildValue(item, 3))
);
}
return notes;
}
}

View File

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.school;
public class SchoolData {
private String name = "";
private String address = "";
private String phoneNumber = "";
private String headmaster = "";
private String[] pedagogue;
public String getName() {
return name;
}
public SchoolData setName(String name) {
this.name = name;
return this;
}
public String getAddress() {
return address;
}
public SchoolData setAddress(String address) {
this.address = address;
return this;
}
public String getPhoneNumber() {
return phoneNumber;
}
public SchoolData setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public String getHeadmaster() {
return headmaster;
}
public SchoolData setHeadmaster(String headmaster) {
this.headmaster = headmaster;
return this;
}
public String[] getPedagogues() {
return pedagogue;
}
public SchoolData setPedagogue(String[] pedagogue) {
this.pedagogue = pedagogue;
return this;
}
}

View File

@ -1,30 +0,0 @@
package io.github.wulkanowy.api.school;
import org.jsoup.nodes.Element;
import java.io.IOException;
import io.github.wulkanowy.api.SnP;
public class SchoolInfo {
private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele";
private SnP snp = null;
public SchoolInfo(SnP snp) {
this.snp = snp;
}
public SchoolData getSchoolData() throws IOException {
Element e = snp.getSnPPageDocument(SCHOOL_PAGE_URL)
.select(".mainContainer > article").get(0);
return new SchoolData()
.setName(snp.getRowDataChildValue(e, 1))
.setAddress(snp.getRowDataChildValue(e, 2))
.setPhoneNumber(snp.getRowDataChildValue(e, 3))
.setHeadmaster(snp.getRowDataChildValue(e, 4))
.setPedagogue(snp.getRowDataChildValue(e, 5).split(", "));
}
}

View File

@ -1,26 +0,0 @@
package io.github.wulkanowy.api.school;
public class Subject {
private String name = "";
private String[] teachers;
public String getName() {
return name;
}
public Subject setName(String name) {
this.name = name;
return this;
}
public String[] getTeachers() {
return teachers;
}
public Subject setTeachers(String[] teachers) {
this.teachers = teachers;
return this;
}
}

View File

@ -1,39 +0,0 @@
package io.github.wulkanowy.api.school;
import java.util.List;
public class TeachersData {
private String className = "";
private String[] classTeacher;
private List<Subject> subjects;
public String getClassName() {
return className;
}
public TeachersData setClassName(String className) {
this.className = className;
return this;
}
public String[] getClassTeacher() {
return classTeacher;
}
public TeachersData setClassTeacher(String[] classTeacher) {
this.classTeacher = classTeacher;
return this;
}
public List<Subject> getSubjects() {
return subjects;
}
public TeachersData setSubjects(List<Subject> subjects) {
this.subjects = subjects;
return this;
}
}

View File

@ -1,42 +0,0 @@
package io.github.wulkanowy.api.school;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
public class TeachersInfo {
private static final String SCHOOL_PAGE_URL = "Szkola.mvc/Nauczyciele";
private SnP snp = null;
public TeachersInfo(SnP snp) {
this.snp = snp;
}
public TeachersData getTeachersData() throws IOException {
Document doc = snp.getSnPPageDocument(SCHOOL_PAGE_URL);
Elements rows = doc.select(".mainContainer > table tbody tr");
String description = doc.select(".mainContainer > p").first().text();
List<Subject> subjects = new ArrayList<>();
for (Element subject : rows) {
subjects.add(new Subject()
.setName(subject.select("td").get(1).text())
.setTeachers(subject.select("td").get(2).text().split(", "))
);
}
return new TeachersData()
.setClassName(description.split(", ")[0].split(": ")[1].trim())
.setClassTeacher(description.split("Wychowawcy:")[1].trim().split(", "))
.setSubjects(subjects);
}
}

View File

@ -1,16 +0,0 @@
package io.github.wulkanowy.api.timetable;
class LessonTypes {
static final String CLASS_PLANNING = "x-treelabel-ppl";
static final String CLASS_REALIZED = "x-treelabel-rlz";
static final String CLASS_MOVED_OR_CANCELED = "x-treelabel-inv";
static final String CLASS_NEW_MOVED_IN_OR_CHANGED = "x-treelabel-zas";
private LessonTypes() {
throw new IllegalStateException("Utility class");
}
}

View File

@ -1,215 +0,0 @@
package io.github.wulkanowy.api.timetable;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import io.github.wulkanowy.api.SnP;
import io.github.wulkanowy.api.generic.Day;
import io.github.wulkanowy.api.generic.Lesson;
import io.github.wulkanowy.api.generic.Week;
public class Timetable {
private static final String TIMETABLE_PAGE_URL = "Lekcja.mvc/PlanLekcji?data=";
private SnP snp;
public Timetable(SnP snp) {
this.snp = snp;
}
public Week<Day> getWeekTable() throws IOException, ParseException {
return getWeekTable("");
}
public Week<Day> getWeekTable(final String tick) throws IOException, ParseException {
Element table = snp.getSnPPageDocument(TIMETABLE_PAGE_URL + tick)
.select(".mainContainer .presentData").first();
List<Day> days = getDays(table.select("thead th"));
setLessonToDays(table, days);
return new Week<Day>()
.setStartDayDate(days.get(0).getDate())
.setDays(days);
}
private List<Day> getDays(Elements tableHeaderCells) throws ParseException {
List<Day> days = new ArrayList<>();
for (int i = 2; i < 7; i++) {
String[] dayHeaderCell = tableHeaderCells.get(i).html().split("<br>");
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy", Locale.ROOT);
Date d = sdf.parse(dayHeaderCell[1].trim());
sdf.applyPattern("yyyy-MM-dd");
Day day = new Day();
day.setDayName(dayHeaderCell[0]);
day.setDate(sdf.format(d));
if (tableHeaderCells.get(i).hasClass("free-day")) {
day.setFreeDay(true);
day.setFreeDayName(dayHeaderCell[2]);
}
days.add(day);
}
return days;
}
private void setLessonToDays(Element table, List<Day> days) {
for (Element row : table.select("tbody tr")) {
Elements hours = row.select("td");
// fill hours in day
for (int i = 2; i < hours.size(); i++) {
Lesson lesson = new Lesson();
String[] startEndEnd = hours.get(1).text().split(" ");
lesson.setStartTime(startEndEnd[0]);
lesson.setEndTime(startEndEnd[1]);
lesson.setDate(days.get(i - 2).getDate());
lesson.setNumber(hours.get(0).text());
addLessonDetails(lesson, hours.get(i).select("div"));
days.get(i - 2).setLesson(lesson);
}
}
}
private void addLessonDetails(Lesson lesson, Elements e) {
moveWarningToLessonNode(e);
switch (e.size()) {
case 1:
addLessonInfoFromElement(lesson, e.first());
break;
case 2:
addLessonInfoFromElement(lesson, e.last());
break;
case 3:
addLessonInfoFromElement(lesson, e.get(1));
break;
default:
lesson.setEmpty(true);
break;
}
}
private void moveWarningToLessonNode(Elements e) {
Elements warn = e.select(".uwaga-panel");
if (!warn.isEmpty()) {
e.select(".x-treelabel-rlz").last().text("(" + warn.text() + ")");
e.remove(1);
}
}
private void addLessonInfoFromElement(Lesson lesson, Element e) {
Elements spans = e.select("span");
addTypeInfo(lesson, spans);
addNormalLessonInfo(lesson, spans);
addChangesInfo(lesson, spans);
addGroupLessonInfo(lesson, spans);
}
private void addTypeInfo(Lesson lesson, Elements spans) {
if (spans.first().hasClass(LessonTypes.CLASS_PLANNING)) {
lesson.setPlanning(true);
}
if (spans.first().hasClass(LessonTypes.CLASS_MOVED_OR_CANCELED)) {
lesson.setMovedOrCanceled(true);
}
if (spans.first().hasClass(LessonTypes.CLASS_NEW_MOVED_IN_OR_CHANGED)) {
lesson.setNewMovedInOrChanged(true);
}
if (spans.last().hasClass(LessonTypes.CLASS_REALIZED) || "".equals(spans.first().attr("class"))) {
lesson.setRealized(true);
}
}
private void addNormalLessonInfo(Lesson lesson, Elements spans) {
if (3 == spans.size()) {
lesson.setSubject(spans.get(0).text());
lesson.setTeacher(spans.get(1).text());
lesson.setRoom(spans.get(2).text());
}
}
private void addChangesInfo(Lesson lesson, Elements spans) {
if (!spans.last().hasClass(LessonTypes.CLASS_REALIZED)) {
return;
}
if (7 == spans.size()) {
lesson.setSubject(spans.get(3).text());
lesson.setTeacher(spans.get(4).text());
lesson.setRoom(spans.get(5).text());
lesson.setMovedOrCanceled(false);
lesson.setNewMovedInOrChanged(true);
lesson.setDescription(StringUtils.substringBetween(spans.last().text(), "(", ")")
+ " (poprzednio: " + spans.get(0).text() + ")");
} else if (9 == spans.size()) {
String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(4));
lesson.setSubject(subjectAndGroupInfo[0]);
lesson.setGroupName(subjectAndGroupInfo[1]);
lesson.setTeacher(spans.get(6).text());
lesson.setRoom(spans.get(7).text());
lesson.setMovedOrCanceled(false);
lesson.setNewMovedInOrChanged(true);
lesson.setDivisionIntoGroups(true);
lesson.setDescription(StringUtils.substringBetween(spans.last().text(), "(", ")")
+ " (poprzednio: " + getLessonAndGroupInfoFromSpan(spans.get(0))[0] + ")");
} else if (4 <= spans.size()) {
lesson.setSubject(spans.get(0).text());
lesson.setTeacher(spans.get(1).text());
lesson.setRoom(spans.get(2).text());
lesson.setDescription(StringUtils.substringBetween(spans.last().text(), "(", ")"));
}
}
private void addGroupLessonInfo(Lesson lesson, Elements spans) {
if (4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED)) {
lesson.setRoom(spans.last().text());
}
if ((4 == spans.size() && !spans.last().hasClass(LessonTypes.CLASS_REALIZED) || 5 == spans.size())) {
String[] subjectAndGroupInfo = getLessonAndGroupInfoFromSpan(spans.get(0));
lesson.setSubject(subjectAndGroupInfo[0]);
lesson.setGroupName(subjectAndGroupInfo[1]);
lesson.setTeacher(spans.get(2).text());
lesson.setDivisionIntoGroups(true);
}
if (5 == spans.size()) {
lesson.setRoom(spans.get(3).text());
}
}
private String[] getLessonAndGroupInfoFromSpan(Element span) {
String[] subjectNameArray = span.text().split(" ");
String groupName = subjectNameArray[subjectNameArray.length - 1];
return new String[]{
span.text().replace(" " + groupName, ""),
StringUtils.substringBetween(groupName, "[", "]")
};
}
}

View File

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.user;
public class AddressData {
private String address = "";
private String registeredAddress = "";
private String correspondenceAddress = "";
public String getAddress() {
return address;
}
public AddressData setAddress(String address) {
this.address = address;
return this;
}
public String getRegisteredAddress() {
return registeredAddress;
}
public AddressData setRegisteredAddress(String registeredAddress) {
this.registeredAddress = registeredAddress;
return this;
}
public String getCorrespondenceAddress() {
return correspondenceAddress;
}
public AddressData setCorrespondenceAddress(String correspondenceAddress) {
this.correspondenceAddress = correspondenceAddress;
return this;
}
}

View File

@ -1,69 +0,0 @@
package io.github.wulkanowy.api.user;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import io.github.wulkanowy.api.SnP;
public class BasicInformation {
private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe";
private static final String CONTENT_QUERY = ".mainContainer > article";
private Document studentDataPageDocument;
private SnP snp;
public BasicInformation(SnP snp) {
this.snp = snp;
}
public Document getStudentDataPageDocument() throws IOException {
if (null == studentDataPageDocument) {
studentDataPageDocument = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL);
}
return studentDataPageDocument;
}
public PersonalData getPersonalData() throws IOException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(0);
String name = snp.getRowDataChildValue(e, 1);
String[] names = name.split(" ");
return new PersonalData()
.setName(name)
.setFirstName(names[0])
.setSurname(names[names.length - 1])
.setFirstAndLastName(names[0] + " " + names[names.length - 1])
.setDateAndBirthPlace(snp.getRowDataChildValue(e, 2))
.setPesel(snp.getRowDataChildValue(e, 3))
.setGender(snp.getRowDataChildValue(e, 4))
.setPolishCitizenship("Tak".equals(snp.getRowDataChildValue(e, 5)))
.setFamilyName(snp.getRowDataChildValue(e, 6))
.setParentsNames(snp.getRowDataChildValue(e, 7));
}
public AddressData getAddressData() throws IOException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(1);
return new AddressData()
.setAddress(snp.getRowDataChildValue(e, 1))
.setRegisteredAddress(snp.getRowDataChildValue(e, 2))
.setCorrespondenceAddress(snp.getRowDataChildValue(e, 3));
}
public ContactDetails getContactDetails() throws IOException {
Element e = getStudentDataPageDocument().select(CONTENT_QUERY).get(2);
return new ContactDetails()
.setPhoneNumber(snp.getRowDataChildValue(e, 1))
.setCellPhoneNumber(snp.getRowDataChildValue(e, 2))
.setEmail(snp.getRowDataChildValue(e, 3));
}
}

View File

@ -1,37 +0,0 @@
package io.github.wulkanowy.api.user;
public class ContactDetails {
private String phoneNumber = "";
private String cellPhoneNumber = "";
private String email = "";
public String getPhoneNumber() {
return phoneNumber;
}
public ContactDetails setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public String getCellPhoneNumber() {
return cellPhoneNumber;
}
public ContactDetails setCellPhoneNumber(String cellPhoneNumber) {
this.cellPhoneNumber = cellPhoneNumber;
return this;
}
public String getEmail() {
return email;
}
public ContactDetails setEmail(String email) {
this.email = email;
return this;
}
}

View File

@ -1,40 +0,0 @@
package io.github.wulkanowy.api.user;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.SnP;
public class FamilyInformation {
private static final String STUDENT_DATA_PAGE_URL = "Uczen.mvc/DanePodstawowe";
private SnP snp;
public FamilyInformation(SnP snp) {
this.snp = snp;
}
public List<FamilyMember> getFamilyMembers() throws IOException {
Elements membersElements = snp.getSnPPageDocument(STUDENT_DATA_PAGE_URL)
.select(".mainContainer > article:nth-of-type(n+4)");
List<FamilyMember> familyMembers = new ArrayList<>();
for (Element e : membersElements) {
familyMembers.add(new FamilyMember()
.setName(snp.getRowDataChildValue(e, 1))
.setKinship(snp.getRowDataChildValue(e, 2))
.setAddress(snp.getRowDataChildValue(e, 3))
.setTelephones(snp.getRowDataChildValue(e, 4))
.setEmail(snp.getRowDataChildValue(e, 5))
);
}
return familyMembers;
}
}

View File

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.user;
public class FamilyMember {
private String name = "";
private String kinship = "";
private String address = "";
private String telephones = "";
private String email = "";
public String getName() {
return name;
}
public FamilyMember setName(String name) {
this.name = name;
return this;
}
public String getKinship() {
return kinship;
}
public FamilyMember setKinship(String kinship) {
this.kinship = kinship;
return this;
}
public String getAddress() {
return address;
}
public FamilyMember setAddress(String address) {
this.address = address;
return this;
}
public String getTelephones() {
return telephones;
}
public FamilyMember setTelephones(String telephones) {
this.telephones = telephones;
return this;
}
public String getEmail() {
return email;
}
public FamilyMember setEmail(String email) {
this.email = email;
return this;
}
}

View File

@ -1,114 +0,0 @@
package io.github.wulkanowy.api.user;
public class PersonalData {
private String name = "";
private String firstName = "";
private String surname = "";
private String firstAndLastName = "";
private String dateAndBirthPlace = "";
private String pesel = "";
private String gender = "";
private boolean isPolishCitizenship;
private String familyName = "";
private String parentsNames = "";
public String getName() {
return name;
}
public PersonalData setName(String name) {
this.name = name;
return this;
}
public String getFirstName() {
return firstName;
}
public PersonalData setFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public String getSurname() {
return surname;
}
public PersonalData setSurname(String surname) {
this.surname = surname;
return this;
}
public String getFirstAndLastName() {
return firstAndLastName;
}
public PersonalData setFirstAndLastName(String firstAndLastName) {
this.firstAndLastName = firstAndLastName;
return this;
}
public String getDateAndBirthPlace() {
return dateAndBirthPlace;
}
public PersonalData setDateAndBirthPlace(String dateAndBirthPlace) {
this.dateAndBirthPlace = dateAndBirthPlace;
return this;
}
public String getPesel() {
return pesel;
}
public PersonalData setPesel(String pesel) {
this.pesel = pesel;
return this;
}
public String getGender() {
return gender;
}
public PersonalData setGender(String gender) {
this.gender = gender;
return this;
}
public boolean isPolishCitizenship() {
return isPolishCitizenship;
}
public PersonalData setPolishCitizenship(boolean polishCitizenship) {
isPolishCitizenship = polishCitizenship;
return this;
}
public String getFamilyName() {
return familyName;
}
public PersonalData setFamilyName(String familyName) {
this.familyName = familyName;
return this;
}
public String getParentsNames() {
return parentsNames;
}
public PersonalData setParentsNames(String parentsNames) {
this.parentsNames = parentsNames;
return this;
}
}

View File

@ -1,12 +0,0 @@
package io.github.wulkanowy.api;
import java.io.InputStream;
import java.util.Scanner;
public class FixtureHelper {
public static String getAsString(InputStream inputStream) {
Scanner s = new Scanner(inputStream).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}

View File

@ -1,125 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.List;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public class StudentAndParentTest {
private Client client;
@Before
public void setUp() throws Exception {
String input = FixtureHelper.getAsString(
getClass().getResourceAsStream("OcenyWszystkie-semester.html"));
Document gradesPageDocument = Jsoup.parse(input);
client = Mockito.mock(Client.class);
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(gradesPageDocument);
}
@Test
public void snpTest() throws Exception {
StudentAndParent snp = new StudentAndParent(client, "id123");
Assert.assertEquals("id123", snp.getId());
}
@Test
public void getSnpPageUrlWithIdTest() throws Exception {
Assert.assertEquals("{schema}://uonetplus-opiekun.{host}/{symbol}/123456/",
(new StudentAndParent(client, "123456")).getSnpHomePageUrl());
}
@Test
public void getSnpPageUrlWithoutIdTest() throws Exception {
String input = FixtureHelper.getAsString(getClass().getResourceAsStream("Start.html"));
Document startPageDocument = Jsoup.parse(input);
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(startPageDocument);
StudentAndParent snp = new StudentAndParent(client);
Assert.assertEquals("https://uonetplus-opiekun.vulcan.net.pl/symbol/534213/Start/Index/",
snp.getSnpHomePageUrl());
}
@Test(expected = NotLoggedInErrorException.class)
public void getSnpPageUrlWithWrongPage() throws Exception {
Document wrongPageDocument = Jsoup.parse(
FixtureHelper.getAsString(getClass().getResourceAsStream("OcenyWszystkie-semester.html"))
);
Mockito.when(client.getPageByUrl(Mockito.anyString())).thenReturn(wrongPageDocument);
StudentAndParent snp = new StudentAndParent(client);
snp.getSnpHomePageUrl();
}
@Test
public void getExtractedIDStandardTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol");
Assert.assertEquals("123456", snp.getExtractedIdFromUrl("https://uonetplus-opiekun"
+ ".vulcan.net.pl/powiat/123456/Start/Index/"));
}
@Test
public void getExtractedIDDemoTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol");
Assert.assertEquals("demo12345",
snp.getExtractedIdFromUrl("https://uonetplus-opiekun.vulcan.net.pl/demoupowiat/demo12345/Start/Index/"));
}
@Test(expected = NotLoggedInErrorException.class)
public void getExtractedIDNotLoggedTest() throws Exception {
Mockito.when(client.getHost()).thenReturn("vulcan.net.pl");
StudentAndParent snp = new StudentAndParent(client, "symbol");
Assert.assertEquals("123",
snp.getExtractedIdFromUrl("https://uonetplus.vulcan.net.pl/powiat/"));
}
@Test
public void getSemestersTest() throws Exception {
SnP snp = new StudentAndParent(client, "123456");
List<Semester> semesters = snp.getSemesters();
Assert.assertEquals(2, semesters.size());
Assert.assertEquals("1", semesters.get(0).getId());
Assert.assertEquals("1234", semesters.get(0).getNumber());
Assert.assertFalse(semesters.get(0).isCurrent());
Assert.assertEquals("2", semesters.get(1).getId());
Assert.assertEquals("1235", semesters.get(1).getNumber());
Assert.assertTrue(semesters.get(1).isCurrent());
}
@Test
public void getCurrentSemesterTest() throws Exception {
List<Semester> semesters = new ArrayList<>();
semesters.add(new Semester().setNumber("1500100900").setId("1").setCurrent(false));
semesters.add(new Semester().setNumber("1500100901").setId("2").setCurrent(true));
SnP snp = new StudentAndParent(client, "");
Assert.assertTrue(snp.getCurrentSemester(semesters).isCurrent());
Assert.assertEquals("2", snp.getCurrentSemester(semesters).getId());
Assert.assertEquals("1500100901", snp.getCurrentSemester(semesters).getNumber());
}
@Test
public void getCurrentSemesterFromEmptyTest() throws Exception {
SnP snp = new StudentAndParent(client, "");
List<Semester> semesters = new ArrayList<>();
Assert.assertNull(snp.getCurrentSemester(semesters));
}
}

View File

@ -1,26 +0,0 @@
package io.github.wulkanowy.api;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.mockito.Mockito;
public abstract class StudentAndParentTestCase {
protected StudentAndParent getSnp(String fixtureFileName) throws Exception {
String input = FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName));
Document tablePageDocument = Jsoup.parse(input);
StudentAndParent snp = Mockito.mock(StudentAndParent.class);
Mockito.when(snp.getSnPPageDocument(Mockito.anyString()))
.thenReturn(tablePageDocument);
Mockito.when(snp.getSemesters(Mockito.any(Document.class))).thenCallRealMethod();
Mockito.when(snp.getCurrentSemester(Mockito.<Semester>anyList()))
.thenCallRealMethod();
Mockito.when(snp.getRowDataChildValue(Mockito.any(Element.class),
Mockito.anyInt())).thenCallRealMethod();
return snp;
}
}

View File

@ -1,86 +0,0 @@
package io.github.wulkanowy.api;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.HashMap;
import java.util.Map;
import io.github.wulkanowy.api.login.Login;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public class VulcanTest {
private Vulcan vulcan;
@Before
public void setUp() throws Exception {
vulcan = new Vulcan();
vulcan.setClient(Mockito.mock(Client.class));
vulcan.setLogin(Mockito.mock(Login.class));
}
@Test
public void setFullEndpointInfoTest() throws Exception {
vulcan.login("http://fakelog.net\\\\admin", "pass", "Default", "123");
Assert.assertEquals("http", vulcan.getProtocolSchema());
Assert.assertEquals("fakelog.net", vulcan.getLogHost());
Assert.assertEquals("admin", vulcan.getEmail());
}
@Test
public void getClientTwiceTest() throws Exception {
Vulcan vulcan = new Vulcan();
Assert.assertTrue(vulcan.getClient().equals(vulcan.getClient()));
}
@Test
public void getLoginTwiceTest() throws Exception {
Vulcan vulcan = new Vulcan();
Assert.assertTrue(vulcan.getLogin().equals(vulcan.getLogin()));
}
@Test(expected = NotLoggedInErrorException.class)
public void getStudentAndParentNotLoggedInTest() throws Exception {
vulcan.getStudentAndParent();
}
@Test
public void getStudentAndParentTwiceTest() throws Exception {
Client client = Mockito.mock(Client.class);
Map<String, String> cookies = new HashMap<>();
cookies.put("test", "test");
Mockito.when(client.getCookies()).thenReturn(cookies);
SnP snp = Mockito.mock(StudentAndParent.class);
Mockito.doNothing().when(snp).storeContextCookies();
Vulcan vulcan = Mockito.mock(Vulcan.class);
Mockito.when(vulcan.getClient()).thenReturn(client);
Mockito.when(vulcan.getStudentAndParent()).thenCallRealMethod();
Mockito.when(vulcan.createSnp(Mockito.any(Client.class), Mockito.any())).thenReturn(snp);
vulcan.getStudentAndParent();
vulcan.getStudentAndParent();
}
@Test
public void createSnPTest() throws Exception {
vulcan.login("wulkanowy@wulkanowy.io", "wulkanowy123", "wulkan");
SnP snp1 = vulcan.createSnp(Mockito.mock(Client.class), null);
Assert.assertEquals(null, snp1.getId());
SnP snp2 = vulcan.createSnp(Mockito.mock(Client.class), "wulkan");
Assert.assertEquals("wulkan", snp2.getId());
}
@Test(expected = NotLoggedInErrorException.class)
public void getAttendanceExceptionText() throws Exception {
vulcan.getAttendanceTable();
}
}

View File

@ -1,144 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
import io.github.wulkanowy.api.generic.Month;
public class AttendanceStatisticsTest extends StudentAndParentTestCase {
private AttendanceStatistics excellent;
private AttendanceStatistics full;
@Before
public void setUp() throws Exception {
this.excellent = new AttendanceStatistics(getSnp("Frekwencja-excellent.html"));
this.full = new AttendanceStatistics(getSnp("Frekwencja-full.html"));
}
@Test
public void getSubjectList() throws Exception {
Assert.assertEquals(26, excellent.getSubjectList().size());
Assert.assertEquals(23, full.getSubjectList().size());
}
@Test
public void getSubjectListId() throws Exception {
Assert.assertEquals(-1, excellent.getSubjectList().get(0).getId());
Assert.assertEquals(63, excellent.getSubjectList().get(10).getId());
Assert.assertEquals(0, excellent.getSubjectList().get(25).getId());
Assert.assertEquals(-1, full.getSubjectList().get(0).getId());
Assert.assertEquals(108, full.getSubjectList().get(14).getId());
Assert.assertEquals(492, full.getSubjectList().get(21).getId());
}
@Test
public void getSubjectListName() throws Exception {
Assert.assertEquals("Wszystkie", excellent.getSubjectList().get(0).getName());
Assert.assertEquals("Fizyka", excellent.getSubjectList().get(8).getName());
Assert.assertEquals("Sieci komputerowe i administrowanie sieciami",
excellent.getSubjectList().get(21).getName());
Assert.assertEquals("Praktyka zawodowa", full.getSubjectList().get(11).getName());
Assert.assertEquals("Użytkowanie urządzeń peryferyjnych komputera",
full.getSubjectList().get(16).getName());
Assert.assertEquals("Brak opisu lekcji", full.getSubjectList().get(22).getName());
}
@Test
public void getTypesTotal() throws Exception {
Assert.assertEquals(100.0, excellent.getTypesTable().getTotal(), 0);
Assert.assertEquals(80.94, full.getTypesTable().getTotal(), 0);
}
@Test
public void getTypeName() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals("Obecność", typeList1.get(0).getName());
Assert.assertEquals("Nieobecność nieusprawiedliwiona", typeList1.get(1).getName());
Assert.assertEquals("Nieobecność usprawiedliwiona", typeList1.get(2).getName());
Assert.assertEquals("Nieobecność z przyczyn szkolnych", typeList1.get(3).getName());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals("Spóźnienie nieusprawiedliwione", typeList2.get(4).getName());
Assert.assertEquals("Spóźnienie usprawiedliwione", typeList2.get(5).getName());
Assert.assertEquals("Zwolnienie", typeList2.get(6).getName());
}
@Test
public void getTypeTotal() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(1211, typeList1.get(0).getTotal());
Assert.assertEquals(0, typeList1.get(1).getTotal());
Assert.assertEquals(0, typeList1.get(2).getTotal());
Assert.assertEquals(0, typeList1.get(3).getTotal());
Assert.assertEquals(0, typeList1.get(4).getTotal());
Assert.assertEquals(0, typeList1.get(5).getTotal());
Assert.assertEquals(0, typeList1.get(6).getTotal());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(822, typeList2.get(0).getTotal());
Assert.assertEquals(6, typeList2.get(1).getTotal());
Assert.assertEquals(192, typeList2.get(2).getTotal());
Assert.assertEquals(7, typeList2.get(3).getTotal());
Assert.assertEquals(12, typeList2.get(4).getTotal());
Assert.assertEquals(1, typeList2.get(5).getTotal());
Assert.assertEquals(2, typeList2.get(6).getTotal());
}
@Test
public void getTypeList() throws Exception {
List<Type> typesList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(12, typesList1.get(0).getMonthList().size());
Assert.assertEquals(12, typesList1.get(5).getMonthList().size());
List<Type> typesList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(12, typesList2.get(0).getMonthList().size());
Assert.assertEquals(12, typesList2.get(5).getMonthList().size());
}
@Test
public void getMonthList() throws Exception {
List<Type> typeList1 = excellent.getTypesTable().getTypeList();
Assert.assertEquals(12, typeList1.get(0).getMonthList().size());
List<Type> typeList2 = full.getTypesTable().getTypeList();
Assert.assertEquals(12, typeList2.get(0).getMonthList().size());
}
@Test
public void getMonthName() throws Exception {
List<Month> monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals("IX", monthsList1.get(0).getName());
Assert.assertEquals("III", monthsList1.get(6).getName());
Assert.assertEquals("VIII", monthsList1.get(11).getName());
List<Month> monthsList2 = full.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals("XI", monthsList2.get(2).getName());
Assert.assertEquals("II", monthsList2.get(5).getName());
Assert.assertEquals("VI", monthsList2.get(9).getName());
}
@Test
public void getMonthValue() throws Exception {
List<Month> monthsList1 = excellent.getTypesTable().getTypeList().get(0).getMonthList();
Assert.assertEquals(142, monthsList1.get(0).getValue());
Assert.assertEquals(131, monthsList1.get(4).getValue());
Assert.assertEquals(139, monthsList1.get(7).getValue());
Assert.assertEquals(114, monthsList1.get(9).getValue());
Assert.assertEquals(0, monthsList1.get(11).getValue());
List<Type> typeList1 = full.getTypesTable().getTypeList();
Assert.assertEquals(135, typeList1.get(0).getMonthList().get(0).getValue());
Assert.assertEquals(7, typeList1.get(3).getMonthList().get(5).getValue());
Assert.assertEquals(1, typeList1.get(5).getMonthList().get(0).getValue());
Assert.assertEquals(27, typeList1.get(2).getMonthList().get(9).getValue());
Assert.assertEquals(0, typeList1.get(0).getMonthList().get(11).getValue());
}
}

View File

@ -1,165 +0,0 @@
package io.github.wulkanowy.api.attendance;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class AttendanceTableTest extends StudentAndParentTestCase {
private AttendanceTable excellent;
private AttendanceTable full;
@Before
public void setUp() throws Exception {
excellent = new AttendanceTable(getSnp("Frekwencja-excellent.html"));
full = new AttendanceTable(getSnp("Frekwencja-full.html"));
}
@Test
public void getWeekStartByDate() throws Exception {
Assert.assertEquals("31.08.2015", excellent.getWeekTable().getStartDayDate());
Assert.assertEquals("05.09.2016", full.getWeekTable().getStartDayDate());
}
@Test
public void getWeekDaysNumber() throws Exception {
Assert.assertEquals(5, excellent.getWeekTable().getDays().size());
Assert.assertEquals(5, full.getWeekTable().getDays().size());
}
@Test
public void getDayLessonsNumber() throws Exception {
Assert.assertEquals(14, excellent.getWeekTable().getDay(0).getLessons().size());
Assert.assertEquals(14, full.getWeekTable().getDay(0).getLessons().size());
}
@Test
public void getDayDate() throws Exception {
Assert.assertEquals("31.08.2015", excellent.getWeekTable().getDay(0).getDate());
Assert.assertEquals("02.09.2015", excellent.getWeekTable().getDay(2).getDate());
Assert.assertEquals("04.09.2015", excellent.getWeekTable().getDay(4).getDate());
Assert.assertEquals("05.09.2016", full.getWeekTable().getDay(0).getDate());
Assert.assertEquals("07.09.2016", full.getWeekTable().getDay(2).getDate());
Assert.assertEquals("09.09.2016", full.getWeekTable().getDay(4).getDate());
}
@Test
public void getLessonSubject() throws Exception {
Assert.assertEquals("",
excellent.getWeekTable().getDay(0).getLesson(7).getSubject());
Assert.assertEquals("Uroczyste rozpoczęcie roku szkolnego 2015/2016",
excellent.getWeekTable().getDay(1).getLesson(1).getSubject());
Assert.assertEquals("Geografia",
excellent.getWeekTable().getDay(3).getLesson(4).getSubject());
Assert.assertEquals("Naprawa komputera",
full.getWeekTable().getDay(1).getLesson(8).getSubject());
Assert.assertEquals("Religia",
full.getWeekTable().getDay(3).getLesson(1).getSubject());
Assert.assertEquals("Metodologia programowania",
full.getWeekTable().getDay(4).getLesson(5).getSubject());
}
@Test
public void getLessonIsNotExist() throws Exception {
Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(5).isNotExist());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(1).isNotExist());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isNotExist());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(12).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(5).isAbsenceUnexcused());
}
@Test
public void getLessonIsEmpty() throws Exception {
Assert.assertTrue(excellent.getWeekTable().getDay(0).getLesson(0).isEmpty());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(6).isEmpty());
Assert.assertTrue(excellent.getWeekTable().getDay(4).getLesson(12).isEmpty());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(9).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(2).isEmpty());
}
@Test
public void getLessonIsPresence() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isPresence());
Assert.assertTrue(excellent.getWeekTable().getDay(1).getLesson(1).isPresence());
Assert.assertTrue(excellent.getWeekTable().getDay(3).getLesson(7).isPresence());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isPresence());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(6).isPresence());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(7).isPresence());
}
@Test
public void getLessonIsAbsenceUnexcused() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceUnexcused());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceUnexcused());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceUnexcused());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(8).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceUnexcused());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceUnexcused());
}
@Test
public void getLessonIsAbsenceExcused() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(7).isAbsenceExcused());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(0).isAbsenceExcused());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(4).isAbsenceExcused());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isAbsenceExcused());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceExcused());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(3).isAbsenceExcused());
}
@Test
public void getLessonIsAbsenceForSchoolReasons() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isAbsenceForSchoolReasons());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isAbsenceForSchoolReasons());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isAbsenceForSchoolReasons());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(5).isAbsenceForSchoolReasons());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isAbsenceForSchoolReasons());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isAbsenceForSchoolReasons());
}
@Test
public void getLessonIsUnexcusedLateness() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isUnexcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isUnexcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isUnexcusedLateness());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(6).isUnexcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isUnexcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isUnexcusedLateness());
}
@Test
public void getLessonIsExcusedLateness() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExcusedLateness());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExcusedLateness());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(7).isExcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExcusedLateness());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(8).isExcusedLateness());
}
@Test
public void getLessonIsExemption() throws Exception {
Assert.assertFalse(excellent.getWeekTable().getDay(0).getLesson(4).isExemption());
Assert.assertFalse(excellent.getWeekTable().getDay(2).getLesson(8).isExemption());
Assert.assertFalse(excellent.getWeekTable().getDay(4).getLesson(12).isExemption());
Assert.assertFalse(full.getWeekTable().getDay(2).getLesson(5).isExemption());
Assert.assertFalse(full.getWeekTable().getDay(3).getLesson(1).isExemption());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(8).isExemption());
}
}

View File

@ -1,97 +0,0 @@
package io.github.wulkanowy.api.exams;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class ExamsWeekTest extends StudentAndParentTestCase {
private ExamsWeek onePerDay;
@Before
public void getCurrent() throws Exception {
onePerDay = new ExamsWeek(getSnp("Sprawdziany-one-per-day.html"));
}
@Test
public void getWeekTest() throws Exception {
Assert.assertEquals("23.10.2017", onePerDay.getCurrent().getStartDayDate());
}
@Test
public void getDaysListTest() throws Exception {
Assert.assertEquals(3, onePerDay.getCurrent().getDays().size());
Assert.assertEquals(7, onePerDay.getWeek("", false).getDays().size());
}
@Test
public void getExamsListTest() throws Exception {
List<ExamDay> notEmpty = onePerDay.getCurrent().getDays();
Assert.assertEquals(1, notEmpty.get(0).getExamList().size());
Assert.assertEquals(1, notEmpty.get(1).getExamList().size());
Assert.assertEquals(1, notEmpty.get(2).getExamList().size());
List<ExamDay> emptyToo = onePerDay.getWeek("", false).getDays();
Assert.assertEquals(1, emptyToo.get(0).getExamList().size());
Assert.assertEquals(1, emptyToo.get(1).getExamList().size());
Assert.assertEquals(1, emptyToo.get(4).getExamList().size());
}
@Test
public void getDayDateTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("23.10.2017", dayList.get(0).getDate());
Assert.assertEquals("24.10.2017", dayList.get(1).getDate());
Assert.assertEquals("27.10.2017", dayList.get(2).getDate());
}
@Test
public void getExamSubjectAndGroupTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Sieci komputerowe 3Ti|zaw2", dayList.get(0).getExamList().get(0).getSubjectAndGroup());
Assert.assertEquals("Język angielski 3Ti|J1", dayList.get(1).getExamList().get(0).getSubjectAndGroup());
Assert.assertEquals("Metodologia programowania 3Ti|zaw2", dayList.get(2).getExamList().get(0).getSubjectAndGroup());
}
@Test
public void getExamTypeTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Sprawdzian", dayList.get(0).getExamList().get(0).getType());
Assert.assertEquals("Sprawdzian", dayList.get(1).getExamList().get(0).getType());
Assert.assertEquals("Sprawdzian", dayList.get(2).getExamList().get(0).getType());
}
@Test
public void getExamDescriptionTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Łącza danych", dayList.get(0).getExamList().get(0).getDescription());
Assert.assertEquals("Czasy teraźniejsze", dayList.get(1).getExamList().get(0).getDescription());
Assert.assertEquals("", dayList.get(2).getExamList().get(0).getDescription());
}
@Test
public void getExamTeacherTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("Adam Wiśniewski [AW]", dayList.get(0).getExamList().get(0).getTeacher());
Assert.assertEquals("Natalia Nowak [NN]", dayList.get(1).getExamList().get(0).getTeacher());
Assert.assertEquals("Małgorzata Nowacka [MN]", dayList.get(2).getExamList().get(0).getTeacher());
}
@Test
public void getExamEntryDateTest() throws Exception {
List<ExamDay> dayList = onePerDay.getCurrent().getDays();
Assert.assertEquals("16.10.2017", dayList.get(0).getExamList().get(0).getEntryDate());
Assert.assertEquals("17.10.2017", dayList.get(1).getExamList().get(0).getEntryDate());
Assert.assertEquals("16.10.2017", dayList.get(2).getExamList().get(0).getEntryDate());
}
}

View File

@ -1,114 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class GradesListTest extends StudentAndParentTestCase {
private GradesList filled;
@Before
public void setUp() throws Exception {
filled = new GradesList(getSnp("OcenyWszystkie-filled.html"));
}
@Test
public void getAllTest() throws Exception {
Assert.assertEquals(6, filled.getAll().size()); // 2 items are skipped
}
@Test
public void getSubjectTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Zajęcia z wychowawcą", list.get(0).getSubject());
Assert.assertEquals("Język angielski", list.get(3).getSubject());
Assert.assertEquals("Wychowanie fizyczne", list.get(4).getSubject());
Assert.assertEquals("Język polski", list.get(5).getSubject());
}
@Test
public void getValueTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("5", list.get(0).getValue());
Assert.assertEquals("5", list.get(3).getValue());
Assert.assertEquals("1", list.get(4).getValue());
Assert.assertEquals("1", list.get(5).getValue());
}
@Test
public void getColorTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("000000", list.get(0).getColor());
Assert.assertEquals("1289F7", list.get(3).getColor());
Assert.assertEquals("6ECD07", list.get(4).getColor());
Assert.assertEquals("6ECD07", list.get(5).getColor());
}
@Test
public void getSymbolTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("A1", list.get(0).getSymbol());
Assert.assertEquals("BW3", list.get(3).getSymbol());
Assert.assertEquals("STR", list.get(4).getSymbol());
Assert.assertEquals("K", list.get(5).getSymbol());
}
@Test
public void getDescriptionTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Dzień Kobiet w naszej klasie", list.get(0).getDescription());
Assert.assertEquals("Writing", list.get(3).getDescription());
Assert.assertEquals("", list.get(4).getDescription());
Assert.assertEquals("Kordian", list.get(5).getDescription());
}
@Test
public void getWeightTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("1,00", list.get(0).getWeight());
Assert.assertEquals("3,00", list.get(3).getWeight());
Assert.assertEquals("8,00", list.get(4).getWeight());
Assert.assertEquals("5,00", list.get(5).getWeight());
}
@Test
public void getDateTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("2017-03-21", list.get(0).getDate());
Assert.assertEquals("2017-06-02", list.get(3).getDate());
Assert.assertEquals("2017-04-02", list.get(4).getDate());
Assert.assertEquals("2017-02-06", list.get(5).getDate());
}
@Test
public void getTeacherTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("Patryk Maciejewski", list.get(0).getTeacher());
Assert.assertEquals("Oliwia Woźniak", list.get(3).getTeacher());
Assert.assertEquals("Klaudia Dziedzic", list.get(4).getTeacher());
Assert.assertEquals("Amelia Stępień", list.get(5).getTeacher());
}
@Test
public void getSemesterTest() throws Exception {
List<Grade> list = filled.getAll();
Assert.assertEquals("7654321", list.get(0).getSemester());
Assert.assertEquals("7654321", list.get(3).getSemester());
Assert.assertEquals("7654321", list.get(4).getSemester());
Assert.assertEquals("7654321", list.get(5).getSemester());
}
}

View File

@ -1,82 +0,0 @@
package io.github.wulkanowy.api.grades;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class SubjectsListTest extends StudentAndParentTestCase {
private SubjectsList std;
private SubjectsList average;
@Before
public void setUp() throws Exception {
std = new SubjectsList(getSnp("OcenyWszystkie-subjects.html"));
average = new SubjectsList(getSnp("OcenyWszystkie-subjects-average.html"));
}
@Test
public void getAllTest() throws Exception {
Assert.assertEquals(5, std.getAll().size());
Assert.assertEquals(5, average.getAll().size());
}
@Test
public void getNameTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("Zachowanie", stdList.get(0).getName());
Assert.assertEquals("Praktyka zawodowa", stdList.get(1).getName());
Assert.assertEquals("Metodologia programowania", stdList.get(2).getName());
Assert.assertEquals("Podstawy przedsiębiorczości", stdList.get(3).getName());
Assert.assertEquals("Wychowanie do życia w rodzinie", stdList.get(4).getName());
List<Subject> averageList = average.getAll();
Assert.assertEquals("Zachowanie", averageList.get(0).getName());
Assert.assertEquals("Język polski", averageList.get(1).getName());
Assert.assertEquals("Wychowanie fizyczne", averageList.get(2).getName());
Assert.assertEquals("Język angielski", averageList.get(3).getName());
Assert.assertEquals("Wiedza o społeczeństwie", averageList.get(4).getName());
}
@Test
public void getPredictedRatingTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("bardzo dobre", stdList.get(0).getPredictedRating());
Assert.assertEquals("-", stdList.get(1).getPredictedRating());
Assert.assertEquals("bardzo dobry", stdList.get(2).getPredictedRating());
Assert.assertEquals("3/4", stdList.get(3).getPredictedRating());
Assert.assertEquals("-", stdList.get(4).getPredictedRating());
List<Subject> averageList = average.getAll();
Assert.assertEquals("bardzo dobre", averageList.get(0).getPredictedRating());
Assert.assertEquals("-", averageList.get(1).getPredictedRating());
Assert.assertEquals("bardzo dobry", averageList.get(2).getPredictedRating());
Assert.assertEquals("4/5", averageList.get(3).getPredictedRating());
Assert.assertEquals("-", averageList.get(4).getPredictedRating());
}
@Test
public void getFinalRatingTest() throws Exception {
List<Subject> stdList = std.getAll();
Assert.assertEquals("bardzo dobre", stdList.get(0).getFinalRating());
Assert.assertEquals("celujący", stdList.get(1).getFinalRating());
Assert.assertEquals("celujący", stdList.get(2).getFinalRating());
Assert.assertEquals("dostateczny", stdList.get(3).getFinalRating());
Assert.assertEquals("-", stdList.get(4).getFinalRating());
List<Subject> averageList = average.getAll();
Assert.assertEquals("bardzo dobre", averageList.get(0).getFinalRating());
Assert.assertEquals("dobry", averageList.get(1).getFinalRating());
Assert.assertEquals("celujący", averageList.get(2).getFinalRating());
Assert.assertEquals("bardzo dobry", averageList.get(3).getFinalRating());
Assert.assertEquals("-", averageList.get(4).getFinalRating());
}
}

View File

@ -1,104 +0,0 @@
package io.github.wulkanowy.api.login;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.FixtureHelper;
public class LoginTest {
private String getFixtureAsString(String fixtureFileName) {
return FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName));
}
private Client getClient(String fixtureFileName) throws Exception {
Document doc = Jsoup.parse(getFixtureAsString(fixtureFileName));
Client client = Mockito.mock(Client.class);
Mockito.when(client.postPageByUrl(Mockito.anyString(), Mockito.any(String[][].class))).thenReturn(doc);
return client;
}
@Test
public void loginTest() throws Exception {
Login login = new Login(getClient("Logowanie-success.html"));
Assert.assertEquals("d123", login.login("a@a", "pswd", "d123"));
}
@Test(expected = BadCredentialsException.class)
public void sendWrongCredentialsTest() throws Exception {
Login login = new Login(getClient("Logowanie-error.html"));
login.sendCredentials("a@a", "pswd", "d123");
}
@Test
public void sendCredentialsCertificateTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html"));
Assert.assertEquals(
getFixtureAsString("cert.xml").replaceAll("\\s+",""),
login.sendCredentials("a@a", "passwd", "d123").replaceAll("\\s+","")
);
}
@Test
public void sendCertificateNotDefaultSymbolSuccessTest() throws Exception {
Login login = new Login(getClient("Logowanie-success.html"));
Assert.assertEquals("wulkanowyschool321",
login.sendCertificate("", "wulkanowyschool321"));
}
@Test
public void sendCertificateDefaultSymbolSuccessTest() throws Exception {
Login login = new Login(getClient("Logowanie-success.html"));
Assert.assertEquals("demo12345",
login.sendCertificate(getFixtureAsString("cert.xml"), "Default"));
}
@Test(expected = AccountPermissionException.class)
public void sendCertificateAccountPermissionTest() throws Exception {
Login login = new Login(getClient("Logowanie-brak-dostepu.html"));
login.sendCertificate(getFixtureAsString("cert.xml"), "demo123");
}
@Test(expected = LoginErrorException.class)
public void sendCertificateLoginErrorTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html")); // change to other document
login.sendCertificate(getFixtureAsString("cert.xml"), "demo123");
}
@Test(expected = VulcanOfflineException.class)
public void sendCertificateVulcanOfflineTest() throws Exception {
Login login = new Login(getClient("PrzerwaTechniczna.html"));
login.sendCertificate(getFixtureAsString("cert.xml"), "demo123");
}
@Test
public void findSymbolInCertificateTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html"));
String certificate = getFixtureAsString("cert.xml");
Assert.assertEquals("demo12345", login.findSymbolInCertificate(certificate));
}
@Test
public void findSymbolInInvalidCertificateTest() throws Exception {
Login login = new Login(getClient("Logowanie-certyfikat.html"));
Assert.assertEquals("", login.findSymbolInCertificate("<xml></xml>")); // change to real cert with empty symbols
}
}

View File

@ -1,89 +0,0 @@
package io.github.wulkanowy.api.messages;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.List;
import io.github.wulkanowy.api.Client;
import io.github.wulkanowy.api.FixtureHelper;
import io.github.wulkanowy.api.login.NotLoggedInErrorException;
public class MessagesTest {
private Client getFixtureAsString(String fixtureFileName) throws Exception {
Client client = Mockito.mock(Client.class);
Mockito.when(client.getJsonStringByUrl(Mockito.anyString()))
.thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)));
Mockito.when(client.postJsonStringByUrl(Mockito.anyString(), Mockito.any()))
.thenReturn(FixtureHelper.getAsString(getClass().getResourceAsStream(fixtureFileName)));
return client;
}
@Test
public void getMessages() throws Exception {
Client client = getFixtureAsString("GetWiadomosciOdebrane.json");
Messages messages = new Messages(client);
List<Message> messageList = messages.getReceived();
Assert.assertEquals(true, messageList.get(1).unread);
Assert.assertEquals("2016-03-15 09:00:00", messageList.get(0).date);
Assert.assertEquals(null, messageList.get(0).content);
Assert.assertEquals("Kowalski Jan", messageList.get(0).sender);
Assert.assertEquals(12347, messageList.get(2).id);
}
@Test
public void getMessagesEmpty() throws Exception {
Client client = getFixtureAsString("GetWiadomosciUsuniete-empty.json");
Messages messages = new Messages(client);
List<Message> messageList = messages.getSent();
Assert.assertTrue(messageList.isEmpty());
}
@Test(expected = NotLoggedInErrorException.class)
public void getMessagesError() throws Exception {
Client client = getFixtureAsString("UndefinedError.txt");
Messages messages = new Messages(client);
messages.getDeleted();
}
@Test(expected = BadRequestException.class)
public void getMessagesBadRequest() throws Exception {
Client client = getFixtureAsString("PageError.html");
Messages messages = new Messages(client);
messages.getDeleted();
}
@Test
public void getMessage() throws Exception {
Client client = getFixtureAsString("GetTrescWiadomosci.json");
Messages messages = new Messages(client);
Message message = messages.getMessage(123, Messages.RECEIVED_FOLDER);
Assert.assertEquals(12345, message.id);
Assert.assertEquals("Witam, …. \nPozdrawiam Krzysztof Czerkas", message.content);
}
@Test(expected = NotLoggedInErrorException.class)
public void getMessageError() throws Exception {
Client client = getFixtureAsString("UndefinedError.txt");
Messages messages = new Messages(client);
messages.getMessage(321, Messages.SENT_FOLDER);
}
@Test(expected = BadRequestException.class)
public void getMessageBadRequest() throws Exception {
Client client = getFixtureAsString("PageError.html");
Messages messages = new Messages(client);
messages.getMessage(1, Messages.DELETED_FOLDER);
}
}

View File

@ -1,36 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class AchievementsListTest extends StudentAndParentTestCase {
private AchievementsList filledAchievementsList;
private AchievementsList emptyAchievementsList;
@Before
public void setUp() throws Exception {
filledAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-filled.html"));
emptyAchievementsList = new AchievementsList(getSnp("UwagiOsiagniecia-empty.html"));
}
@Test
public void getAllAchievementsTest() throws Exception {
Assert.assertEquals(2, filledAchievementsList.getAllAchievements().size());
Assert.assertEquals(0, emptyAchievementsList.getAllAchievements().size());
}
@Test
public void getAchievements() throws Exception {
List<String> filledList = filledAchievementsList.getAllAchievements();
Assert.assertEquals("I miejsce w ogólnopolskim konkursie ortograficznym", filledList.get(0));
Assert.assertEquals("III miejsce w ogólnopolskim konkursie plastycznym", filledList.get(1));
}
}

View File

@ -1,60 +0,0 @@
package io.github.wulkanowy.api.notes;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class NotesListTest extends StudentAndParentTestCase {
private NotesList filled;
private NotesList empty;
@Before
public void setUp() throws Exception {
filled = new NotesList(getSnp("UwagiOsiagniecia-filled.html"));
empty = new NotesList(getSnp("UwagiOsiagniecia-empty.html"));
}
@Test
public void getAllNotesTest() throws Exception {
Assert.assertEquals(3, filled.getAllNotes().size());
Assert.assertEquals(0, empty.getAllNotes().size());
}
@Test
public void getDateTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("06.06.2017", filledList.get(0).getDate());
Assert.assertEquals("01.10.2016", filledList.get(2).getDate());
}
@Test
public void getTeacherTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Jan Kowalski [JK]", filledList.get(0).getTeacher());
Assert.assertEquals("Kochański Leszek [KL]", filledList.get(2).getTeacher());
}
@Test
public void getCategoryTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Zaangażowanie społeczne", filledList.get(0).getCategory());
Assert.assertEquals("Zachowanie na lekcji", filledList.get(2).getCategory());
}
@Test
public void getContentTest() throws Exception {
List<Note> filledList = filled.getAllNotes();
Assert.assertEquals("Pomoc przy pikniku charytatywnym", filledList.get(0).getContent());
Assert.assertEquals("Przeszkadzanie w prowadzeniu lekcji", filledList.get(2).getContent());
}
}

View File

@ -1,48 +0,0 @@
package io.github.wulkanowy.api.school;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class SchoolInfoTest extends StudentAndParentTestCase {
private SchoolInfo schoolInfo;
@Before
public void setUp() throws Exception {
schoolInfo = new SchoolInfo(getSnp("Szkola.html"));
}
@Test
public void getNameTest() throws Exception {
Assert.assertEquals("Zespół Szkół nr 64", schoolInfo.getSchoolData().getName());
}
@Test
public void getAddressTest() throws Exception {
Assert.assertEquals("ul. Wiśniowa 128, 01-234 Rogalowo, Nibylandia",
schoolInfo.getSchoolData().getAddress());
}
@Test
public void getPhoneNumberTest() throws Exception {
Assert.assertEquals("55 5555555", schoolInfo.getSchoolData().getPhoneNumber());
}
@Test
public void getHeadmasterTest() throws Exception {
Assert.assertEquals("Antoni Sobczyk", schoolInfo.getSchoolData().getHeadmaster());
}
@Test
public void getPedagoguesTest() throws Exception {
Assert.assertArrayEquals(new String[]{
"Zofia Czerwińska [ZC]",
"Aleksander Krzemiński [AK]",
"Karolina Kowalska [KK]",
"Bartek Dąbrowski [BD]"
}, schoolInfo.getSchoolData().getPedagogues());
}
}

View File

@ -1,56 +0,0 @@
package io.github.wulkanowy.api.school;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class TeachersInfoTest extends StudentAndParentTestCase {
private TeachersInfo teachersInfo;
@Before
public void setUp() throws Exception {
teachersInfo = new TeachersInfo(getSnp("Szkola.html"));
}
@Test
public void getClassNameTest() throws Exception {
Assert.assertEquals("1a", teachersInfo.getTeachersData().getClassName());
}
@Test
public void getClassTeacherTest() throws Exception {
Assert.assertArrayEquals(new String[]{
"Karolina Kowalska [AN]",
"Antoni Sobczyk [AS]"
}, teachersInfo.getTeachersData().getClassTeacher());
}
@Test
public void getTeachersDataSubjectsNameTest() throws Exception {
List<Subject> subjects = teachersInfo.getTeachersData().getSubjects();
Assert.assertEquals("Biologia", subjects.get(0).getName());
Assert.assertEquals("Język angielski", subjects.get(6).getName());
}
@Test
public void getTeachersDataSubjectsTeachersTest() throws Exception {
List<Subject> subjects = teachersInfo.getTeachersData().getSubjects();
Assert.assertArrayEquals(new String[]{"Karolina Kowalska [AN]"},
subjects.get(0).getTeachers());
Assert.assertEquals("Karolina Kowalska [AN]",
subjects.get(0).getTeachers()[0]);
Assert.assertArrayEquals(new String[]{
"Karolina Kowalska [AN]",
"Mateusz Kowal [MK]",
"Amelia Mazur [AM]"
}, subjects.get(6).getTeachers());
}
}

View File

@ -1,242 +0,0 @@
package io.github.wulkanowy.api.timetable;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class TimetableTest extends StudentAndParentTestCase {
private Timetable std;
private Timetable full;
private Timetable holidays;
@Before
public void setUp() throws Exception {
std = new Timetable(getSnp("PlanLekcji-std.html"));
full = new Timetable(getSnp("PlanLekcji-full.html"));
holidays = new Timetable(getSnp("PlanLekcji-holidays.html"));
}
// Week
@Test
public void getWeekTableTest() throws Exception {
Assert.assertEquals(5, std.getWeekTable().getDays().size());
Assert.assertEquals(5, full.getWeekTable().getDays().size());
Assert.assertEquals(5, holidays.getWeekTable().getDays().size());
}
@Test
public void getStartDayDateTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getStartDayDate());
Assert.assertEquals("2017-06-19", full.getWeekTable().getStartDayDate());
Assert.assertEquals("2017-07-31", holidays.getWeekTable().getStartDayDate());
}
// ExamDay
@Test
public void getDayNameTest() throws Exception {
Assert.assertEquals("poniedziałek", std.getWeekTable().getDay(0).getDayName());
Assert.assertEquals("piątek", std.getWeekTable().getDay(4).getDayName());
Assert.assertEquals("wtorek", full.getWeekTable().getDay(1).getDayName());
Assert.assertEquals("czwartek", full.getWeekTable().getDay(3).getDayName());
Assert.assertEquals("środa", holidays.getWeekTable().getDay(2).getDayName());
}
@Test
public void getDayDateTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getDate());
Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getDate());
Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getDate());
Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getDate());
Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getDate());
}
@Test
public void getDayIsFreeTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(0).isFreeDay());
Assert.assertFalse(full.getWeekTable().getDay(2).isFreeDay());
Assert.assertTrue(holidays.getWeekTable().getDay(4).isFreeDay());
}
@Test
public void getDayFreeDayName() throws Exception {
Assert.assertNotEquals("Wakacje", std.getWeekTable().getDay(0).getFreeDayName());
Assert.assertNotEquals("Ferie letnie", full.getWeekTable().getDay(1).getFreeDayName());
Assert.assertNotEquals("Wakacje", holidays.getWeekTable().getDay(2).getFreeDayName());
Assert.assertEquals("Ferie letnie", holidays.getWeekTable().getDay(4).getFreeDayName());
}
@Test
public void getDayLessonsTest() throws Exception {
Assert.assertEquals(8, std.getWeekTable().getDay(0).getLessons().size());
Assert.assertEquals(14, full.getWeekTable().getDay(2).getLessons().size());
Assert.assertEquals(14, holidays.getWeekTable().getDay(4).getLessons().size());
}
// Lesson
@Test
public void getLessonNumberTest() throws Exception {
Assert.assertEquals("2", std.getWeekTable().getDay(0).getLesson(1).getNumber());
Assert.assertEquals("5", std.getWeekTable().getDay(2).getLesson(4).getNumber());
Assert.assertEquals("0", full.getWeekTable().getDay(0).getLesson(0).getNumber());
Assert.assertEquals("13", full.getWeekTable().getDay(4).getLesson(13).getNumber());
Assert.assertEquals("3", holidays.getWeekTable().getDay(3).getLesson(3).getNumber());
}
@Test
public void getLessonDayTest() throws Exception {
Assert.assertEquals("2017-06-19", std.getWeekTable().getDay(0).getLesson(1).getDate());
Assert.assertEquals("2017-06-23", std.getWeekTable().getDay(4).getLesson(4).getDate());
Assert.assertEquals("2017-06-20", full.getWeekTable().getDay(1).getLesson(6).getDate());
Assert.assertEquals("2017-06-22", full.getWeekTable().getDay(3).getLesson(3).getDate());
Assert.assertEquals("2017-08-02", holidays.getWeekTable().getDay(2).getLesson(8).getDate());
}
@Test
public void getLessonSubjectTest() throws Exception {
Assert.assertEquals("Historia", std.getWeekTable().getDay(0).getLesson(1).getSubject());
Assert.assertEquals("Zajęcia techniczne", std.getWeekTable().getDay(2).getLesson(4).getSubject());
Assert.assertEquals("Wychowanie fizyczne", std.getWeekTable().getDay(1).getLesson(1).getSubject());
Assert.assertEquals("Język angielski", full.getWeekTable().getDay(0).getLesson(1).getSubject());
Assert.assertEquals("Wychowanie do życia w rodzinie", full.getWeekTable().getDay(2).getLesson(0).getSubject());
Assert.assertEquals("Wychowanie fizyczne", full.getWeekTable().getDay(3).getLesson(1).getSubject());
Assert.assertEquals("Uroczyste zakończenie roku szkolnego", full.getWeekTable().getDay(4).getLesson(0).getSubject());
Assert.assertEquals("Fizyka", full.getWeekTable().getDay(0).getLesson(0).getSubject());
Assert.assertEquals("Metodologia programowania", full.getWeekTable().getDay(1).getLesson(0).getSubject());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getSubject());
}
@Test
public void getLessonTeacherTest() throws Exception {
Assert.assertEquals("Bogatka Katarzyna", std.getWeekTable().getDay(0).getLesson(1).getTeacher());
Assert.assertEquals("Chlebowski Stanisław", std.getWeekTable().getDay(2).getLesson(4).getTeacher());
Assert.assertEquals("Kobczyk Iwona", full.getWeekTable().getDay(0).getLesson(1).getTeacher());
Assert.assertEquals("Bączek Grzegorz", full.getWeekTable().getDay(0).getLesson(7).getTeacher());
Assert.assertEquals("Nowak Jadwiga", full.getWeekTable().getDay(2).getLesson(0).getTeacher());
Assert.assertEquals("Nowicka Irena", full.getWeekTable().getDay(3).getLesson(1).getTeacher());
Assert.assertEquals("Baran Małgorzata", full.getWeekTable().getDay(4).getLesson(0).getTeacher());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getTeacher());
}
@Test
public void getLessonRoomTest() throws Exception {
Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getRoom());
Assert.assertEquals("33", full.getWeekTable().getDay(0).getLesson(7).getRoom());
Assert.assertEquals("19", full.getWeekTable().getDay(0).getLesson(0).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(0).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(1).getLesson(8).getRoom());
Assert.assertEquals("32", full.getWeekTable().getDay(2).getLesson(8).getRoom());
Assert.assertEquals("G4", full.getWeekTable().getDay(3).getLesson(1).getRoom());
Assert.assertEquals("37", full.getWeekTable().getDay(4).getLesson(0).getRoom());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getRoom());
}
@Test
public void getLessonDescriptionTest() throws Exception {
Assert.assertEquals("", std.getWeekTable().getDay(3).getLesson(3).getDescription());
Assert.assertEquals("przeniesiona z lekcji 7, 01.12.2017", full.getWeekTable().getDay(1).getLesson(1).getDescription());
Assert.assertEquals("okienko dla uczniów", full.getWeekTable().getDay(0).getLesson(7).getDescription());
Assert.assertEquals("przeniesiona z lekcji 7, 20.06.2017", full.getWeekTable().getDay(1).getLesson(2).getDescription());
Assert.assertEquals("przeniesiona z lekcji 4, 20.06.2017", full.getWeekTable().getDay(1).getLesson(3).getDescription());
Assert.assertEquals("zastępstwo (poprzednio: Religia)", full.getWeekTable().getDay(2).getLesson(0).getDescription());
Assert.assertEquals("zastępstwo (poprzednio: Wychowanie fizyczne)", full.getWeekTable().getDay(3).getLesson(1).getDescription());
Assert.assertEquals("", full.getWeekTable().getDay(4).getLesson(0).getDescription());
Assert.assertEquals("egzamin", full.getWeekTable().getDay(3).getLesson(0).getDescription());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getDescription());
}
@Test
public void getLessonGroupNameTest() throws Exception {
Assert.assertEquals("CH", std.getWeekTable().getDay(0).getLesson(2).getGroupName());
Assert.assertEquals("JNPW", std.getWeekTable().getDay(4).getLesson(0).getGroupName());
Assert.assertEquals("", full.getWeekTable().getDay(0).getLesson(7).getGroupName());
Assert.assertEquals("zaw2", full.getWeekTable().getDay(1).getLesson(0).getGroupName());
Assert.assertEquals("wf2", full.getWeekTable().getDay(1).getLesson(3).getGroupName());
Assert.assertEquals("zaw1", full.getWeekTable().getDay(3).getLesson(1).getGroupName());
Assert.assertEquals("", holidays.getWeekTable().getDay(3).getLesson(3).getGroupName());
}
@Test
public void getLessonStartTimeTest() throws Exception {
Assert.assertEquals("08:00", std.getWeekTable().getDay(0).getLesson(0).getStartTime());
Assert.assertEquals("14:10", std.getWeekTable().getDay(3).getLesson(7).getStartTime());
Assert.assertEquals("07:10", full.getWeekTable().getDay(0).getLesson(0).getStartTime());
Assert.assertEquals("12:20", full.getWeekTable().getDay(2).getLesson(6).getStartTime());
Assert.assertEquals("12:20", holidays.getWeekTable().getDay(2).getLesson(6).getStartTime());
}
@Test
public void getLessonEndTimeTest() throws Exception {
Assert.assertEquals("08:45", std.getWeekTable().getDay(1).getLesson(0).getEndTime());
Assert.assertEquals("12:15", std.getWeekTable().getDay(2).getLesson(4).getEndTime());
Assert.assertEquals("07:55", full.getWeekTable().getDay(1).getLesson(0).getEndTime());
Assert.assertEquals("19:00", full.getWeekTable().getDay(3).getLesson(13).getEndTime());
Assert.assertEquals("19:00", holidays.getWeekTable().getDay(3).getLesson(13).getEndTime());
}
@Test
public void getLessonIsEmptyTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(1).getLesson(4).isEmpty());
Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(7).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(1).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(2).isEmpty());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isEmpty());
Assert.assertTrue(full.getWeekTable().getDay(2).getLesson(9).isEmpty());
Assert.assertTrue(holidays.getWeekTable().getDay(0).getLesson(5).isEmpty());
Assert.assertTrue(holidays.getWeekTable().getDay(4).getLesson(13).isEmpty());
}
@Test
public void getLessonIsDivisionIntoGroupsTest() throws Exception {
Assert.assertTrue(std.getWeekTable().getDay(0).getLesson(2).isDivisionIntoGroups());
Assert.assertTrue(std.getWeekTable().getDay(4).getLesson(0).isDivisionIntoGroups());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(7).isDivisionIntoGroups());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isDivisionIntoGroups());
Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isDivisionIntoGroups());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isDivisionIntoGroups());
}
@Test
public void getLessonIsPlanningTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(4).getLesson(4).isPlanning());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isPlanning());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isPlanning());
Assert.assertTrue(full.getWeekTable().getDay(4).getLesson(0).isPlanning());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isPlanning());
}
@Test
public void getLessonIsRealizedTest() throws Exception {
Assert.assertTrue(std.getWeekTable().getDay(3).getLesson(3).isRealized());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(1).isRealized());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isRealized());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isRealized());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isRealized());
}
@Test
public void getLessonIsMovedOrCanceledTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled());
Assert.assertTrue(full.getWeekTable().getDay(0).getLesson(7).isMovedOrCanceled());
Assert.assertFalse(full.getWeekTable().getDay(1).getLesson(3).isMovedOrCanceled());
Assert.assertFalse(full.getWeekTable().getDay(4).getLesson(0).isMovedOrCanceled());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isMovedOrCanceled());
}
@Test
public void getLessonIsNewMovedInOrChangedTest() throws Exception {
Assert.assertFalse(std.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged());
Assert.assertFalse(full.getWeekTable().getDay(0).getLesson(1).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(2).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(1).getLesson(3).isNewMovedInOrChanged());
Assert.assertTrue(full.getWeekTable().getDay(3).getLesson(1).isNewMovedInOrChanged());
Assert.assertFalse(holidays.getWeekTable().getDay(3).getLesson(3).isNewMovedInOrChanged());
}
}

View File

@ -1,106 +0,0 @@
package io.github.wulkanowy.api.user;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class BasicInformationTest extends StudentAndParentTestCase {
private BasicInformation basicInformation;
@Before
public void setUp() throws Exception {
basicInformation = new BasicInformation(getSnp("UczenDanePodstawowe.html"));
}
@Test
public void getPersonalFirstNameTest() throws Exception {
Assert.assertEquals("Maria", basicInformation.getPersonalData().getFirstName());
}
@Test
public void getPersonalSurnameTest() throws Exception {
Assert.assertEquals("Kamińska", basicInformation.getPersonalData().getSurname());
}
@Test
public void getPersonalFirstAndLastNameTest() throws Exception {
Assert.assertEquals("Maria Kamińska",
basicInformation.getPersonalData().getFirstAndLastName());
}
@Test
public void getPersonalNameTest() throws Exception {
Assert.assertEquals("Maria Aneta Kamińska", basicInformation.getPersonalData().getName());
}
@Test
public void getPersonalDateAndBirthPlaceTest() throws Exception {
Assert.assertEquals("01.01.1900, Warszawa",
basicInformation.getPersonalData().getDateAndBirthPlace());
}
@Test
public void getPersonalPeselTest() throws Exception {
Assert.assertEquals("12345678900", basicInformation.getPersonalData().getPesel());
}
@Test
public void getPersonalGenderTest() throws Exception {
Assert.assertEquals("Kobieta", basicInformation.getPersonalData().getGender());
}
@Test
public void isPersonalPolishCitizenshipTest() throws Exception {
Assert.assertTrue(basicInformation.getPersonalData().isPolishCitizenship());
}
@Test
public void getPersonalFamilyNameTest() throws Exception {
Assert.assertEquals("Nowak", basicInformation.getPersonalData().getFamilyName());
}
@Test
public void getPersonalParentsNames() throws Exception {
Assert.assertEquals("Gabriela, Kamil",
basicInformation.getPersonalData().getParentsNames());
}
@Test
public void getBasicAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa",
basicInformation.getAddressData().getAddress());
}
@Test
public void getBasicRegisteredAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 17, 00-123 Warszawa",
basicInformation.getAddressData().getRegisteredAddress());
}
@Test
public void getBasicCorrespondenceAddressTest() throws Exception {
Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa",
basicInformation.getAddressData().getCorrespondenceAddress());
}
@Test
public void getContactPhoneNumberTest() throws Exception {
Assert.assertEquals("005554433",
basicInformation.getContactDetails().getPhoneNumber());
}
@Test
public void getContactCellPhoneNumberTest() throws Exception {
Assert.assertEquals("555444333",
basicInformation.getContactDetails().getCellPhoneNumber());
}
@Test
public void getContactEmailTest() throws Exception {
Assert.assertEquals("wulkanowy@example.null",
basicInformation.getContactDetails().getEmail());
}
}

View File

@ -1,59 +0,0 @@
package io.github.wulkanowy.api.user;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import io.github.wulkanowy.api.StudentAndParentTestCase;
public class FamilyInformationTest extends StudentAndParentTestCase {
private FamilyInformation familyInformation;
@Before
public void setUp() throws Exception {
familyInformation = new FamilyInformation(getSnp("UczenDanePodstawowe.html"));
}
@Test
public void getFamilyMembers() throws Exception {
Assert.assertEquals(2, familyInformation.getFamilyMembers().size());
}
@Test
public void getNameTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("Marianna Pająk", list.get(0).getName());
Assert.assertEquals("Dawid Świątek", list.get(1).getName());
}
@Test
public void getKinshipTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("matka", list.get(0).getKinship());
Assert.assertEquals("ojciec", list.get(1).getKinship());
}
@Test
public void getAddressTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("ul. Sportowa 16, 00-123 Warszawa", list.get(0).getAddress());
Assert.assertEquals("ul. Sportowa 18, 00-123 Warszawa", list.get(1).getAddress());
}
@Test
public void getTelephonesTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("555111222", list.get(0).getTelephones());
Assert.assertEquals("555222111", list.get(1).getTelephones());
}
@Test
public void getEmailTest() throws Exception {
List<FamilyMember> list = familyInformation.getFamilyMembers();
Assert.assertEquals("wulkanowy@example.null", list.get(0).getEmail());
Assert.assertEquals("wulkanowy@example.null", list.get(1).getEmail());
}
}

View File

@ -1,21 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Oceny</title>
</head>
<body>
<main class="mainContainer">
<h1>Oceny</h1>
<div class="filters">
<div>
<label for="okresyKlasyfikacyjneDropDownList">Okres klasyfikacyjny:</label>
<select id="okresyKlasyfikacyjneDropDownList" name="okresyKlasyfikacyjneDropDownList">
<option value="1234">1</option>
<option selected="selected" value="1235">2</option>
</select>
</div>
</main>
<footer>wersja: 17.05.0000.24042</footer>
</body>
</html>

View File

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Uonet+</title>
</head>
<body>
<div class="startScreen">
<div class="holder">
<div class="content">
<div class="panel linkownia pracownik klient">
<a href="https://uonetplus-opiekun.vulcan.net.pl/symbol/534213/Start/Index/">
<div class="imagedHeader directLink">
<div id="idEmptyAppUczeń">
<div class="name">Uczeń</div>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,408 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Frekwencja</title>
<style>
.x-sp-nieobecny-w-oddziale:before {
content: 'nieobecny w oddziale';
background: grey;
}
.x-obecnosc:before {
content: 'obecność';
background: green;
}
.presentData td:not(.padding-zero):not(.x-sp-nieobecny-w-oddziale):not(:first-child):before {
content: 'pusta';
background: grey;
}
</style>
</head>
<body>
<main class="mainContainer">
<h1>Frekwencja</h1>
<table class="presentData">
<thead>
<tr>
<th>Lekcja</th>
<th>poniedziałek<br>31.08.2015</th>
<th>wtorek<br>01.09.2015</th>
<th>środa<br>02.09.2015</th>
<th>czwartek<br>03.09.2015</th>
<th>piątek<br>04.09.2015</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Uroczyste rozpoczęcie roku szkolnego 2015/2016</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie do życia w rodzinie</span>
</div>
</td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>2</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język angielski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język niemiecki</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>3</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Chemia</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>4</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Geografia</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
</tr>
<tr>
<td>5</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Tworzenie stron internetowych</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Matematyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język polski</span>
</div>
</td>
</tr>
<tr>
<td>6</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Tworzenie stron internetowych</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Fizyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Matematyka</span>
</div>
</td>
</tr>
<tr>
<td>7</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język polski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Historia</span>
</div>
</td>
</tr>
<tr>
<td>8</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td></td>
<td></td>
</tr>
<tr>
<td>9</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>10</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>11</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>13</td>
<td class="x-sp-nieobecny-w-oddziale"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h1 id="statystyki">Statystyki</h1>
<div>
<label for="idPrzedmiot">Przedmiot:</label>
<select id="idPrzedmiot" name="idPrzedmiot">
<option value="-1">Wszystkie</option>
<option value="1">Religia</option>
<option value="4">Język polski</option>
<option value="5">Język angielski</option>
<option value="9">Język niemiecki</option>
<option value="50">Historia</option>
<option value="56">Wiedza o społeczeństwie</option>
<option value="58">Matematyka</option>
<option value="59">Fizyka</option>
<option value="61">Chemia</option>
<option value="63">Biologia</option>
<option value="64">Geografia</option>
<option value="71">Informatyka</option>
<option value="75">Wychowanie fizyczne</option>
<option value="88">Edukacja dla bezpieczeństwa</option>
<option value="91">Wychowanie do życia w rodzinie</option>
<option value="94">Zajęcia z wychowawcą</option>
<option value="106">Techniki biurowe</option>
<option value="108">Urządzenia techniki komputerowej</option>
<option value="109">Naprawa komputera</option>
<option value="113">Systemy operacyjne</option>
<option value="114">Sieci komputerowe i administrowanie sieciami</option>
<option value="118">Tworzenie stron internetowych</option>
<option value="492">Opieka nad uczniami</option>
<option value="664">Fizyka doświadczalna</option>
<option value="0">Brak opisu lekcji</option>
</select>
</div>
<h2>Frekwencja od początku roku szkolnego: 100,00%</h2>
<table>
<thead>
<tr>
<th></th>
<th>IX</th>
<th>X</th>
<th>XI</th>
<th>XII</th>
<th>I</th>
<th>II</th>
<th>III</th>
<th>IV</th>
<th>V</th>
<th>VI</th>
<th>VII</th>
<th>VIII</th>
<th>Razem</th>
</tr>
</thead>
<tbody>
<tr>
<td>Obecność</td>
<td>142</td>
<td>143</td>
<td>139</td>
<td>110</td>
<td>131</td>
<td>75</td>
<td>126</td>
<td>139</td>
<td>92</td>
<td>114</td>
<td></td>
<td></td>
<td>1211</td>
</tr>
<tr>
<td>Nieobecność nieusprawiedliwiona</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nieobecność usprawiedliwiona</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nieobecność z przyczyn szkolnych</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Spóźnienie nieusprawiedliwione</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Spóźnienie usprawiedliwione</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Zwolnienie</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.07.0002.24480</footer>
</body>
</html>

View File

@ -1,498 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Frekwencja</title>
<style>
.x-obecnosc:before {
content: 'obecność';
background: green;
}
.x-nieobecnosc-nieuspr:before {
content: 'nieobecność nieusprawiedliwiona';
background: red;
}
.x-nieobecnosc-uspr:before {
content: 'nieobecność usprawiedliwiona';
background: orange;
}
.x-nieobecnosc-przycz-szkol:before {
content: 'nieobecność z przyczyn szkolnych';
background: lightblue;
}
.x-sp-nieusprawiedliwione:before {
content: 'spóźnienie nieusprawiedliwione';
background: yellow;
}
.x-sp-spr:before {
content: 'spóźnienie usprawiedliwione';
background: black;
color: white;
}
.x-sp-zwolnienie:before {
content: 'zwolnienie';
background: purple;
}
.x-sp-nieobecny-w-oddziale:before {
content: 'nieobecny w oddziale';
background: grey;
}
.x-obecnosc:before {
content: 'obecność';
background: green;
}
.presentData td:not(.padding-zero):not(.x-sp-nieobecny-w-oddziale):not(:first-child):before {
content: 'pusta';
background: grey;
}
</style>
</head>
<body>
<main class="mainContainer">
<h1>Frekwencja</h1>
<table class="presentData">
<thead>
<tr>
<th>Lekcja</th>
<th>poniedziałek<br>05.09.2016</th>
<th>wtorek<br>06.09.2016</th>
<th>środa<br>07.09.2016</th>
<th>czwartek<br>08.09.2016</th>
<th>piątek<br>09.09.2016</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Multimedia i grafika komputerowa</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Użytkowanie urządzeń peryferyjnych komputera</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Religia</span>
</div>
</td>
<td></td>
</tr>
<tr>
<td>2</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język niemiecki</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Użytkowanie urządzeń peryferyjnych komputera</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język niemiecki</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Sieci komputerowe i administrowanie sieciami</span>
</div>
</td>
</tr>
<tr>
<td>3</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Fizyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Historia</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Wiedza o kulturze</span>
</div>
</td>
</tr>
<tr>
<td>4</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Naprawa komputera</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język angielski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Wychowanie fizyczne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Język polski</span>
</div>
</td>
</tr>
<tr>
<td>5</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Sieci komputerowe i administrowanie sieciami</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Metodologia programowania</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-przycz-szkol">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Matematyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Metodologia programowania</span>
</div>
</td>
</tr>
<tr>
<td>6</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język niemiecki</span>
</div>
</td>
<td class="padding-zero">
<div class="x-sp-nieusprawiedliwione">
<span>Sieci komputerowe i administrowanie sieciami</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Język polski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Podstawy przedsiębiorczości</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Matematyka</span>
</div>
</td>
</tr>
<tr>
<td>7</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Fizyka</span>
</div>
</td>
<td class="padding-zero">
<div class="x-sp-spr">
<span>Język polski</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Zajęcia z wychowawcą</span>
</div>
</td>
<td class="padding-zero">
<div class="x-nieobecnosc-uspr">
<span>Religia</span>
</div>
</td>
</tr>
<tr>
<td>8</td>
<td></td>
<td class="padding-zero">
<div class="x-nieobecnosc-nieuspr">
<span>Naprawa komputera</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Systemy operacyjne</span>
</div>
</td>
<td class="padding-zero">
<div class="x-obecnosc">
<span>Urządzenia techniki komputerowej</span>
</div>
</td>
<td class="padding-zero">
<div class="x-sp-zwolnienie">
<span>Zajęcia z wychowawcą</span>
</div>
</td>
</tr>
<tr>
<td>9</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>10</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>11</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>12</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>13</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h1 id="statystyki">Statystyki</h1>
<div>
<label for="idPrzedmiot">Przedmiot:</label>
<select id="idPrzedmiot" name="idPrzedmiot">
<option value="-1">Wszystkie</option>
<option value="1">Religia</option>
<option value="4">Język polski</option>
<option value="5">Język angielski</option>
<option value="9">Język niemiecki</option>
<option value="50">Historia</option>
<option value="57">Wiedza o kulturze</option>
<option value="58">Matematyka</option>
<option value="59">Fizyka</option>
<option value="70">Podstawy przedsiębiorczości</option>
<option value="75">Wychowanie fizyczne</option>
<option value="77">Praktyka zawodowa</option>
<option value="91">Wychowanie do życia w rodzinie</option>
<option value="94">Zajęcia z wychowawcą</option>
<option value="108">Urządzenia techniki komputerowej</option>
<option value="109">Naprawa komputera</option>
<option value="110">Użytkowanie urządzeń peryferyjnych komputera</option>
<option value="113">Systemy operacyjne</option>
<option value="114">Sieci komputerowe i administrowanie sieciami</option>
<option value="116">Multimedia i grafika komputerowa</option>
<option value="120">Metodologia programowania</option>
<option value="492">Opieka nad uczniami</option>
<option value="0">Brak opisu lekcji</option>
</select>
</div>
<h2>Frekwencja od początku roku szkolnego: 80,94%</h2>
<table>
<thead>
<tr>
<th></th>
<th>IX</th>
<th>X</th>
<th>XI</th>
<th>XII</th>
<th>I</th>
<th>II</th>
<th>III</th>
<th>IV</th>
<th>V</th>
<th>VI</th>
<th>VII</th>
<th>VIII</th>
<th>Razem</th>
</tr>
</thead>
<tbody>
<tr>
<td>Obecność</td>
<td>135</td>
<td>103</td>
<td>108</td>
<td>54</td>
<td>37</td>
<td>100</td>
<td>33</td>
<td>90</td>
<td>103</td>
<td>59</td>
<td></td>
<td></td>
<td>822</td>
</tr>
<tr>
<td>Nieobecność nieusprawiedliwiona</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>2</td>
<td></td>
<td></td>
<td></td>
<td>4</td>
<td></td>
<td></td>
<td>6</td>
</tr>
<tr>
<td>Nieobecność usprawiedliwiona</td>
<td>6</td>
<td>27</td>
<td>29</td>
<td>30</td>
<td>44</td>
<td></td>
<td></td>
<td>16</td>
<td>13</td>
<td>27</td>
<td></td>
<td></td>
<td>192</td>
</tr>
<tr>
<td>Nieobecność z przyczyn szkolnych</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>7</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>7</td>
</tr>
<tr>
<td>Spóźnienie nieusprawiedliwione</td>
<td>4</td>
<td></td>
<td>1</td>
<td></td>
<td></td>
<td>2</td>
<td>2</td>
<td></td>
<td>2</td>
<td>1</td>
<td></td>
<td></td>
<td>12</td>
</tr>
<tr>
<td>Spóźnienie usprawiedliwione</td>
<td>1</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>1</td>
</tr>
<tr>
<td>Zwolnienie</td>
<td></td>
<td>1</td>
<td></td>
<td></td>
<td></td>
<td>1</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>2</td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.07.0002.24480</footer>
</body>
</html>

View File

@ -1,85 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Terminarz sprawdzianów</title>
</head>
<body>
<main class="mainContainer">
<h1>Sprawdziany</h1>
<h2>Tydzień 23.10.2017 - 29.10.2017</h2>
<div>
<h2>poniedziałek, 23.10.2017</h2>
<article>
<div class="daneWiersz">
<div class="tytul">Przedmiot i grupa:</div>
<div class="wartosc">Sieci komputerowe 3Ti|zaw2</div>
</div>
<div class="daneWiersz">
<div class="tytul">Rodzaj sprawdzianu:</div>
<div class="wartosc">Sprawdzian</div>
</div>
<div class="daneWiersz">
<div class="tytul">Opis:</div>
<div class="wartosc">Łącza danych</div>
</div>
<div class="daneWiersz">
<div class="tytul">Nauczyciel i data wpisu:</div>
<div class="wartosc">Adam Wiśniewski [AW], 16.10.2017</div>
</div>
</article>
</div>
<div>
<h2>wtorek, 24.10.2017</h2>
<article>
<div class="daneWiersz">
<div class="tytul">Przedmiot i grupa:</div>
<div class="wartosc">Język angielski 3Ti|J1</div>
</div>
<div class="daneWiersz">
<div class="tytul">Rodzaj sprawdzianu:</div>
<div class="wartosc">Sprawdzian</div>
</div>
<div class="daneWiersz">
<div class="tytul">Opis:</div>
<div class="wartosc">Czasy teraźniejsze</div>
</div>
<div class="daneWiersz">
<div class="tytul">Nauczyciel i data wpisu:</div>
<div class="wartosc">Natalia Nowak [NN], 17.10.2017</div>
</div>
</article>
</div>
<div></div>
<div></div>
<div>
<h2>piątek, 27.10.2017</h2>
<article>
<div class="daneWiersz">
<div class="tytul">Przedmiot i grupa:</div>
<div class="wartosc">Metodologia programowania 3Ti|zaw2</div>
</div>
<div class="daneWiersz">
<div class="tytul">Rodzaj sprawdzianu:</div>
<div class="wartosc">Sprawdzian</div>
</div>
<div class="daneWiersz">
<div class="tytul">Opis:</div>
<div class="wartosc"></div>
</div>
<div class="daneWiersz">
<div class="tytul">Nauczyciel i data wpisu:</div>
<div class="wartosc">Małgorzata Nowacka [MN], 16.10.2017</div>
</div>
</article>
</div>
<div></div>
<div></div>
<div class="navigation">
<a href="/symbol/123456/Sprawdziany.mvc/Terminarz?data=636437088000000000&amp;rokSzkolny=2017&amp;rodzajWidoku=2" class="button-prev">Poprzedni tydzień</a>
<a href="/symbol/123456/Sprawdziany.mvc/Terminarz?data=636449184000000000&amp;rokSzkolny=2017&amp;rodzajWidoku=2" class="button-next">Następny tydzień</a>
</div>
</main>
<footer>wersja: 17.08.0001.24874</footer>
</body>
</html>

View File

@ -1,108 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Oceny</title>
</head>
<body>
<main class="mainContainer">
<h1>Oceny</h1>
<div class="filters">
<div>
<label for="okresyKlasyfikacyjneDropDownList">Okres klasyfikacyjny:</label>
<select id="okresyKlasyfikacyjneDropDownList" name="okresyKlasyfikacyjneDropDownList">
<option value="1234567">1</option>
<option selected="selected" value="7654321">2</option>
</select>
</div>
</div>
<table class="ocenySzczegoly-table">
<thead>
<tr>
<th>Przedmiot</th>
<th>Ocena cząstkowa</th>
<th>Opis</th>
<th>Waga</th>
<th>Data</th>
<th>Nauczyciel</th>
</tr>
</thead>
<tbody>
<tr>
<td>Zachowanie</td>
<td>Brak ocen</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Zajęcia z wychowawcą</td>
<td class="break-word">
<span class="ocenaCzastkowa" style="color:#000000;">5</span>
</td>
<td class="break-word">A1, Dzień Kobiet w naszej klasie</td>
<td>1,00</td>
<td>21.03.2017</td>
<td>Patryk Maciejewski</td>
</tr>
<tr>
<td>Edukacja dla bezpieczeństwa</td>
<td class="break-word">
<span class="ocenaCzastkowa" style="color:#F04C4C;">4-</span>
</td>
<td class="break-word">S1, PIERWSZA POMOC I RESUSCYTACJA</td>
<td>5,00</td>
<td>31.03.2017</td>
<td>Weronika Ratajczak</td>
</tr>
<tr>
<td>Fizyka</td>
<td class="break-word">
<span class="ocenaCzastkowa" style="color:#6ECD07;">2</span>
</td>
<td class="break-word">O, Odpowiedź</td>
<td>3,00</td>
<td>25.06.2017</td>
<td>Jakub Michalak</td>
</tr>
<tr>
<td>Język angielski</td>
<td class="break-word">
<span class="ocenaCzastkowa" style="color:#1289F7;">5</span>
</td>
<td class="break-word">BW3, Writing</td>
<td>3,00</td>
<td>02.06.2017</td>
<td>Oliwia Woźniak</td>
</tr>
<tr>
<td>Wiedza o społeczeństwie</td>
<td>Brak ocen</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Wychowanie fizyczne</td>
<td class="break-word"><span class="ocenaCzastkowa" style="color:#6ECD07;">1</span></td>
<td class="break-word">STR</td>
<td>8,00</td>
<td>02.04.2017</td>
<td>Klaudia Dziedzic</td>
</tr>
<tr>
<td>Język polski</td>
<td class="break-word"><span class="ocenaCzastkowa" style="color:#6ECD07;">1</span></td>
<td class="break-word">K, Kordian</td>
<td>5,00</td>
<td>06.02.2017</td>
<td>Amelia Stępień</td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.02.0000.23328</footer>
</body>
</html>

View File

@ -1,70 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Oceny</title>
</head>
<body>
<main class="mainContainer">
<h1>Oceny</h1>
<div class="filters">
<div>
<label for="okresyKlasyfikacyjneDropDownList">Okres klasyfikacyjny:</label>
<select id="okresyKlasyfikacyjneDropDownList" name="okresyKlasyfikacyjneDropDownList">
<option selected="selected" value="1234">1</option>
<option value="1235">2</option>
</select>
</div>
</div>
<table class="ocenyZwykle-table">
<thead>
<tr>
<th>Przedmiot</th>
<th>Oceny cząstkowe</th>
<th>Średnia</th>
<th>Przewidywana ocena roczna</th>
<th>Ocena roczna</th>
</tr>
</thead>
<tbody>
<tr>
<td>Zachowanie</td>
<td class="break-word">Brak ocen</td>
<td>-</td>
<td>bardzo dobre</td>
<td>bardzo dobre</td>
</tr>
<tr>
<td>Język polski</td>
<td class="break-word">0</td>
<td>3,53</td>
<td>-</td>
<td>dobry</td>
</tr>
<tr>
<td>Wychowanie fizyczne</td>
<td class="break-word">0</td>
<td>5,05</td>
<td>bardzo dobry</td>
<td>celujący</td>
</tr>
<tr>
<td>Język angielski</td>
<td class="break-word">0</td>
<td>4,4</td>
<td>4/5</td>
<td>bardzo dobry</td>
</tr>
<tr>
<td>Wiedza o społeczeństwie</td>
<td class="break-word">Brak ocen</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.02.0000.23328</footer>
</body>
</html>

View File

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Witryna ucznia i rodzica Oceny</title>
</head>
<body>
<main class="mainContainer">
<h1>Oceny</h1>
<div class="filters">
<div>
<label for="okresyKlasyfikacyjneDropDownList">Okres klasyfikacyjny:</label>
<select id="okresyKlasyfikacyjneDropDownList" name="okresyKlasyfikacyjneDropDownList">
<option value="1234">1</option>
<option selected="selected" value="1235">2</option>
</select>
</div>
</div>
<table class="ocenyZwykle-table">
<thead>
<tr>
<th>Przedmiot</th>
<th>Oceny cząstkowe</th>
<th>Przewidywana ocena roczna</th>
<th>Ocena roczna</th>
</tr>
</thead>
<tbody>
<tr>
<td>Zachowanie</td>
<td class="break-word">-</td>
<td>bardzo dobre</td>
<td>bardzo dobre</td>
</tr>
<tr>
<td>Praktyka zawodowa</td>
<td class="break-word">-</td>
<td>-</td>
<td>celujący</td>
</tr>
<tr>
<td>Metodologia programowania</td>
<td class="break-word">-</td>
<td>bardzo dobry</td>
<td>celujący</td>
</tr>
<tr>
<td>Podstawy przedsiębiorczości</td>
<td class="break-word">-</td>
<td>3/4</td>
<td>dostateczny</td>
</tr>
<tr>
<td>Wychowanie do życia w rodzinie</td>
<td class="break-word">-</td>
<td>-</td>
<td>-</td>
</tr>
</tbody>
</table>
</main>
<footer>wersja: 17.05.0000.24042</footer>
</body>
</html>

View File

@ -1,15 +0,0 @@
<!doctype html>
<html>
<head>
<title>Logowanie</title>
</head>
<body>
<form id="form1">
<div>
Adres <b>example@wulkanowy.io</b> nie został zarejestrowany w dzienniku uczniowskim jako adres rodzica, bądź ucznia.
Jeśli jesteś rodzicem (prawnym opiekunem) ucznia (lub uczniem) szkoły korzystającej z dziennika „UONET +” udaj się do
wychowawcy i poproś o wprowadzenie Twojego adresu e-mail do Twoich danych.
</div>
</form>
</body>
</html>

View File

@ -1,17 +0,0 @@
<html>
<head>
<title>Working...</title>
</head>
<body>
<form method="POST" name="hiddenform" action="https://fake-log.com/Default/LoginEndpoint.aspx">
<input type="hidden" name="wa" value="wsignin1.0">
<input type="hidden" name="wresult" value="<trust:RequestSecurityTokenResponseCollection xmlns:trust=&quot;http://docs.oasis-open.org/ws-sx/ws-trust/200512&quot;><trust:RequestSecurityTokenResponse Context=&quot;https://uonetplus.fake-log.com/Default/LoginEndpoint.aspx&quot;><trust:RequestedSecurityToken><saml:Assertion AssertionID=&quot;_12345678-1234-1234-1234-1234567890ab&quot; IssueInstant=&quot;2017-10-18T22:00:29.006Z&quot; Issuer=&quot;CUFSTokenService&quot; MajorVersion=&quot;1&quot; MinorVersion=&quot;1&quot; xmlns:saml=&quot;urn:oasis:names:tc:SAML:1.0:assertion&quot;><saml:AttributeStatement><saml:Attribute AttributeName=&quot;UserInstance&quot; AttributeNamespace=&quot;http://schemas.fake-log.com/ws/identity/claims&quot;><saml:AttributeValue>Default</saml:AttributeValue><saml:AttributeValue>demo12345</saml:AttributeValue><saml:AttributeValue>incorrect value</saml:AttributeValue><saml:AttributeValue>warszawa</saml:AttributeValue><saml:AttributeValue>asdf</saml:AttributeValue><saml:AttributeValue>asdfsdf</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion></trust:RequestedSecurityToken></trust:RequestSecurityTokenResponse></trust:RequestSecurityTokenResponseCollection>">
<input type="hidden" name="wctx" value="https://fake-log.com/Default/LoginEndpoint.aspx">
<noscript>
<p>Script is disabled. Click Submit to continue.</p>
<input type="submit" value="Submit">
</noscript>
</form>
<script language="javascript">window.setTimeout('document.forms[0].submit()', 0);</script>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More