]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1453759 - Port OrangeFactor extension to treeherder
authorIsrael Madueme <purelogiq@gmail.com>
Tue, 1 May 2018 21:32:45 +0000 (17:32 -0400)
committerdklawren <dklawren@users.noreply.github.com>
Tue, 1 May 2018 21:32:45 +0000 (17:32 -0400)
Bugzilla/CGI.pm
extensions/OrangeFactor/Extension.pm
extensions/OrangeFactor/template/en/default/hook/bug/edit-after_custom_fields.html.tmpl
extensions/OrangeFactor/template/en/default/hook/bug_modal/edit-details_rhs.html.tmpl
extensions/OrangeFactor/web/js/orange_factor.js

index 9e8ba6c09b22cf4434292864f5f8f77a104c1420..03805ad1ec5e66d7c3ff448f4c9573ba23b35a9d 100644 (file)
@@ -42,6 +42,11 @@ sub DEFAULT_CSP {
         img_src     => [ 'self', 'https://secure.gravatar.com', 'https://www.google-analytics.com' ],
         style_src   => [ 'self', 'unsafe-inline' ],
         object_src  => [ 'none' ],
+        connect_src => [
+            'self',
+            # This is from extensions/OrangeFactor/web/js/orange_factor.js
+            'https://treeherder.mozilla.org/api/failurecount/',
+        ],
         form_action => [
             'self',
             # used in template/en/default/search/search-google.html.tmpl
@@ -69,7 +74,7 @@ sub SHOW_BUG_MODAL_CSP {
         connect_src => [
             'self',
             # This is from extensions/OrangeFactor/web/js/orange_factor.js
-            'https://brasstacks.mozilla.com/orangefactor/api/count',
+            'https://treeherder.mozilla.org/api/failurecount/',
         ],
         frame_src   => [ 'self', ],
         worker_src  => [ 'none', ],
index ab2f1d749ec20b1ae2bb341a7075556c3e8726b2..56dd5dc6e0ccef2056a9361b93a472f13faae7c1 100644 (file)
@@ -17,6 +17,8 @@ use Bugzilla::User::Setting;
 use Bugzilla::Constants;
 use Bugzilla::Attachment;
 
+use DateTime;
+
 our $VERSION = '1.0';
 
 sub template_before_process {
@@ -38,6 +40,8 @@ sub template_before_process {
     my $bug = exists $vars->{'bugs'} ? $vars->{'bugs'}[0] : $vars->{'bug'};
     if ($bug && grep($_->name eq 'intermittent-failure', @{ $bug->keyword_objects })) {
         $vars->{'orange_factor'} = 1;
+        $vars->{'date_start'} = ( DateTime->now() - DateTime::Duration->new( days => 7 ) )->ymd();
+        $vars->{'date_end'} = DateTime->now->ymd();
     }
 }
 
index a41188a630a1f8accabe7487d15f0bf8aa58377d..1eedab479f02276443cb5e78aec803810968866c 100644 (file)
     <td>
       [% IF cgi.user_agent.match('(?i)gecko') %]
         <canvas id="orange-graph" class="bz_default_hidden"></canvas>
-        <span id="orange-count"></span>
+        <span id="orange-count"
+              style="display:none;"
+              data-date-start="[% date_start FILTER html %]"
+              data-date-end="[% date_end FILTER html %]"
+              data-bug-id="[% bug.bug_id FILTER html %]">
+        </span>
       [% END %]
-      (<a href="https://brasstacks.mozilla.com/orangefactor/?display=Bug&bugid=[% bug.bug_id FILTER uri %]"
+      (<a href="https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?startday=[% date_start FILTER uri %]&endday=[% date_end FILTER uri %]&tree=trunk&bug=[% bug.bug_id FILTER uri %]"
           title="Click to load Orange Factor page for this [% terms.bug %]">link</a>)
     </td>
   </tr>
index 30cd65cd2c96b8df363a9da98915457cc662def3..d6ee5f127e5a3b29178f94fc2cf85d30633a7a47 100644 (file)
   %]
     [% IF cgi.user_agent.match('(?i)gecko') %]
       <canvas id="orange-graph" style="display:none;"></canvas>
-      <span id="orange-count" style="display:none;"></span>
+      <span id="orange-count"
+            style="display:none;"
+            data-date-start="[% date_start FILTER html %]"
+            data-date-end="[% date_end FILTER html %]"
+            data-bug-id="[% bug.bug_id FILTER html %]">
+      </span>
     [% END %]
     <span id="orange-link">
-      (<a href="https://brasstacks.mozilla.com/orangefactor/?display=Bug&bugid=[% bug.bug_id FILTER uri %]"
+      (<a href="https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?startday=[% date_start FILTER uri %]&endday=[% date_end FILTER uri %]&tree=trunk&bug=[% bug.bug_id FILTER uri %]"
           title="Click to load Orange Factor page for this [% terms.bug %]">link</a>)
     </span>
   [% END %]
index fa9411cf84f603b006aa4be59e185a1b33518f3f..78fbb5eb32cacce644d676f7351f6dcc0da2cd9a 100644 (file)
@@ -8,21 +8,17 @@
 
 $(function() {
     'use strict';
-    var dayMs = 24 * 60 * 60 * 1000;
-    var limit = 7;
 
     function getOrangeCount(data) {
-        data = data.oranges;
-        var total = 0,
-            days = [],
-            date = getCurrentDateMs() - limit * dayMs;
-        for(var i = 0; i < limit; i++) {
-            var iso = dateString(new Date(date));
-            var count = data[iso] ? data[iso].orangecount : 0;
-            days.push(count);
-            total += count;
-            date += dayMs;
-        }
+        let days = [];
+        let total = 0;
+
+        data.forEach(entry => {
+            let failureCount = entry["failure_count"];
+            days.push(failureCount);
+            total += failureCount;
+        });
+
         displayGraph(days);
         displayCount(total);
     }
@@ -53,39 +49,26 @@ $(function() {
         $('#orange-count').text(count + ' failures on trunk in the past week');
     }
 
-    function dateString(date) {
-        function norm(part) {
-            return JSON.stringify(part).length == 2 ? part : '0' + part;
-        }
-        return date.getFullYear()
-            + "-" + norm(date.getMonth() + 1)
-            + "-" + norm(date.getDate());
-    }
-
-    function getCurrentDateMs() {
-        var d = new Date;
-        return d.getTime();
-    };
-
     function orangify() {
-        $('#orange-count')
-            .text('Loading...')
-            .show();
-        var bugId = document.forms['changeform'].id.value;
-        var request = {
+        let $orangeCount = $('#orange-count');
+        let queryParams = $.param({
+            bug: $orangeCount.data('bug-id'),
+            startday: $orangeCount.data('date-start'),
+            endday: $orangeCount.data('date-end'),
+            tree: 'trunk'
+        });
+        let request = {
             dataType: "json",
-            xhrFields: {
-                withCredentials: true
-            },
-            url: "https://brasstacks.mozilla.com/orangefactor/api/count?" +
-                 "bugid=" + encodeURIComponent(bugId) + "&tree=trunk"
+            url: `https://treeherder.mozilla.org/api/failurecount/?${queryParams}`
         };
+
+        $orangeCount.text('Loading...').show();
         $.ajax(request)
             .done(function(data) {
                 getOrangeCount(data);
             })
             .fail(function() {
-                $('#orange-count').text('Please sign into OrangeFactor first');
+                $orangeCount.text('Unable to load OrangeFactor at this time.');
             });
     }