Feature Wiki

Information about planned and released features

Tabs

Centralizing UI-Components

1 Requirements

1.1 Background

The Guidelines generated by the UI Kitchen Sink Project sprout many todos concerning UI-Components. The current implementation of UI-Components is problematic (A list of problems was compiled during a meeting with the SIG Refactoring). A proposal of a new approach to handle UI-Components was appreciated by the participants of the last Special Jour Fixe for Kitchensink (see section Centralizing UI-Components). This FR is the result of the feedback that gathered during this last meeting.

1.2 Goals

The main goal of this project is to build the foundation and structure along with guidelines for a centralized UI Service serving as home for new UI specific implementations and target place to move all existing ones.

1.3 Requirements

The project will offer the following key elements upon completion:

  • A ready to commit code base defining the base structure of the new UI-Service for 5.2 
  • Guidelines and a defined process offering other developers help by contributing to the new UI-Service.
  • Ready to use implementations of Buttons, Glyphs and Counters in the new UI-Service as a Proof of Concept.
  • A proposal on how to input KS content through comments in the code base.
  • A proposal on how to achieve a high Unit Test coverage for the new UI elements.
  • A proposal of necessary and possible next steps after this project to move existing UI components to the new service.
  • A metric to monitor the progress of shifting existing components to the new service and method to messure it.

1.4 Limitations

The Centralizing UI-Components will NOT offer a complete ready to use service for all UI-Elements found in ILIAS. Much more it will build a solid foundation and structure to add further UI-Elements in the future.

The proposal of complete Less and JS guidelines is beyond the scope of this project. We are aware that this is a very important issue to tacke in the near future though.

1.5 Timeline

We have a proposal ready to be discussed in the first JF of may.

2 JF-Presentations

This is the current draft for some parts of the rules that I want to present on the JF on Monday, 2016-04-25. I do not want to discuss the rules in detail but rather try to show the intentions and ideas that led to the rules and collect feedback and criticism. This also only covers the part of the rules that to me seem less controversial, to get at least somewhere. The more controversial parts will be presented on another JF. We also might need some other place to discuss the rules than the JF.

Klees, Richard [rklees]

Presentation for JF 2016-04-25

The JF 2016-04-25 asked for code. That's in the presentation for JF 2016-05-23. There also is a probably highly controversial proposal for the interfaces, which I want to dicuss.

Klees, Richard [rklees]

Presentation for JF 2016-05-23

3 Proposal for JF

4 Additional Information

5 Discussion

JourFixe, ILIAS [jourfixe]: Februar 29, 2016: We highly appreciate this suggestion and looking forward for the concept.

JourFixe, ILIAS [jourfixe], April 25, 2016: Richard Klees made suggestions for processes and interfaces for centralising UI components and invited all developers to comment these suggestions, see chapter 2. Richard will continue the discussion at the next JF.

JourFixe, ILIAS [jourfixe], May 23, 2016: Richard gaves us an update of the current concepts, esp. for interfaces. He proposes immutable component representations and showed us implementation examples for the Factory interface, Component interface and Renderer interface. We highly appreciate his suggestions and kindly ask him to continue his work.

JourFixe, ILIAS [jourfixe], June 20, 2016: Richard and Timon gave a final presentation of the current concept. We are convinced of this concept and schedule this request for 5.2.

6 Implementation

The UI-framework and additional information about its implementation and how to use it is available on GitHub at: https://github.com/ILIAS-eLearning/ILIAS/tree/trunk/src/UI

Approval

General Feature: Approved at 1.8.2016 by Amstutz, Timon [amstutz]. (Developed by CaT)

Last edited: 4. Sep 2017, 17:20, Amstutz, Timon [amstutz]