diff --git a/app/.jshintrc b/app/.jshintrc index 26b6a1f0..767b6edf 100644 --- a/app/.jshintrc +++ b/app/.jshintrc @@ -17,7 +17,8 @@ "Tooltip", "Drop", "Dropzone", - "dragula" + "dragula", + "datetimepicker" ], "browser": true, "boss": true, diff --git a/app/app/components/section/github/type-editor.js b/app/app/components/section/github/type-editor.js index b942d596..5db483c7 100644 --- a/app/app/components/section/github/type-editor.js +++ b/app/app/components/section/github/type-editor.js @@ -20,8 +20,12 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, busy: false, authenticated: false, config: {}, + owners: null, repos: null, noRepos: false, + showCommits: false, + showIssueNum: false, + showLabels: false, didReceiveAttrs() { let self = this; @@ -36,20 +40,30 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, clientId: cfg.clientID, callbackUrl: cfg.authorizationCallbackURL, token: "", + owner: null, + owner_name: "", repo: null, - lists: [], - owner: "", repo_name: "", + report: null, + lists: [], branch: "", branchURL: "", branchSince: "", - branchLines: 30 + branchLines: "30", + state: null, + issues: "", }; 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; } catch (e) {} self.set('config', config); @@ -78,13 +92,43 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, this.destroyTooltips(); }, - getRepoLists() { + getOwnerLists() { this.set('busy', true); let self = this; + let owners = this.get('owners'); + let thisOwner = this.get('config.owner'); + let page = this.get('page'); + + if (is.null(thisOwner) || is.undefined(thisOwner)) { + if (owners.length) { + thisOwner = owners[0]; + this.set('config.owner', thisOwner); + } + } else { + this.set('config.owner', owners.findBy('id', thisOwner.id)); + } + + this.set('owner', thisOwner); + + this.get('sectionService').fetch(page, "repos", self.get('config')) + .then(function(lists) { + self.set('busy', false); + self.set('repos', lists); + self.getRepoLists(); + }, function(error) { //jshint ignore: line + self.set('busy', false); + self.set('authenticated', false); + self.showNotification("Unable to fetch repositories"); + console.log(error); + }); + }, + + getRepoLists() { + this.set('busy', true); + let repos = this.get('repos'); let thisRepo = this.get('config.repo'); - let page = this.get('page'); if (is.null(repos) || is.undefined(repos) || repos.length === 0) { this.set('noRepos', true); @@ -93,7 +137,7 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, this.set('noRepos', false); - if (is.null(thisRepo) || is.undefined(thisRepo)) { + if (is.null(thisRepo) || is.undefined(thisRepo) || thisRepo.owner !== this.get('config.owner').name) { if (repos.length) { thisRepo = repos[0]; this.set('config.repo', thisRepo); @@ -102,21 +146,100 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, this.set('config.repo', repos.findBy('id', thisRepo.id)); } - this.get('sectionService').fetch(page, "lists", self.get('config')) + this.set('repo', thisRepo); + + this.getReportLists(); + }, + + + getReportLists() { + let reports = []; + reports[0] = { + id: "commits_data", // used as method for fetching Go data + name: "Commits on a branch" + }; + reports[1] = { + id: "issues_data", // used as method for fetching Go data + name: "Issues" + }; + + this.set("reports", reports); + + let thisReport = this.get('config.report'); + + if (is.null(thisReport) || is.undefined(thisReport)) { + thisReport = reports[0]; + this.set('config.report', thisReport); + } else { + this.set('config.report', reports.findBy('id', thisReport.id)); + } + + this.set('report', thisReport); + + this.renderSwitch(thisReport); + + }, + + renderSwitch(thisReport) { + + if (is.undefined(this.get('initDateTimePicker'))) { + $.datetimepicker.setLocale('en'); + $('#branch-since').datetimepicker(); + this.set('initDateTimePicker', "Done"); + } + + let bl = this.get('config.branchLines'); + if (is.undefined(bl) || bl === "" || bl <= 0) { + this.set('config.branchLines', "30"); + } + + this.set('showCommits', false); + this.set('showLabels', false); + switch (thisReport.id) { + case 'commits_data': + this.set('showCommits', true); + this.getBranchLists(); + break; + case "issues_data": + this.set('showLabels', true); + this.getLabelLists(); + break; + } + }, + + getBranchLists() { + this.set('busy', true); + + let self = this; + let page = this.get('page'); + + this.get('sectionService').fetch(page, "branches", self.get('config')) .then(function(lists) { let savedLists = self.get('config.lists'); if (savedLists === null) { savedLists = []; } - lists.forEach(function(list) { - let saved = savedLists.findBy("id", list.id); - let included = false; - if (is.not.undefined(saved)) { - included = saved.included; + if (lists.length > 0) { + let noIncluded = true; + + lists.forEach(function(list) { + let included = false; + var saved; + if (is.not.undefined(savedLists)) { + saved = savedLists.findBy("id", list.id); + } + if (is.not.undefined(saved)) { + included = saved.included; + noIncluded = false; + } + list.included = included; + }); + + if (noIncluded) { + lists[0].included = true; // make the first entry the default } - list.included = included; - }); + } self.set('config.lists', lists); self.set('busy', false); @@ -128,6 +251,70 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, }); }, + getLabelLists() { + this.set('busy', true); + + let self = this; + let page = this.get('page'); + + let states = []; + states[0] = { + id: "open", + name: "Show Open Issues" + }; + states[1] = { + id: "closed", + name: "Show Closed Issues" + }; + states[2] = { + id: "all", + name: "Show All Issues" + }; + + this.set("states", states); + + let thisState = this.get('config.state'); + + if (is.null(thisState) || is.undefined(thisState)) { + thisState = states[0]; + this.set('config.state', thisState); + } else { + this.set('config.state', states.findBy('id', thisState.id)); + } + + this.set('state', thisState); + + this.get('sectionService').fetch(page, "labels", self.get('config')) + .then(function(lists) { + let savedLists = self.get('config.lists'); + if (savedLists === null) { + savedLists = []; + } + + if (lists.length > 0) { + lists.forEach(function(list) { + var saved; + if (is.not.undefined(savedLists)) { + saved = savedLists.findBy("id", list.id); + } + let included = false; + if (is.not.undefined(saved)) { + included = saved.included; + } + list.included = included; + }); + } + + self.set('config.lists', lists); + self.set('busy', false); + }, function(error) { //jshint ignore: line + self.set('busy', false); + self.set('authenticated', false); + self.showNotification("Unable to fetch repository labels"); + console.log(error); + }); + }, + actions: { isDirty() { return this.get('isDirty'); @@ -147,21 +334,31 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, } }, + onLabelCheckbox(id) { + let lists = this.get('config.lists'); + let list = lists.findBy('id', id); + + if (list !== null) { + Ember.set(list, 'included', !list.included); + } + }, + + authStage2() { let self = this; self.set('authenticated', true); self.set('busy', true); let page = this.get('page'); - self.get('sectionService').fetch(page, "repos", self.get('config')) - .then(function(repos) { + self.get('sectionService').fetch(page, "owners", self.get('config')) + .then(function(owners) { self.set('busy', false); - self.set('repos', repos); - self.getRepoLists(); + self.set('owners', owners); + self.getOwnerLists(); }, function(error) { //jshint ignore: line self.set('busy', false); self.set('authenticated', false); - self.showNotification("Unable to fetch repos"); + self.showNotification("Unable to fetch owners"); console.log(error); }); @@ -179,6 +376,14 @@ 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(); + }, + onRepoChange(thisRepo) { this.set('isDirty', true); this.set('config.repo', thisRepo); @@ -186,6 +391,17 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, this.getRepoLists(); }, + onReportChange(thisReport) { + this.set('isDirty', true); + this.set('config.report', thisReport); + this.getReportLists(); + }, + + onStateChange(thisState) { + this.set('config.state', thisState); + }, + + onCancel() { this.attrs.onCancel(); }, @@ -193,6 +409,15 @@ 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'); @@ -201,7 +426,8 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, meta.set('config', JSON.stringify(this.get('config'))); meta.set('externalSource', true); - this.get('sectionService').fetch(page, "commits", this.get('config')) + let thisReport = this.get('config.report'); + this.get('sectionService').fetch(page, thisReport.id, this.get('config')) .then(function(response) { meta.set('rawBody', JSON.stringify(response)); self.set('busy', false); @@ -212,4 +438,4 @@ export default Ember.Component.extend(SectionMixin, NotifierMixin, TooltipMixin, }); } } -}); +}); \ No newline at end of file diff --git a/app/app/styles/section/github.scss b/app/app/styles/section/github.scss index f4889587..2404fcf9 100644 --- a/app/app/styles/section/github.scss +++ b/app/app/styles/section/github.scss @@ -26,26 +26,47 @@ .github-list-checkbox { vertical-align: text-bottom; } + + .github-issue-label { + font-size: 11px; + color: white; + padding: 0px 4px; + margin-right: 5px; + border-radius: 2px; + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.12); + display: inline-block; + line-height: 22px; + } } .section-github-render { + .github-issue-label { + font-size: 11px; + color: white; + padding: 0px 4px; + margin-right: 5px; + border-radius: 2px; + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.12); + display: inline-block; + line-height: 22px; + } + .github-board { width: 100%; - padding: 10px; white-space: nowrap; color: #767676; > .github-group-title { - margin-bottom: 10px; + margin: 10px 0; font-size: 14px; color: #767676; } > .github-list { - margin: 20px; + margin: 10px 20px 0 20px !important; padding: 0; color: #767676; - + > .github-commit-item { display: block; width: 95%; @@ -71,16 +92,22 @@ background-color: #f7fbfc; cursor: pointer; } - + > .link { color: #999; - + > .github-avatar { float: left; margin-right: 15px; margin-top: 2px; } + > .issue-avatar { + float: left; + margin-right: 15px; + margin-top: 10px; + } + > .github-commit-body { margin: 0px; padding: 0px; @@ -90,14 +117,20 @@ text-decoration: none; font-size: 13px; font-weight: 600; - line-height: 16px; - margin: 0px; + line-height: 22px; + margin: 0; padding: 0px; overflow: hidden; text-overflow: ellipsis; - width: 90%; + width: 90%; + + .label-name { + font-size: 16px; + font-family: "open_sanssemibold"; + margin: 0 10px 0 0; + } } - + > .github-commit-meta { font-weight: normal; color: #767676; @@ -105,7 +138,7 @@ line-height: 22px; margin: 0px; padding: 0px; - width: 90%; + width: 90%; } } } diff --git a/app/app/styles/vendor.scss b/app/app/styles/vendor.scss index 5439517b..75a90459 100644 --- a/app/app/styles/vendor.scss +++ b/app/app/styles/vendor.scss @@ -29,3 +29,574 @@ filter: alpha(opacity=20); } /* FINISH dragula.js */ + +/* START jquery.datetimepicker.full.min.js */ +.xdsoft_datetimepicker { + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506); + background: #fff; + border-bottom: 1px solid #bbb; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + border-top: 1px solid #ccc; + color: #333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 8px; + padding-left: 0; + padding-top: 2px; + position: absolute; + z-index: 9999; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; +} +.xdsoft_datetimepicker.xdsoft_rtl { + padding: 8px 0 8px 8px; +} + +.xdsoft_datetimepicker iframe { + position: absolute; + left: 0; + top: 0; + width: 75px; + height: 210px; + background: transparent; + border: none; +} + +/*For IE8 or lower*/ +.xdsoft_datetimepicker button { + border: none !important; +} + +.xdsoft_noselect { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.xdsoft_noselect::selection { background: transparent } +.xdsoft_noselect::-moz-selection { background: transparent } + +.xdsoft_datetimepicker.xdsoft_inline { + display: inline-block; + position: static; + box-shadow: none; +} + +.xdsoft_datetimepicker * { + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin: 0; +} + +.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker { + display: none; +} + +.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active { + display: block; +} + +.xdsoft_datetimepicker .xdsoft_datepicker { + width: 224px; + float: left; + margin-left: 8px; +} +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker { + float: right; + margin-right: 8px; + margin-left: 0; +} + +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker { + width: 256px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker { + width: 58px; + float: left; + text-align: center; + margin-left: 8px; + margin-top: 0; +} +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker { + float: right; + margin-right: 8px; + margin-left: 0; +} + +.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker { + margin-top: 8px; + margin-bottom: 3px +} + +.xdsoft_datetimepicker .xdsoft_monthpicker { + position: relative; + text-align: center; +} + +.xdsoft_datetimepicker .xdsoft_label i, +.xdsoft_datetimepicker .xdsoft_prev, +.xdsoft_datetimepicker .xdsoft_next, +.xdsoft_datetimepicker .xdsoft_today_button { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC); +} + +.xdsoft_datetimepicker .xdsoft_label i { + opacity: 0.5; + background-position: -92px -19px; + display: inline-block; + width: 9px; + height: 20px; + vertical-align: middle; +} + +.xdsoft_datetimepicker .xdsoft_prev { + float: left; + background-position: -20px 0; +} +.xdsoft_datetimepicker .xdsoft_today_button { + float: left; + background-position: -70px 0; + margin-left: 5px; +} + +.xdsoft_datetimepicker .xdsoft_next { + float: right; + background-position: 0 0; +} + +.xdsoft_datetimepicker .xdsoft_next, +.xdsoft_datetimepicker .xdsoft_prev , +.xdsoft_datetimepicker .xdsoft_today_button { + background-color: transparent; + background-repeat: no-repeat; + border: 0 none; + cursor: pointer; + display: block; + height: 30px; + opacity: 0.5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + outline: medium none; + overflow: hidden; + padding: 0; + position: relative; + text-indent: 100%; + white-space: nowrap; + width: 20px; + min-width: 0; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next { + float: none; + background-position: -40px -15px; + height: 15px; + width: 30px; + display: block; + margin-left: 14px; + margin-top: 7px; +} +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev, +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next { + float: none; + margin-left: 0; + margin-right: 14px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev { + background-position: -40px 0; + margin-bottom: 7px; + margin-top: 0; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box { + height: 151px; + overflow: hidden; + border-bottom: 1px solid #ddd; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div { + background: #f5f5f5; + border-top: 1px solid #ddd; + color: #666; + font-size: 12px; + text-align: center; + border-collapse: collapse; + cursor: pointer; + border-bottom-width: 0; + height: 25px; + line-height: 25px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child { + border-top-width: 0; +} + +.xdsoft_datetimepicker .xdsoft_today_button:hover, +.xdsoft_datetimepicker .xdsoft_next:hover, +.xdsoft_datetimepicker .xdsoft_prev:hover { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; +} + +.xdsoft_datetimepicker .xdsoft_label { + display: inline; + position: relative; + z-index: 9999; + margin: 0; + padding: 5px 3px; + font-size: 14px; + line-height: 20px; + font-weight: bold; + background-color: #fff; + float: left; + width: 182px; + text-align: center; + cursor: pointer; +} + +.xdsoft_datetimepicker .xdsoft_label:hover>span { + text-decoration: underline; +} + +.xdsoft_datetimepicker .xdsoft_label:hover i { + opacity: 1.0; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select { + border: 1px solid #ccc; + position: absolute; + right: 0; + top: 30px; + z-index: 101; + display: none; + background: #fff; + max-height: 160px; + overflow-y: hidden; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px } +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px } +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { + color: #fff; + background: #ff8000; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option { + padding: 2px 10px 2px 5px; + text-decoration: none !important; +} + +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { + background: #33aaff; + box-shadow: #178fe5 0 1px 3px 0 inset; + color: #fff; + font-weight: 700; +} + +.xdsoft_datetimepicker .xdsoft_month { + width: 100px; + text-align: right; +} + +.xdsoft_datetimepicker .xdsoft_calendar { + clear: both; +} + +.xdsoft_datetimepicker .xdsoft_year{ + width: 48px; + margin-left: 5px; +} + +.xdsoft_datetimepicker .xdsoft_calendar table { + border-collapse: collapse; + width: 100%; + +} + +.xdsoft_datetimepicker .xdsoft_calendar td > div { + padding-right: 5px; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + height: 25px; +} + +.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th { + width: 14.2857142%; + background: #f5f5f5; + border: 1px solid #ddd; + color: #666; + font-size: 12px; + text-align: right; + vertical-align: middle; + padding: 0; + border-collapse: collapse; + cursor: pointer; + height: 25px; +} +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th { + width: 12.5%; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + background: #f1f1f1; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today { + color: #33aaff; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default { + background: #ffe9d2; + box-shadow: #ffb871 0 1px 4px 0 inset; + color: #000; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint { + background: #c1ffc9; + box-shadow: #00dd1c 0 1px 4px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { + background: #33aaff; + box-shadow: #178fe5 0 1px 3px 0 inset; + color: #fff; + font-weight: 700; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, +.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled { + opacity: 0.5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + cursor: default; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled { + opacity: 0.2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; +} + +.xdsoft_datetimepicker .xdsoft_calendar td:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover { + color: #fff !important; + background: #ff8000 !important; + box-shadow: none !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover { + background: #33aaff !important; + box-shadow: #178fe5 0 1px 3px 0 inset !important; + color: #fff !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover { + color: inherit !important; + background: inherit !important; + box-shadow: inherit !important; +} + +.xdsoft_datetimepicker .xdsoft_calendar th { + font-weight: 700; + text-align: center; + color: #999; + cursor: default; +} + +.xdsoft_datetimepicker .xdsoft_copyright { + color: #ccc !important; + font-size: 10px; + clear: both; + float: none; + margin-left: 8px; +} + +.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important } +.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important } + +.xdsoft_time_box { + position: relative; + border: 1px solid #ccc; +} +.xdsoft_scrollbar >.xdsoft_scroller { + background: #ccc !important; + height: 20px; + border-radius: 3px; +} +.xdsoft_scrollbar { + position: absolute; + width: 7px; + right: 0; + top: 0; + bottom: 0; + cursor: pointer; +} +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar { + left: 0; + right: auto; +} +.xdsoft_scroller_box { + position: relative; +} + +.xdsoft_datetimepicker.xdsoft_dark { + box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); + background: #000; + border-bottom: 1px solid #444; + border-left: 1px solid #333; + border-right: 1px solid #333; + border-top: 1px solid #333; + color: #ccc; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box { + border-bottom: 1px solid #222; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div { + background: #0a0a0a; + border-top: 1px solid #222; + color: #999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label { + background-color: #000; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select { + border: 1px solid #333; + background: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover { + color: #000; + background: #007fff; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current { + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + background: #0a0a0a; + border: 1px solid #222; + color: #999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + background: #0e0e0e; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today { + color: #cc5500; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default { + background: #ffe9d2; + box-shadow: #ffb871 0 1px 4px 0 inset; + color:#000; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint { + background: #c1ffc9; + box-shadow: #00dd1c 0 1px 4px 0 inset; + color:#000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current { + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color: #000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover { + color: #000 !important; + background: #007fff !important; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th { + color: #666; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important } +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important } +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important } + +.xdsoft_dark .xdsoft_time_box { + border: 1px solid #333; +} + +.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller { + background: #333 !important; +} +.xdsoft_datetimepicker .xdsoft_save_selected { + display: block; + border: 1px solid #dddddd !important; + margin-top: 5px; + width: 100%; + color: #454551; + font-size: 13px; +} +.xdsoft_datetimepicker .blue-gradient-button { + font-family: "museo-sans", "Book Antiqua", sans-serif; + font-size: 12px; + font-weight: 300; + color: #82878c; + height: 28px; + position: relative; + padding: 4px 17px 4px 33px; + border: 1px solid #d7d8da; + background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%); + /* IE10+ */ + background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 ); +/* IE6-9 */ +} +.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span { + color: #454551; + background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%); + /* IE10+ */ + background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 ); + /* IE6-9 */ +} +/* FINISH jquery.datetimepicker.full.min.js */ \ No newline at end of file diff --git a/app/app/templates/components/section/github/type-editor.hbs b/app/app/templates/components/section/github/type-editor.hbs index aee0a497..28ac93e7 100644 --- a/app/app/templates/components/section/github/type-editor.hbs +++ b/app/app/templates/components/section/github/type-editor.hbs @@ -1,18 +1,19 @@ - - -{{#section/base-editor document=document folder=folder page=page busy=busy - tip="GitHub is how people build software. (https://github.com)" - isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}} +{{#section/base-editor document=document folder=folder page=page busy=busy tip="GitHub is how people build software. (https://github.com)" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
"),t=0;7>t;t+=1)g+=" | "+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+" | ";for(g+="
---|---|
"+f+" | ")),g+=''+d+" | ",p.getDay()===C.dayOfWeekStartPrev&&(g+="
There are {{ .CommitCount }} commits for branch {{.Config.Branch}} of repository {{.Repo.Name}}.
++ There are {{ .CommitCount }} commits for branch {{.Config.Branch}} of repository {{.Repo.Name}}. + Up to {{ .Limit }} items are shown{{ .DateMessage }}. +
+ {{if .ShowIssueNumbers}} + Show Selected Issues + {{else}} + {{ .Config.IssueState.Name }} + {{end}} + for repository {{.Repo.Name}} + {{if .ShowList}} + with label(s) + {{range $label := .List}} + {{if $label.Included}} + {{$label.Name}} + {{end}} + {{end}} + {{end}}; + {{if .ShowIssueNumbers}} + issue(s) {{ .DateMessage }}. + {{else}} + up to {{ .Limit }} items are shown{{ .DateMessage }}. + {{end}} +
++ Activity for issue #{{.IssueNum}} in repository {{.Repo.Name}}. + Up to {{ .Limit }} items are shown{{ .DateMessage }}. +
+