Monday, August 22, 2016

GSOC 2016 Results

This is my post, devoted to the results of my work during GSOC 2016 program.

This year I worked on the User Management Dashboard module for OpenMRS ID (here is the description of my project)

My project is a React application, built with using of such libraries and technologies as react-toolbox, ExpressJS, AltJS, webpack, babel

List of my commits during this summer: https://github.com/diospark/openmrs-contrib-id-user-management-dashboard/commits/master?author=diospark

Also I submitted 2 Pull Requests to main OpenMRS ID project repository, with improvements, required for my module:

https://github.com/openmrs/openmrs-contrib-id/pull/88
https://github.com/openmrs/openmrs-contrib-id/pull/89

Sunday, August 21, 2016

GSOC Reports, Week 13: Final GSOC Week

Hi, guys! Here is my last GSOC report regarding my work under User Dashboard module for OpenMRS ID, but not last generally :)
This week I've implemented huge number of features, such as:

  • Re-implemented update, re-save, delete users API, make it more stable, fixed bugs;
  • Added option to edit user email list;
  • Implemented RegExp search;
  • Implemented URL params for search (for example, we can open url: user-dashboard?user=someusername, and it will search for selected user;
  • Changed 'Yes/No' fields on UI to boolean true/false;
  • Added error handling to REST API;
  • Added Messages component for status messages (user update, delete, errors, etc)
  • Added ability to change 'locked' attribute;
  • Added option 'sort by';
  • Re-implemented UI controls, design;
  • Added option to set email from email list as primary.
 User Dashboard became more stable, and get a lot of functions. It still in development, but I believe, that as a result of my work we will have a stable and functional user management dashboard, which will make life of ID Dashboard Administrators much easier!

Sunday, August 14, 2016

GSOC Reports, Week 12: Finalizing things

Hello, everyone! This is one of my last reports about GSOC. Summer ending, and I am finalizing features for OpenMRS ID User Dashboard. So, lets see what I've done during last week:

  • Implemented REST for deleting, updating users, and integrated it into UI;
  • Fixed group list on UI;
  • Added user permissions middleware;
  • Updated possible columns for view list;
  • Added option to update rest of user fields (username, firstName, lastName, etc)
  • Updated UI components, fixed React warnings.
Next week - is a final GSOC week, so my plans for it:

  • Add option to update user email list;
  • REST for users search (by username, primaryEmail, firstName, lastName)
  • Integrate Mongo & LDAP registering (fixing missed entries)
  • UI improvements (styles, useability)
  • Errors hangling and notifications on events (save/update/delete user, etc)

Saturday, August 6, 2016

GSOC Reports, Week 11: Data integration, API updates


Hello everyone!

This week I've successfully integrated users list from Mongo/LDAP into User Dashboard, using axios library, so now we have actual user list. Group list also integrated, but turned off for now due to some bug with React Toolbox Dropdown component, which I will fix later. Also we changed User Dasboard REST API to /admin/user-dasboard/api. So, now we have everything to finish API integration into User Dashboard.

Plans for next week:
  • Finalize API integration;
  • Fix bug with groups/dropdown component;
  • Finish Search, one/mutiple user update;
  • Think about feature of Regex search for users (proposed by my mentor Robert).
Thanks!

Sunday, July 31, 2016

GSOC Reports, Week 10: REST Updates


Hi everyone!

Here is my next report about my work on GSOC 2016 Project "User Management Dashboard".
Last week I make some improvements into REST API for User Dashboard, First of all, I added new functionality to ID Dashboard: method getAllUsers to ldap.js file (see the PR), and also tests for this.

Then I've implemented getAllUsers in the User Dashboard API. Also there were implemented options for user activation and password reset.


Sunday, July 24, 2016

GSOC Reports, Week 9: Real user data integration


Hello everyone! 

As I wrote in my last report, there was some problems with ID instance. Fortunately, My mentor Robert helped me to solve them, so now we can work with ID users data. As for now, I have implemented REST API for getting user data (users list), next plans:
  • Integrate all REST methods for getting and updating user data;
  • Integrate that methods on client side.
On a server side we will use collections library, on a client side - fetch API. We will use collections (FastMap) for combining data from LDAP and Mongo, to find entries which registered only in one of these storages.

Check out my next posts, thanks for reading my blog

Dmytro.

Sunday, July 17, 2016

GSOC Reports, Week 8: Start of User Dashboard Integration

Hello, everyone! This is my next report, about last work week under OpenMRS ID: User Dashboard project. This week I worked in 2 ways:

  • Launching OpenMRS ID instance with integrated User Dashboard module;
  • Implementing skeleton for API methods (get user list, update user, etc)
Unfortunately, as for now, I have problems with launching ID instance, that I described here, so as for now, I didn't get list of users from Mongo/LDAP, but I hope to fix problems soon, and continue development.

Thanks for reading my blog,
Dmytro.

Sunday, July 10, 2016

GSOC Reports, Week 7: Finished UI

Hello, everyone! This is my report for 7-th week of GSOC, and my work under on the OpenMRS ID: User Dashboard project.

The most important thing of this week - is that UI part is finished, and I started to work on the integration of User Dashboard module to the main ID application. This week I've done next features:
  • Data pagination;
  • Added 'clear' filter button;
  • Added 'reset password' button;
  • Added option to update multiple users by one action.
Plans for next week: add logic for getting REAL data from LDAP/Mongo.

Thanks everyone for reading this blog :)

