diff --git a/app/app/components/section/github/type-editor.js b/app/app/components/section/github/type-editor.js index 4a0aeefd..e73003c2 100644 --- a/app/app/components/section/github/type-editor.js +++ b/app/app/components/section/github/type-editor.js @@ -21,11 +21,6 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, authenticated: false, config: {}, owners: null, - repos: null, - noRepos: false, - showCommits: false, - showIssueNum: false, - showLabels: false, didReceiveAttrs() { let self = this; @@ -41,16 +36,9 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, callbackUrl: cfg.authorizationCallbackURL, owner: null, owner_name: "", - repo: null, - repo_name: "", - report: null, lists: [], - branch: "", - branchURL: "", branchSince: "", - branchLines: "30", - state: null, - issues: "", + branchLines: "100", userId: "", pageId: page.get('id'), }; @@ -58,13 +46,8 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, try { let metaConfig = JSON.parse(self.get('meta.config')); config.owner = metaConfig.owner; - config.repo = metaConfig.repo; - config.report = metaConfig.report; config.lists = metaConfig.lists; config.branchSince = metaConfig.branchSince; - config.branchLines = metaConfig.branchLines; - config.state = metaConfig.state; - config.issues = metaConfig.issues; config.userId = metaConfig.userId; config.pageId = metaConfig.pageId; } catch (e) {} @@ -175,7 +158,7 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, }, function (error) { //jshint ignore: line self.set('busy', false); self.set('authenticated', false); - self.showNotification("Unable to fetch repository branches"); + self.showNotification("Unable to fetch repositories"); console.log(error); }); }, @@ -229,7 +212,6 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, onOwnerChange(thisOwner) { this.set('isDirty', true); this.set('config.owner', thisOwner); - this.set('config.repos', []); this.set('config.lists', []); this.getOwnerLists(); }, @@ -245,15 +227,6 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, onAction(title) { this.set('busy', true); - let thisLines = this.get('config.branchLines'); - if (is.undefined(thisLines) || thisLines === "") { - this.set('config.branchLines', 30); - } else if (thisLines < 1) { - this.set('config.branchLines', 1); - } else if (thisLines > 100) { - this.set('config.branchLines', 100); - } - let self = this; let page = this.get('page'); let meta = this.get('meta'); @@ -262,8 +235,7 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, meta.set('config', JSON.stringify(this.get('config'))); meta.set('externalSource', true); - let thisReport = this.get('config.report'); - this.get('sectionService').fetch(page, thisReport.id, this.get('config')) + this.get('sectionService').fetch(page, 'content', this.get('config')) .then(function (response) { meta.set('rawBody', JSON.stringify(response)); self.set('busy', false); diff --git a/app/app/templates/components/section/github/type-editor.hbs b/app/app/templates/components/section/github/type-editor.hbs index 2fc44c6b..76d781c6 100644 --- a/app/app/templates/components/section/github/type-editor.hbs +++ b/app/app/templates/components/section/github/type-editor.hbs @@ -15,16 +15,10 @@
Select organization or username whose repositories you want to show
{{ui-select id="owners-dropdown" content=owners action=(action 'onOwnerChange') optionValuePath="id" optionLabelPath="name" selection=config.owner}} - {{#if noRepos}} -
-
You have no repositories.
-
- {{else}} -
- - {{input id="branch-since" value=config.branchSince type="text" }}
-
- {{/if}} +
+ + {{input id="branch-since" value=config.branchSince type="text" }}
+
diff --git a/core/section/github/commits.go b/core/section/github/commits.go index 20a5aacf..f91cb871 100644 --- a/core/section/github/commits.go +++ b/core/section/github/commits.go @@ -258,7 +258,7 @@ func getCommits(client *gogithub.Client, config *githubConfig) ([]githubCommit, sort.Strings(v.Repos) retStats = append(retStats, v) } - sort.Stable(asToSort(retStats)) + sort.Sort(asToSort(retStats)) return overall, retStats, nil @@ -302,7 +302,7 @@ func renderCommits(payload *githubRender, c *githubConfig) error { } } payload.HasAuthorStats = len(payload.AuthorStats) > 0 - sort.Stable(asToSort(payload.AuthorStats)) + sort.Sort(asToSort(payload.AuthorStats)) return nil } diff --git a/core/section/github/github.go b/core/section/github/github.go index 6c249c65..b3c02e73 100644 --- a/core/section/github/github.go +++ b/core/section/github/github.go @@ -18,9 +18,12 @@ import ( "html/template" "io/ioutil" "net/http" + "strings" "github.com/documize/community/core/log" "github.com/documize/community/core/section/provider" + + gogithub "github.com/google/go-github/github" ) // TODO find a smaller image than the one below @@ -157,13 +160,9 @@ func (p *Provider) Refresh(ctx *provider.Context, configJSON, data string) strin c.Clean() c.Token = ctx.GetSecrets("token") - var gr = githubRender{} client := p.githubClient(&c) - for _, rep := range reports { - log.IfErr(rep.refresh(&gr, &c, client)) - } - byts, err := json.Marshal(&gr) + byts, err := json.Marshal(refreshReportData(&c, client)) if err != nil { log.Error("unable to marshall github data", err) return "internal configuration error '" + err.Error() + "'" @@ -173,6 +172,14 @@ func (p *Provider) Refresh(ctx *provider.Context, configJSON, data string) strin } +func refreshReportData(c *githubConfig, client *gogithub.Client) *githubRender { + var gr = githubRender{} + for _, rep := range reports { + log.IfErr(rep.refresh(&gr, c, client)) + } + return &gr +} + // Render ... just returns the data given, suitably formatted func (p *Provider) Render(ctx *provider.Context, config, data string) string { var err error @@ -190,15 +197,20 @@ func (p *Provider) Render(ctx *provider.Context, config, data string) string { c.Clean() c.Token = ctx.GetSecrets("token") - err = json.Unmarshal([]byte(data), &payload) + data = strings.TrimSpace(data) + if len(data) == 0 { + // TODO review why this error occurs & if it should be reported - seems to occur for new sections + // log.ErrorString(fmt.Sprintf("Rendered empty github JSON payload as '' for owner %s repos %#v", c.Owner, c.Lists)) + return "" + } + err = json.Unmarshal([]byte(data), &payload) if err != nil { log.Error("unable to unmarshall github data", err) return "Please delete and recreate this Github section." } payload.Config = c - payload.Repo = c.RepoInfo payload.Limit = c.BranchLines payload.List = c.Lists diff --git a/core/section/github/issues.go b/core/section/github/issues.go index 8da0fbaf..14e4d474 100644 --- a/core/section/github/issues.go +++ b/core/section/github/issues.go @@ -168,7 +168,7 @@ func getIssues(client *gogithub.Client, config *githubConfig) ([]githubIssue, er } - sort.Stable(issuesToSort(ret)) + sort.Sort(issuesToSort(ret)) return ret, nil @@ -212,7 +212,7 @@ func refreshIssues(gr *githubRender, config *githubConfig, client *gogithub.Clie gr.SharedLabels = append(gr.SharedLabels, thisLab) } } - sort.Stable(sharedLabelsSort(gr.SharedLabels)) + sort.Sort(sharedLabelsSort(gr.SharedLabels)) gr.HasSharedLabels = len(gr.SharedLabels) > 0 return nil diff --git a/core/section/github/lists.go b/core/section/github/lists.go index 5720cde0..a69f7a96 100644 --- a/core/section/github/lists.go +++ b/core/section/github/lists.go @@ -52,7 +52,6 @@ func listFailed(method string, config githubConfig, client *gogithub.Client, w h provider.WriteJSON(w, owners) - case "orgrepos": var render []githubBranch @@ -96,6 +95,9 @@ func listFailed(method string, config githubConfig, client *gogithub.Client, w h provider.WriteJSON(w, render) + case "content": + + provider.WriteJSON(w, refreshReportData(&config, client)) default: return true // failed to get a list diff --git a/core/section/github/milestones.go b/core/section/github/milestones.go index 9045b82f..7f03f3bf 100644 --- a/core/section/github/milestones.go +++ b/core/section/github/milestones.go @@ -201,7 +201,7 @@ func renderMilestones(payload *githubRender, c *githubConfig) error { } } - sort.Stable(milestonesToSort(payload.Milestones)) + sort.Sort(milestonesToSort(payload.Milestones)) return nil } diff --git a/core/section/github/model.go b/core/section/github/model.go index 2f236ebe..b9a680fd 100644 --- a/core/section/github/model.go +++ b/core/section/github/model.go @@ -23,7 +23,6 @@ import ( type githubRender struct { Config githubConfig `json:"config"` - Repo githubRepo `json:"repo"` List []githubBranch `json:"list"` ShowList bool `json:"showList"` ShowIssueNumbers bool `json:"showIssueNumbers"` @@ -55,26 +54,11 @@ type report struct { var reports = make(map[string]report) -type githubReport struct { - ID string `json:"id"` - Name string `json:"name"` -} - type githubOwner struct { ID string `json:"id"` Name string `json:"name"` } -type githubRepo struct { - ID string `json:"id"` - Name string `json:"name"` - Included bool `json:"included"` - Owner string `json:"owner"` - Repo string `json:"repo"` - Private bool `json:"private"` - URL string `json:"url"` -} - type githubBranch struct { ID string `json:"id"` Owner string `json:"owner"` @@ -102,35 +86,20 @@ type githubConfig struct { UserID string `json:"userId"` PageID string `json:"pageId"` Owner string `json:"owner_name"` - Repo string `json:"repo_name"` - Branch string `json:"branch"` - BranchURL string `json:"branchURL"` BranchSince string `json:"branchSince,omitempty"` SincePtr *time.Time `json:"-"` - Since string `json:"since"` + Since string `json:"-"` BranchLines int `json:"branchLines,omitempty,string"` OwnerInfo githubOwner `json:"owner"` - RepoInfo githubRepo `json:"repo"` - ReportInfo githubReport `json:"report"` ClientID string `json:"clientId"` CallbackURL string `json:"callbackUrl"` Lists []githubBranch `json:"lists,omitempty"` - IssueState githubReport `json:"state,omitempty"` - IssuesText string `json:"issues,omitempty"` - ReportOrder []string `json:"reportOrder,omitempty"` - DateMessage string `json:"dateMessage,omitempty"` + ReportOrder []string `json:"-"` + DateMessage string `json:"-"` } func (c *githubConfig) Clean() { c.Owner = c.OwnerInfo.Name - c.Repo = c.RepoInfo.Repo - for _, l := range c.Lists { - if l.Included { - c.Branch = l.Name - c.BranchURL = l.URL - break - } - } if len(c.BranchSince) >= len("yyyy/mm/dd hh:ss") { var since time.Time tt := []byte("yyyy-mm-ddThh:mm:00Z") @@ -154,9 +123,9 @@ func (c *githubConfig) Clean() { c.Since = (*c.SincePtr).Format(issuesTimeFormat) c.ReportOrder = []string{tagSummaryData, tagMilestonesData, tagIssuesData, tagCommitsData} - c.BranchLines = 100 // overide js default of 30 with maximum allowable in one call + c.BranchLines = 100 // overide any existing value with maximum allowable in one call - sort.Stable(branchesToSort(c.Lists)) // get the configured branches in a sensible order for printing + sort.Sort(branchesToSort(c.Lists)) // get the configured branches in a sensible order for display lastItem := 0 for i := range c.Lists { diff --git a/core/section/github/sort.go b/core/section/github/sort.go index 55f08d9e..ab5f88a9 100644 --- a/core/section/github/sort.go +++ b/core/section/github/sort.go @@ -13,21 +13,6 @@ package github import "sort" -// sort repos in order that that should be presented. -type reposToSort []githubRepo - -func (s reposToSort) Len() int { return len(s) } -func (s reposToSort) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s reposToSort) Less(i, j int) bool { - return s[i].Name < s[j].Name -} - -func sortRepos(in []githubRepo) []githubRepo { - sts := reposToSort(in) - sort.Sort(sts) - return []githubRepo(sts) -} - // sort owners in order that that should be presented. type ownersToSort []githubOwner