[Rt-commit] rt branch, 4.6/two-col-in-widget, created. rt-4.4.4-433-gd1ac26ad0

? sunnavy sunnavy at bestpractical.com
Mon Oct 21 18:18:03 EDT 2019


The branch, 4.6/two-col-in-widget has been created
        at  d1ac26ad093eccb7a205b54bc8aa011f67e4ccc4 (commit)

- Log -----------------------------------------------------------------
commit d1ac26ad093eccb7a205b54bc8aa011f67e4ccc4
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Tue Oct 22 05:25:31 2019 +0800

    Automatically render 2 columns for common ticket widgets on large screen
    
    For text/wikitext type of cfs, as they are supposed to contain quite a
    few content, we intentionally let them take up the whole row.
    
    People can add "two-col-left" or "two-col-right" css class to control
    the position of fields, and "two-col-full" is to take up the whole row.

diff --git a/share/html/Elements/ShowCustomFields b/share/html/Elements/ShowCustomFields
index 26ef1e570..8ddc7c071 100644
--- a/share/html/Elements/ShowCustomFields
+++ b/share/html/Elements/ShowCustomFields
@@ -48,7 +48,7 @@
 % $m->callback( CallbackName => 'BeforeCustomFields', Object => $Object,
 %               Grouping => $Grouping, ARGSRef => \%ARGS, CustomFields => $CustomFields, Table => $Table );
 % if ($Table) {
-<div>
+<div class="two-col">
 % }
 % while ( my $CustomField = $CustomFields->Next ) {
 % my $Values = $Object->CustomFieldValues( $CustomField->Id );
@@ -63,6 +63,7 @@
 %   'custom-field-'.$CustomFieldName,
 % );
 % push @classes, 'unset-field' if not $count;
+% push @classes, 'two-col-full' if $CustomField->Type =~ /^(?:Text|Wikitext)$/;
 % $m->callback( CallbackName => 'ModifyFieldClasses', CustomField => $CustomField,
 %               Object => $Object, Classes => \@classes, Grouping => $Grouping );
   <div class="form-row <% join(' ', @classes) %>" id="CF-<%$CustomField->id%>-ShowRow">
diff --git a/share/html/Ticket/Elements/ShowBasics b/share/html/Ticket/Elements/ShowBasics
index 36206a6e4..dfc0f748d 100644
--- a/share/html/Ticket/Elements/ShowBasics
+++ b/share/html/Ticket/Elements/ShowBasics
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<div>
+<div class="two-col">
   <div class="id form-row">
     <div class="label col-md-3"><&|/l&>Id</&>:</div>
     <div class="value col-md-9"><span class="current-value form-control"><%$Ticket->Id %></span></div>
diff --git a/share/html/Ticket/Elements/ShowDates b/share/html/Ticket/Elements/ShowDates
index 7f9dc7ddd..42c72bd4e 100644
--- a/share/html/Ticket/Elements/ShowDates
+++ b/share/html/Ticket/Elements/ShowDates
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<div>
+<div class="two-col">
   <div class="date form-row created">
     <div class="label col-md-3"><&|/l&>Created</&>:</div>\
     <div class="value col-md-9"><span class="form-control current-value"><% $Ticket->CreatedObj->AsString %></span></div>
diff --git a/share/html/Ticket/Elements/ShowPeople b/share/html/Ticket/Elements/ShowPeople
index 97a033ba6..66f446871 100644
--- a/share/html/Ticket/Elements/ShowPeople
+++ b/share/html/Ticket/Elements/ShowPeople
@@ -45,7 +45,7 @@
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<div>
+<div class="two-col">
   <div class="form-row owner">
     <div class="label col-md-3"><&|/l&>Owner</&>:</div>
 % my $owner = $Ticket->OwnerObj;
diff --git a/share/static/css/elevator-light/ticket.css b/share/static/css/elevator-light/ticket.css
index fb8464af8..19872baa1 100644
--- a/share/static/css/elevator-light/ticket.css
+++ b/share/static/css/elevator-light/ticket.css
@@ -128,3 +128,15 @@ ul.select-queue li + li {
 ul.select-queue li a:visited {
     color: #000;
 }
+
+ at media (min-width: 1200px) {
+    .two-col-full > .label.col-md-3 {
+        max-width: 12.5%;
+        flex: 0 0 12.5%;
+    }
+
+    .two-col-full > .col-md-9 {
+        max-width: 87.5%;
+        flex: 0 0 87.5%;
+    }
+}
diff --git a/share/static/js/util.js b/share/static/js/util.js
index 992fd78c5..2bdcf0ace 100644
--- a/share/static/js/util.js
+++ b/share/static/js/util.js
@@ -283,6 +283,57 @@ jQuery(function() {
             };
         };
     });
+
+    jQuery('div.two-col').each(function() {
+        var container = jQuery(this);
+        var divs = container.children('div.form-row');
+
+        var left_divs = [];
+        var right_divs = [];
+        var full_count = 0;
+
+        for( var i = 0; i < divs.length; i++ ) {
+            var div = divs.eq(i);
+            if ( div.hasClass('two-col-full') ) {
+                left_divs.push(div);
+                full_count++;
+            }
+            else if ( div.hasClass('two-col-left') ) {
+                left_divs.push(div);
+            }
+            else if ( div.hasClass('two-col-right') ) {
+                right_divs.push(div);
+            }
+            else if ( left_divs.length - full_count > right_divs.length ) {
+                right_divs.push(div);
+            }
+            else {
+                left_divs.push(div);
+            }
+        }
+
+        while ( left_divs.length ) {
+            var row = jQuery('<div class="form-row"></div>').appendTo(container);
+            var left_div = left_divs.shift();
+            left_div.detach().appendTo(row);
+
+            if ( left_div.hasClass('two-col-full') ) {
+                left_div.wrap('<div class="col-xl-12"></div>');
+            }
+            else {
+                left_div.wrap('<div class="col-xl-6"></div>');
+                var right_div = right_divs.shift();
+                if ( right_div ) {
+                    right_div.detach().appendTo(row).wrap('<div class="col-xl-6"></div>');
+                }
+            }
+        }
+
+        while ( right_divs.length ) {
+            var row = jQuery('<div class="form-row"></div>').appendTo(container);
+            right_divs.shift().detach().appendTo(row).wrap('<div class="col-xl-6 offset-xl-6"></div>');
+        }
+    });
 });
 
 function textToHTML(value) {

-----------------------------------------------------------------------


More information about the rt-commit mailing list