Dmytro.

Sunday, July 3, 2016

GSOC Reports, Week 6: Interactive view implemented

Hello everyone! This week I've done a huge progress with User Dashboard UI. Most of actions were implemented, such as:

  • Users search;
  • Filtering (by LDAP, Mongo, or other criteria)
  • DataGrid column configuration (ability to set, which columns will be displayed in grid)
  • User properties change (fix LDAP/Mongo existance, groups management, password reset)
Also react-router library was integrated, this library will be used for pagination (which development is in progress now).

So, for the next week I plan to finish pagination, and start integration of real data from ID dashboard (users, groups, etc).

Thanks!

Sunday, June 26, 2016

GSOC Reports, Week 5: Mostly finished UI


Hello everyone! This is my short post about current status of User Dashboard project.

This week I worked under FLUX architecture implementation (Alt framework), and improving UI.
After my mentor's UI review I also updated some of the components, and added separate view for editing one or multiple users properties (Such as, select group(s), LDAP/Mongo status, etc).

There are still issues with FLUX data updating, which I plan to fix next week, and start to work under data integration (from ID dashboard). Also there is new note from my mentor, to add new screen for log in, which is I also will add next week.

Thanks for reading my blog, good luck) 

Sunday, June 19, 2016

GSOC reports, Week 4: Flux implementation


Hello everyone! This is my next report, regarding my work on OpenMRS ID: User Dashboard project.

Last week I finished with UI components, (maybe some of them will be updated when we will work with real data, but as for now they are ready), and start working on data manipulation. In my previous projects (that mostly was built with AngularJS) I used MVC pattern for implementing UI. But for React there is another architecture - Flux, which I decided to use in our project. 


So, first I something changed project structure, (with adding directories 'app/actions' and app/stores') and make some refactoring. As Flux implementation I used popular alt library, and also I used immutable library for working with immutable data. Both libraries were added to package.json file of a module.

Then I implemented basic AppActions and AppStore modules, and integrated them for our Datagrid component.  

Next steps which I will do: integrate Alt for all components, and plan how to integrate real data from OpenMRS ID (MongoDb and LDAP) into the User Dashboard. Also, during next week I will make a short midterm presentation about the User Dashboard Module, and before that, will integrate it into the main OpenMRS ID application.

Thanks everyone for reading, good luck) 

Friday, June 10, 2016

GSOC reports, Week 3: focused on components


Hello everyone who read my blog! Here is my report for last GSOC week.

This week was much more productive than previous, because at the moment I'm well familiarized with React documentation, and can focus on making of components. 


First, I decided to use some grid system for UI components, it will much simplify component placement on the UI. Previously I worked with twitter bootstrap framework, which have great grid system, which is good documented and easy to use. React-toolbox library, which I am using for making components, doesn't support grid out of the box, but fortunately, I found another solution - react-flexbox-grid, which works well with react-toolbox components. This solution was integrated to our application.

Also I have implemented some components, such as DataGrid (for displaying list of users), Comboboxes (for selecting columns that will be displayed in the grid, and filters for users).

Plans for next week - implement pagination for DataGrid, and improving components.


Friday, June 3, 2016

GSOC reports, Week 2: problems with material-ui library and search of new solution

Hello everyone! There is my report for the second week of GSOC program.

This week was not such productive, as I expected, because I got a lot of problems with material-ui library, which I choose for our User Dashboard module, and especially with server side rendering. Details I leaved here

First I tried to setup an app with client side rendering, using browerify and babel plugins for gulp, but I didn't help. Finally, I used advice from my mentor Robert, and tried to setup an app with other React Material library. I choose react-toolbox with webpack module bundler, spent a lot of time for setup webpack configuration, but this solution works! I pushed updated module to my repo

So, as for now, there are no any blockers for continue developing, and I can focus on implementing UI components. This is my plan for next week.

Thanks for attention, good luck :)

Friday, May 27, 2016

GSOC reports, Week 1: module skeleton and connecting things together

Hi guys! The first GSOC week is over, and there are some updates in OpenMRS ID: User Dashboard project!

This week I mostly worked on application (module) skeleton. As we decided before, User Dashboard will be implemented as OpenMRS ID module, so I created a new repository for it (here is the link), and setup basic things (module dependencies and skeleton). These thins include: server side rendering of React components, babel compiler, and material-ui components. So, for now, module starter is ready, and I can focus on on creating components template, and basic routing in a module. These are my plans for next week.


That's all for now, wait for new updates, good luck ;)

Sunday, May 22, 2016

GSOC 2016 - Before the start


Hello everyone! This is my first post, related to my work on the OpenMRS ID: User Dashboard project, as a part of GSOC program.

During the 'community bonding' period (before May, 23) I learned new technologies, that I will use in our project (such as React framework), and also a project structure. Also we made discussions with my mentor Robert, about the implementation and other details of the project. After this discussions we have next: 


  • User Dashboard will be implemented as a OpenMRS ID module, using Material UI framework (Material design);
  • React components will be rendered on a server side;
  • All changes I will do under the gsoc2016 branch of the repository.
At the moment I have already setup OpenMRS ID project on my local machine, pulled last changes from main repository. During next week I will work on project structure, setup rendering engine for React, and basic UI skeleton.


As soon as I will have updates, I will publish them in this blog. I hope, that it will be a great summer, which give me a lot of fun, and knowledge of new technologies and frameworks :)