mirror of
git://git.yoctoproject.org/yocto-autobuilder2.git
synced 2025-07-19 20:59:02 +02:00
2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("angular-animate"),require("@uirouter/angularjs"),require("guanlecoja-ui"),require("buildbot-data-js")):"function"==typeof define&&define.amd?define("yocto-console-view",["angular-animate","@uirouter/angularjs","guanlecoja-ui","buildbot-data-js"],t):"object"==typeof exports?exports["yocto-console-view"]=t(require("angular-animate"),require("@uirouter/angularjs"),require("guanlecoja-ui"),require("buildbot-data-js")):e["yocto-console-view"]=t(e["angular-animate"],e["@uirouter/angularjs"],e["guanlecoja-ui"],e["buildbot-data-js"])}("undefined"!=typeof self?self:this,(function(e,t,i,s){return function(e){var t={};function i(s){if(t[s])return t[s].exports;var l=t[s]={i:s,l:!1,exports:{}};return e[s].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=t,i.d=function(e,t,s){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)i.d(s,l,function(t){return e[t]}.bind(null,l));return s},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=0)}([function(e,t,i){"use strict";i.r(t);i(1),i(2),i(3),i(4);angular.module("yocto_console_view",["ui.router","ui.bootstrap","ngAnimate","guanlecoja.ui","bbData"]).config(["$stateProvider","glMenuServiceProvider","bbSettingsServiceProvider",class ConsoleState{constructor(e,t,s){var l="console";t.addGroup({name:l,caption:"Yocto Console View",icon:"exclamation-circle",order:5});var n={group:l,caption:"Yocto Console View"},r={controller:"".concat(l,"Controller"),controllerAs:"c",template:i(5),name:l,url:"/".concat(l),data:n};e.state(r),s.addSettingsGroup({name:"Console",caption:"Console related settings",items:[{type:"integer",name:"buildLimit",caption:"Number of builds to fetch",default_value:200},{type:"integer",name:"changeLimit",caption:"Number of changes to fetch",default_value:30}]})}}]).controller("consoleController",["$scope","$q","$window","dataService","bbSettingsService","resultsService","$uibModal","$timeout",class Console{constructor(e,t,i,s,l,n,r,a){this.onChange=this.onChange.bind(this),this._onChange=this._onChange.bind(this),this.matchBuildWithChange=this.matchBuildWithChange.bind(this),this.makeFakeChange=this.makeFakeChange.bind(this),this.$scope=e,this.$window=i,this.$uibModal=r,this.$timeout=a,angular.extend(this,n);var o=l.getSettingsGroup("Console");if(this.buildLimit=o.buildLimit.value,this.changeLimit=o.changeLimit.value,this.dataAccessor=s.open().closeOnDestroy(this.$scope),this._infoIsExpanded={},this.$scope.all_builders=this.all_builders=this.dataAccessor.getBuilders(),this.$scope.builders=this.builders=[],this.$scope.buildergroups=this.buildergroups=[],"undefined"!=typeof Intl&&null!==Intl){var d=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});this.strcompare=d.compare}else this.strcompare=function(e,t){return e<t?-1:e===t?0:1};this.$scope.revmapping=this.revmapping={},this.$scope.branchmapping=this.branchmapping={},this.$scope.builds=this.builds=this.dataAccessor.getBuilds({property:["yp_build_revision","yp_build_branch","reason","publish_destination"],limit:this.buildLimit,order:"-started_at"}),this.changes=this.dataAccessor.getChanges({limit:this.changeLimit,order:"-changeid"}),this.$scope.fakechanges=this.fakechanges=[],this.buildrequests=this.dataAccessor.getBuildrequests({limit:this.buildLimit,order:"-submitted_at"}),this.buildsets=this.dataAccessor.getBuildsets({limit:this.buildLimit,order:"-submitted_at"}),this.builds.onChange=this.onChange,this.changes.onChange=this.onChange,this.buildrequests.onChange=this.onChange,this.buildsets.onChange=this.onChange,this.builds.onNew=e=>{var t=!1,i=e.buildid;null!=(null!=e.properties?e.properties.yp_build_revision:void 0)&&(this.revmapping[e.buildid]=e.properties.yp_build_revision[0],t=!0),null!=(null!=e.properties?e.properties.yp_build_branch:void 0)&&(this.branchmapping[e.buildid]=e.properties.yp_build_branch[0],t=!0),this.revmapping[i]&&this.branchmapping[i]||e.complete_at||(e.getProperties().onChange=e=>{if(t=!1,i=e.endpoint.split("/")[1],!this.revmapping[i]){var s=this.getBuildProperty(e[0],"yp_build_revision");null!=s&&(this.revmapping[i]=s,t=!0)}if(!this.branchmapping[i]){var l=this.getBuildProperty(e[0],"yp_build_branch");null!=l&&(this.branchmapping[i]=l,t=!0)}t&&null==this.onchange_debounce&&(this.onchange_debounce=this.$timeout(this._onChange,100))}),t&&null==this.onchange_debounce&&(this.onchange_debounce=this.$timeout(this._onChange,100))}}getBuildProperty(e,t){return e&&e.hasOwnProperty(t)?e[t][0]:null}onChange(e){0!==this.builds.length&&0!==this.all_builders.length&&this.changes.$resolved&&0!==this.buildsets.length&&0!==this.buildrequests&&null==this.onchange_debounce&&(this.onchange_debounce=this.$timeout(this._onChange,100))}_onChange(){var e,t;this.onchange_debounce=void 0;for(var i=0,s=Array.from(this.builds);i<s.length;i++)e=s[i],this.all_builders.get(e.builderid).hasBuild=!0;this.sortBuildersByTags(this.all_builders),null==this.changesBySSID&&(this.changesBySSID={}),null==this.changesByRevision&&(this.changesByRevision={});for(var l=0,n=Array.from(this.changes);l<n.length;l++)t=n[l],this.changesBySSID[t.sourcestamp.ssid]=t,this.changesByRevision[t.revision]=t,this.populateChange(t);for(var r=0,a=Array.from(this.fakechanges);r<a.length;r++)t=a[r],this.populateChange(t);for(var o=0,d=Array.from(this.builds);o<d.length;o++)e=d[o],this.matchBuildWithChange(e);for(var u in this.filtered_changes=[],this.changesBySSID){(t=this.changesBySSID[u]).comments&&(t.subject=t.comments.split("\n")[0]);for(var c=0,h=Array.from(t.builders);c<h.length;c++){if(h[c].builds.length>0){this.filtered_changes.push(t);break}}}}sortBuildersByTags(e){for(var t,i,s=[],l="",n=0,r=Array.from(e);n<r.length;n++){var a=r[n];a.hasBuild&&(s.push(a),l+=".".concat(a.builderid))}if(l!==this.last_builderids_with_builds){for(var o={},d=0,u=Array.from(s);d<u.length;d++)if(null!=(t=u[d]).tags&&t.tags.length)for(var c=0,h=Array.from(t.tags);c<h.length;c++)null==o[i=h[c]]&&(o[i]=[]),o[i].push(t);else null==o[""]&&(o[""]=[]),o[""].push(t);var p=this;for(i in o)o[i].sort((e,t)=>p.strcompare(e.name,t.name));var g=[];for(i in o)""!=i&&g.push({name:o[i][0].name,tag:i,builders:o[i],colspan:o[i].length});for(t in o[""])g.push({name:o[""][t].name,tag:"",builders:[o[""][t]],colspan:1});g.sort((e,t)=>p.strcompare(e.name,t.name));var b=[];for(var m in g)for(t in g[m].builders)b.push(g[m].builders[t]);return this.builders=b,this.buildergroups=g,this.tag_lines=[],this.last_builderids_with_builds=l}}populateChange(e){e.builders=[],e.buildersById={};for(var t=0,i=Array.from(this.buildergroups);t<i.length;t++){for(var s=i[t],l={name:s.name,builds:[],builders:[],colspan:s.builders.length},n=0,r=Array.from(s.builders);n<r.length;n++){var a=r[n];l.builders.push(a),e.buildersById[a.builderid]=l}e.builders.push(l)}}matchBuildWithChange(e){var t,i,s=this.buildrequests.get(e.buildrequestid);if(null!=s){var l=this.buildsets.get(s.buildsetid);if(null!=l){if(null!=(null!=e.properties?e.properties.yp_build_revision:void 0)||this.revmapping[e.buildid]){i=null!=(null!=e.properties?e.properties.yp_build_revision:void 0)?e.properties.yp_build_revision[0]:this.revmapping[e.buildid],null==(t=this.changesByRevision[i])&&(t=this.changesBySSID[i]),null==t&&(t=this.makeFakeChange(i,e.started_at,i),this.fakechanges.push(t)),t.caption="Commit",null!=(null!=e.properties?e.properties.yp_build_branch:void 0)&&(t.caption=e.properties.yp_build_branch[0]),this.branchmapping[e.buildid]&&(t.caption=this.branchmapping[e.buildid]),t.revlink="http://git.yoctoproject.org/cgit.cgi/poky/commit/?id="+i,t.errorlink="http://errors.yoctoproject.org/Errors/Latest/?filter="+i+"&type=commit&limit=150";e.buildid;null!=l&&null!=l.parent_buildid&&l.parent_buildid,null!=(null!=e.properties?e.properties.reason:void 0)&&(t.reason=e.properties.reason[0]),null!=(null!=e.properties?e.properties.publish_destination:void 0)&&(t.publishurl=e.properties.publish_destination[0].replace("/srv/autobuilder/autobuilder.yoctoproject.org/","https://autobuilder.yocto.io/"),t.publishurl=t.publishurl.replace("/srv/autobuilder/autobuilder.yocto.io/","https://autobuilder.yocto.io/"))}else i="Unresolved Revision",null==t&&(t=this.changesBySSID[i]),null==t&&((t=this.makeFakeChange(i,e.started_at,i)).caption=i,this.fakechanges.push(t));t.buildersById[e.builderid].builds.push(e)}}}makeFakeChange(e,t,i){var s={revision:e,changeid:e,when_timestamp:t,comments:i};return this.changesBySSID[e]=s,this.populateChange(s),s}openAll(){return Array.from(this.filtered_changes).map(e=>e.show_details=!0)}closeAll(){return Array.from(this.filtered_changes).map(e=>e.show_details=!1)}getRowHeaderWidth(){return this.hasExpanded()?400:200}getColHeaderHeight(){for(var e=0,t=0,i=Array.from(this.builders);t<i.length;t++){var s=i[t];e=Math.max(s.name.length,e)}return Math.max(100,3*e)}isBigTable(){var e=this.getRowHeaderWidth();return(this.$window.innerWidth-e)/this.builders.length<40}hasExpanded(){for(var e=0,t=Array.from(this.changes);e<t.length;e++){var i=t[e];if(this.infoIsExpanded(i))return!0}return!1}selectBuild(e){return this.$uibModal.open({template:i(6),controller:"consoleModalController as modal",windowClass:"modal-big",resolve:{selectedBuild:()=>e}})}toggleInfo(e){return e.show_details=!e.show_details}infoIsExpanded(e){return e.show_details}}]),i(7),i(8),i(10)},function(t,i){t.exports=e},function(e,i){e.exports=t},function(e,t){e.exports=i},function(e,t){e.exports=s},function(e,t){e.exports=window.T["console_view/views/console.html"]||'<div class="console no-select"><div class="load-indicator" ng-hide="c.builds.$resolved && c.changes.$resolved && c.buildrequests.$resolved && c.buildsets.$resolved"><div class="spinner"><i class="fa fa-circle-o-notch fa-spin fa-2x"></i><p>loading</p></div></div><div ng-show="c.changes.$resolved && c.filtered_changes.length==0"><p>No changes. Console view needs changesource to be setup, and<a href="#changes">changes</a>to be in the system.</p></div><table class="table table-striped table-bordered" ng-hide="c.filtered_changes.length==0" ng-class="{\'table-fixedwidth\': c.isBigTable()}"><tr class="first-row"><th class="row-header" ng-style="{\'width\': c.getRowHeaderWidth()}"><i class="fa fa-plus-circle pull-left" ng-click="c.openAll()" uib-tooltip="Open information for all changes" uib-tooltip-placement="right"></i><i class="fa fa-minus-circle pull-left" ng-click="c.closeAll()" uib-tooltip="Close information for all changes" uib-tooltip-placement="right"></i></th><th class="column" ng-repeat="builder in c.builders"><span class="builder" ng-style="{\'margin-top\': c.getColHeaderHeight()}"><a ng-href="#/builders/{{ builder.builderid }}" ng-bind="builder.name"></a></span></th></tr><tr class="tag_row"><td class="row-header"></td><td ng-repeat="buildergroup in c.buildergroups" colspan="{{buildergroup.colspan}}" ng-style="{\'text-align\': \'center\'}">{{buildergroup.tag}}</td></tr><tr ng-repeat="change in c.filtered_changes | orderBy: [\'-when_timestamp\'] track by change.changeid"><td><yoctochangedetails change="change"></yoctochangedetails></td><td class="column" ng-repeat="builder in change.builders" title="{{builder.name}}" colspan="{{builder.colspan}}"><span ng-repeat="build in builder.builds | orderBy: [\'number\']"><script type="text/ng-template" id="buildsummarytooltip"><buildsummary buildid="build.buildid" type="tooltip"></buildsummary><\/script><span class="badge-status" ng-if="build.buildid" uib-tooltip-template="\'buildsummarytooltip\'" tooltip-class="buildsummarytooltipstyle" tooltip-placement="auto left-bottom" tooltip-popup-delay="400" tooltip-popup-close-delay="400" ng-class="c.results2class(build, \'pulse\')" ng-click="c.selectBuild(build)">{{ build.number }}</span></span></td></tr></table></div>'},function(e,t){e.exports=window.T["console_view/views/modal.html"]||'\x3c!-- Show build summary for the selected build in a modal window--\x3e<div class="modal-header"><i class="fa fa-times pull-right" ng-click="modal.close()"></i><h4 class="modal-title">Build summary</h4></div><div class="modal-body"><buildsummary ng-if="modal.selectedBuild" buildid="modal.selectedBuild.buildid"></buildsummary></div>'},function(e,t){angular.module("yocto_console_view").controller("consoleModalController",["$scope","$uibModalInstance","selectedBuild",class ConsoleModal{constructor(e,t,i){this.$uibModalInstance=t,this.selectedBuild=i,e.$on("$stateChangeStart",()=>this.close())}close(){return this.$uibModalInstance.close()}}])},function(e,t,i){angular.module("yocto_console_view").directive("releaseselectorfield",[class Releaseselectorfield{constructor(){return{replace:!1,restrict:"E",scope:!1,template:i(9),controller:"_ReleaseselectorfieldController"}}}]).controller("_ReleaseselectorfieldController",["$scope","$http",class _releaseselectorfield{constructor(e,t){for(var i=e;null!=i&&null==i.rootfield;)i=i.$parent;if(null!=i){var s={},l=e=>Array.from(e).map(e=>null!=e.fields?l(e.fields):s[e.fullName]=e);l(i.rootfield.fields),e.$watch("field.value",(function(t,i){var l=e.field.selectors[t];if(null!=l)return(()=>{var e=[];for(var t in l){var i=l[t];t in s&&e.push(s[t].value=i)}return e})()}))}else console.log("rootfield not found!?!?")}}])},function(e,t){e.exports=window.T["console_view/views/releaseselectorfield.html"]||'<basefield><label class="control-label col-sm-2" for="{{field.name}}">{{field.label}}</label><div class="col-sm-10"><select class="form-control" ng-model="field.value" ng-options="v for v in field.choices"></select></div></basefield>'},function(e,t,i){angular.module("yocto_console_view").directive("yoctochangedetails",[class Yoctochangedetails{constructor(){return{replace:!0,restrict:"E",scope:{change:"=",compact:"=?"},template:i(11)}}}])},function(e,t){e.exports=window.T["console_view/views/yoctochangedetails.html"]||'<div class="yoctochangedetails" style="width:100%;"><div style="width:100%;" ng-click="change.show_details = !change.show_details"><a ng-if="change.revlink" ng-href="{{change.revlink}}" uib-tooltip="{{change.comments}}">{{ change.caption }} </a><a ng-if="change.errorlink" ng-href="{{change.errorlink}}">{{ "Errors" }} </a><a ng-if="change.publishurl" ng-href="{{change.publishurl}}">{{ "Output" }} </a><span ng-if="!change.revlink" uib-tooltip="{{change.comments}}">{{ change.caption }} </span><span ng-if="!compact" uib-tooltip="{{change.when_timestamp | dateformat:\'LLL\'}}">({{ change.when_timestamp | timeago }}) </span><i class="fa fa-chevron-circle-right rotate clickable" ng-class="{\'fa-rotate-90\':change.show_details}"></i></div><div class="anim-changedetails" ng-show="change.show_details"><table class="table table-striped table-condensed" ng-show="change.show_details"><tr ng-show="change.reason"><td>Reason</td><td>{{ change.reason }}</td></tr><tr ng-show="change.author"><td>Author</td><td>{{ change.author }}</td></tr><tr><td>Date</td><td>{{ change.when_timestamp | dateformat:\'LLL\'}} ({{ change.when_timestamp | timeago }})</td></tr><tr ng-show="change.repository"><td>Repository</td><td>{{ change.repository }}</td></tr><tr ng-show="change.branch"><td>Branch</td><td>{{ change.branch }}</td></tr><tr><td>Revision</td><td> <a ng-if="change.revlink" ng-href="{{change.revlink}}"> {{ change.revision }}</a></td></tr></table><h5>Comment</h5><pre>{{ change.comments }}</pre><h5>Changed files</h5><ul><li ng-repeat="file in change.files">{{file}}</li></ul><p ng-hide="change.files.length">No files</p></div></div>'}])}));
|
|
//# sourceMappingURL=scripts.js.map
|