I found that limitation of maximum pkey length in facet header is not working well. Attaching patch #134 which actually calculates it.

On 05/02/2012 03:33 PM, Petr Vobornik wrote:
This bunch of patches are implementing ticket #2247. They introduce some
new logic and types of internal objects. There might be design issues
(mainly in state evaluation). I would appreciate some opinions on what
might be improved.

See patch comments for more details.

What I think might be the main concerns:

Action list definition:
Now action lists are defined on facet level and facet header takes them
from facet. Would in be better to define action list - the widget and
actions separately. The widget could be defined in header and actions on
facet level.

State evaluation:
The patches are adding support for some kind of state evaluation. The
state is represented by array of string. I'm thinking that the design
might not be robust. Is a string good enough? We might have a problem
with conditions like to "have this particular access right' (#2318).
There are state_evaluators and state_listeners. They are practically the
same but the execution point and parameters are different. Should they
be somehow joined?

Code placement:
There's a lot of new objects and for some of them it is not clear to
what code file they should be placed.

FYI: In close future I would like to address some problems in UI
architecture. I'm in a middle of designing phase, so there is nothing to
present at the moment. The main topics are:
* reduce the need of overriding methods when a new widgets or
capabilities are added
* make it more declarative to enhance extendibility
It may be done by:
* better inheriting model to support events
* build phases (preinit, init, postinit, create, load) to improve spec
object creating and initialization of created object.
* path representation of an event/attribute/model property to support
bindings to various events/attrs from anywhere
* introduce model and model bindings, converters between command
output/model/human readable representation

Freeipa-devel mailing list

Petr Vobornik
From a53c1ed5ad21c274d9563ea1f6c7bf95757e8ea7 Mon Sep 17 00:00:00 2001
From: Petr Vobornik <pvobo...@redhat.com>
Date: Thu, 3 May 2012 14:42:01 +0200
Subject: [PATCH] Improved calculation of max pkey length in facet header

Very long pkeys in facet header were limited to 60 characters. This magic number was good enough but with new action lists it isn't.

This patch is adding calculation of maximum characters for pkey in facet header. It fixes regression introduced by Action Lists and also it uses effectively available space.

 install/ui/facet.js |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/install/ui/facet.js b/install/ui/facet.js
index 64d4f5d2adaafbce08d571060cb0fd723b10e558..30bf8798a0446d4e3057d09bce16a14f87f688a5 100644
--- a/install/ui/facet.js
+++ b/install/ui/facet.js
@@ -369,7 +369,8 @@ IPA.facet_header = function(spec) {
         if (!value) return;
-        var limited_value = IPA.limit_text(value, 60);
+        var pkey_max = that.get_max_pkey_length();
+        var limited_value = IPA.limit_text(value, pkey_max);
         if (!that.facet.disable_breadcrumb) {
             var breadcrumb = [];
@@ -580,6 +581,31 @@ IPA.facet_header = function(spec) {
+    that.get_max_pkey_length = function() {
+        var label_w, max_pkey_w, max_pkey_l, al, al_w, title_max_w, icon_w,
+            char_w, container_w;
+        container_w = that.container.width();
+        char_w = that.title_widget.title.css('font-size');
+        icon_w = that.title_widget.icon.width();
+        label_w = that.title_widget.title.width();
+        char_w = label_w / that.title_widget.title.text().length;
+        max_pkey_w = container_w - icon_w - label_w;
+        max_pkey_w -= 10; //some space correction to be safe
+        if (that.action_list) {
+            al = that.action_list.container;
+            al_w = al.width();
+            max_pkey_w -=  al_w;
+        }
+        max_pkey_l = Math.ceil(max_pkey_w / char_w);
+        return max_pkey_l;
+    };
     that.adjust_elements = function() {
         if (that.action_list) {

Freeipa-devel mailing list

Reply via email to