Code Monkey home page Code Monkey logo

mpeiapp's People

Contributors

anyasamoylova avatar mazuninky avatar tonykolomeytsev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

mpeiapp's Issues

MapFragment UI

Поменять UI карты, т.к. слайдер для корпусов это не очень удобно, а остальные виды локаций вообще хз как запихать в такое мелкое окно. Вероятно стоит сделать что-то вроде немодального bottom sheet с нормальным функционалом карты.

Проблемы AddFragment

  1. Не грузит расписание при нажатии Enter (вместо этого переносит строку)
  2. Нужно снять ограничение на длину символов

Отображение недельного расписания

На вкладке timetable при переходе в ландшафтный режим отображать все 5 рабочих дней недели с парами. То есть показывать расписание сразу на всю неделю.

Экран Feed и его прендазначение

Экран Feed по факту, не удобен и не очень нужен сейчас, хоть и выполняет функцию просмотра и смены расписания.
Нужно польностью пересмотреть логику экрана и сделать его более полезным для пользователя.
Возможно, стоит показывать аналитику по оценками и парам. Показывать только предстоящие пары на след. день, домашние работы, выход на экран настроек и т.д.
Нужно хорошо подумать над тем, что действительно должно быть на главном экране.

Дизайн БАРСа

Так как макет барса верстался со скоростью света ради релиза, нужно привести его в порядок к четвергу.
Выделить наименования пар, приглушить цвета оценок.
Сделать так чтобы информация читалась быстрее.

Баг в MapFragment

Если не дождаться, пока слайдер с буквами корпусов докрутится, и переключить экран, то приложение падает.

Fatal Exception: kotlin.KotlinNullPointerException
       at com.example.map.MapFragmentPresenter.selectBuilding(MapFragmentPresenter.kt:116)
       at com.example.map.MapFragmentPresenter.access$selectBuilding(MapFragmentPresenter.kt:32)
       at com.example.map.MapFragmentPresenter$onResume$1$1.invoke(MapFragmentPresenter.kt:68)
       at com.example.map.MapFragmentPresenter$onResume$1$1.invoke(MapFragmentPresenter.kt:32)
       at com.example.map.view.MapFragment$onViewCreated$1.invoke(MapFragment.kt:43)
       at com.example.map.view.MapFragment$onViewCreated$1.invoke(MapFragment.kt:23)
       at kekmech.ru.coreui.slider.EnumSlider$1$1.invoke(EnumSlider.kt:41)
       at kekmech.ru.coreui.slider.EnumSlider$1$1.invoke(EnumSlider.kt:11)
       at kekmech.ru.coreui.slider.EnumSliderLayoutManager$onTouchRelease$1.run(EnumSliderLayoutManager.kt:79)

*словил NPE в Kotlin: * 👍

Сообщать о том что физра не у всех групп проходит в спортзале

Некоторые группы занимаются физрой на стадионе круглый год, если просто тащить place с сайта, то можно ввести пользователей в заблуждение.
Вместо "Спортзал" писать "Спортзал, стадион или иное место занятия спортом" или типа того.

UseCase смены расписания

Позволить пользователю менять расписание не только с экрана ленты, но и с других экранов.

Восстановление State для DayFragment

Из-за отсутствия у DayFragment конструктора без аргументов, приложение падает, если восстанавливает своё состояние на экране TimetableFragment.
В ViewPager для всех дней недели используются дубликаты фрагмента DayFragment с разными наборами данных, которые передаются в конструкторе. Как восстанавливать данные после того как фрагмент был убит - хороший вопрос)))

ProgressBar для карточек занятий

На карточке пары, которая идёт в данный момент, можно отображать "загрузку", показывающую, сколько уже длится пара и сколько времени до ее окончания.

Уведомлять об обновлениях на всех экранах

Сейчас, в версии 0.9.8, предложение обновиться появляется только на экране feed. Большинство чаще смотрит экраны расписания и БАРСа, отчего тупо пропускают такую важную инфу, как обновление.

Наследование фрагментов от BaseFragment

Очень много boilerplate кода во всех фрагментах. Количество экранов быстро растет. Основные функции нужно поместить в родительский класс BaseFragment.
Запихать туда детект клавиатуры, inject презентера, работа с тулбаром/статусбаром, inflate вьюхи и т.д.

Косяк MapFragment

Отчет из крашлитики:

Fatal Exception: java.lang.IndexOutOfBoundsException: Empty list doesn't contain element at index 0.
       at kotlin.collections.EmptyList.get(EmptyList.java:1)
       at kotlin.collections.EmptyList.get(EmptyList.java:1)
       at com.example.map.MapFragmentPresenter$onResume$1.onChanged(MapFragmentPresenter.java:7)
       at com.example.map.MapFragmentPresenter$onResume$1.onChanged(MapFragmentPresenter.java:7)
       at androidx.lifecycle.LiveData.assertMainThread(LiveData.java)
       at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java)
       at androidx.lifecycle.LiveData.assertMainThread(LiveData.java)
       at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java)
       at kekmech.ru.repository.PlacesRepositoryImpl$updateBuildings$1.onComplete(PlacesRepositoryImpl.java:8)

Похоже, какие-то проблемы если пользователь не смог загрузить places

Корявый Restore State у BarsDetailsFragment

При воскрешении приложения на экране подробностей, пользователь увидит пустую табличку. Исправить можно сохранением id дисциплины в shared preferences

Кэширование данных

Не загружать каждый раз из БД данные о парах, а кэшировать их каким-либо способом. Возможно, стоит использовать LiveDatа в качестве контейнера для списков пар и текущего статуса.

Сделать AddFragment диалоговым окном

AddFragment должен быть в виде bottom sheet dialog, не перекрывающим полностью предыдущий экран (feed). Так как смена группы это частый use case, надо чтобы взаимодействие происходило максимально легко, без переходов на другие экраны, чтобы легко отменялось.

Force Update Dialog

Уведомлять пользователя о том, что вышла новая версия приложения.

Падение приложения при нажатии на две карточки БАРСа

Пока всего один пользователь столкнулся с этим багом. Надо поправить. Возникает, если нажать одновременно более чем на одну дисциплину.

Crashlitycs Stack trace:

Fatal Exception: java.lang.IllegalArgumentException: navigation destination kekmech.ru.mpeiapp:id/action_barsFragment_to_barsDetailsFragment is unknown to this NavController
       at androidx.navigation.NavController.navigate(NavController.java:10)
       at androidx.navigation.NavController.navigate(NavController.java:10)
       at androidx.navigation.NavController.navigate(NavController.java:10)
       at androidx.navigation.NavController.navigate(NavController.java:10)
       at kekmech.ru.mainscreen.MainNavRouter.a(MainNavRouter.java:20)
       at kekmech.ru.bars.main.BarsFragmentPresenter.onItemClick(BarsFragmentPresenter.java:5)
       at kekmech.ru.bars.main.BarsFragmentPresenter.access$onItemClick(BarsFragmentPresenter.java:2)
       at kekmech.ru.bars.main.BarsFragmentPresenter$updateWithScore$1$1$1.invoke(BarsFragmentPresenter.java:2)
       at kekmech.ru.bars.main.BarsFragmentPresenter$updateWithScore$1$1$1.invoke(BarsFragmentPresenter.java:2)
       at kekmech.ru.coreui.adapter.BaseClickableItem$updateViewHolderNative$1$1.run(BaseClickableItem.java:2)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
       at android.view.Choreographer.doCallbacks(Choreographer.java:761)
       at android.view.Choreographer.doFrame(Choreographer.java:693)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7076)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

Встроенный браузер

Добавить встроенный браузер в раздел БАРС, в котором будет происходить автоматический логин, на случай, если парсер вдруг перестанет работать. Ну и разобраться, почему на некоторых китайских девайсах падает приложение во время inflate WebView.

Верстка карточек занятий

Надо переверстать карточки в feed и timetable, визуально выделить главную информацию.
В timetable изменить способ отображения времени пар. Троеточие между цифрами может вводить в заблуждение.

Улучшение Feed

При открытии ленты пролистывать расписание к предстоящей паре, чтобы не приходилось листать до нее. Выделить предстоящую пару каким-нибудь цветом и текстом.

Внеучебные события

В ленте отображать импортированные из групп ВК мероприятия. Учитывать группы ПБ, Профкома, подслушку.
Придумать, каким образом переносить данные с ВК в приложение. Возможно firebase может помочь.

Показывать оценки

Показывать оценки за контрольные мероприятия и предстояние контрольные мероприятия в разделе БАРС.

Ускорить загрузку расписания с сайта.

Сейчас для получения страничек с расписанием используется Webkit. Нужно перейти на параллельные POST/GET запросы, это значительно должно ускорить получение данных.

Экран подробностей для каждого занятия

При тапе по плитке занятия на экране feed и на экране timetable должны появляться подробности о преподавателе, о местоположении занятия, о кафедре препода, замечания от студентов.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.