@ -1,152 +1,3 @@
< template >
< div >
< div v-if ="!isOrganization" class="ui two item menu" >
< a : class = "{item: true, active: tab === 'repos'}" @click ="changeTab('repos')" > {{ textRepository }} < / a >
< a : class = "{item: true, active: tab === 'organizations'}" @click ="changeTab('organizations')" > {{ textOrganization }} < / a >
< / div >
< div v-show ="tab === 'repos'" class="ui tab active list dashboard-repos" >
< h4 class = "ui top attached header gt-df gt-ac" >
< div class = "gt-f1 gt-df gt-ac" >
{ { textMyRepos } }
< span class = "ui grey label gt-ml-3" > { { reposTotalCount } } < / span >
< / div >
< a class = "gt-df gt-ac muted" : href = "subUrl + '/repo/create' + (isOrganization ? '?org=' + organizationId : '')" :data-tooltip-content ="textNewRepo" >
< svg -icon name = "octicon-plus" / >
< / a >
< / h4 >
< div class = "ui attached segment repos-search" >
< div class = "ui fluid action left icon input" : class = "{loading: isLoading}" >
< input type = "search" spellcheck = "false" maxlength = "255" @input ="changeReposFilter(reposFilter)" v-model ="searchQuery" ref="search" @keydown="reposFilterKeyControl" :placeholder ="textSearchRepos" >
< i class = "icon" > < svg -icon name = "octicon-search" :size ="16" / > < / i >
< div class = "ui dropdown icon button" :title ="textFilter" >
< svg -icon name = "octicon-filter" :size ="16" / >
< div class = "menu" >
< a class = "item" @click ="toggleArchivedFilter()" >
< div class = "ui checkbox" ref = "checkboxArchivedFilter" :title ="checkboxArchivedFilterTitle" >
<!-- the "hidden" is necessary to make the checkbox work without Fomantic UI js ,
otherwise if the "input" handles click event for intermediate status , it breaks the internal state -- >
< input type = "checkbox" class = "hidden" v -bind .prop = " checkboxArchivedFilterProps " >
< label >
< svg -icon name = "octicon-archive" :size ="16" class -name = " gt -mr -2 " / >
{ { textShowArchived } }
< / label >
< / div >
< / a >
< a class = "item" @click ="togglePrivateFilter()" >
< div class = "ui checkbox" ref = "checkboxPrivateFilter" :title ="checkboxPrivateFilterTitle" >
< input type = "checkbox" class = "hidden" v -bind .prop = " checkboxPrivateFilterProps " >
< label >
< svg -icon name = "octicon-lock" :size ="16" class -name = " gt -mr -2 " / >
{ { textShowPrivate } }
< / label >
< / div >
< / a >
< / div >
< / div >
< / div >
< div class = "ui secondary tiny pointing borderless menu center grid repos-filter" >
< a class = "item" : class = "{active: reposFilter === 'all'}" @click ="changeReposFilter('all')" >
{ { textAll } }
< div v-show ="reposFilter === 'all'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'sources'}" @click ="changeReposFilter('sources')" >
{ { textSources } }
< div v-show ="reposFilter === 'sources'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'forks'}" @click ="changeReposFilter('forks')" >
{ { textForks } }
< div v-show ="reposFilter === 'forks'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'mirrors'}" @click ="changeReposFilter('mirrors')" v-if ="isMirrorsEnabled" >
{ { textMirrors } }
< div v-show ="reposFilter === 'mirrors'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'collaborative'}" @click ="changeReposFilter('collaborative')" >
{ { textCollaborative } }
< div v-show ="reposFilter === 'collaborative'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< / div >
< / div >
< div v-if ="repos.length" class="ui attached table segment gt-rounded-bottom" >
< ul class = "repo-owner-name-list" >
< li class = "gt-df gt-ac gt-py-3" v-for ="repo, index in repos" :class="{'active': index === activeIndex}" :key="repo.id" >
< a class = "repo-list-link muted" :href ="repo.link" >
< svg -icon :name ="repoIcon(repo)" :size ="16" class -name = " repo -list -icon " / >
< div class = "text truncate" > { { repo . full _name } } < / div >
< div v-if ="repo.archived" >
< svg -icon name = "octicon-archive" :size ="16" / >
< / div >
< / a >
< a class = "gt-df gt-ac" v-if ="repo.latest_commit_status_state" :href="repo.latest_commit_status_state_link" :data-tooltip-content="repo.locale_latest_commit_status_state" >
<!-- the commit status icon logic is taken from templates / repo / commit _status . tmpl -- >
< svg -icon :name ="statusIcon(repo.latest_commit_status_state)" : class -name = " ' gt -ml -3 commit -status icon text ' + statusColor ( repo.latest_commit_status_state ) " :size ="16" / >
< / a >
< / li >
< / ul >
< div v-if ="showMoreReposLink" class="center gt-py-3 gt-border-secondary-top" >
< div class = "ui borderless pagination menu narrow" >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === 1}"
@ click = "changePage(1)" : title = "textFirstPage"
>
< svg -icon name = "gitea-double-chevron-left" :size ="16" class -name = " gt -mr -2 " / >
< / a >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === 1}"
@ click = "changePage(page - 1)" : title = "textPreviousPage"
>
< svg -icon name = "octicon-chevron-left" :size ="16" clsas -name = " gt -mr -2 " / >
< / a >
< a class = "active item gt-py-2" > { { page } } < / a >
< a
class = "item navigation" : class = "{'disabled': page === finalPage}"
@ click = "changePage(page + 1)" : title = "textNextPage"
>
< svg -icon name = "octicon-chevron-right" :size ="16" class -name = " gt -ml -2 " / >
< / a >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === finalPage}"
@ click = "changePage(finalPage)" : title = "textLastPage"
>
< svg -icon name = "gitea-double-chevron-right" :size ="16" class -name = " gt -ml -2 " / >
< / a >
< / div >
< / div >
< / div >
< / div >
< div v-if ="!isOrganization" v-show="tab === 'organizations'" class="ui tab active list dashboard-orgs" >
< h4 class = "ui top attached header gt-df gt-ac" >
< div class = "gt-f1 gt-df gt-ac" >
{ { textMyOrgs } }
< span class = "ui grey label gt-ml-3" > { { organizationsTotalCount } } < / span >
< / div >
< a class = "gt-df gt-ac muted" v-if ="canCreateOrganization" :href="subUrl + '/org/create'" :data-tooltip-content="textNewOrg" >
< svg -icon name = "octicon-plus" / >
< / a >
< / h4 >
< div v-if ="organizations.length" class="ui attached table segment gt-rounded-bottom" >
< ul class = "repo-owner-name-list" >
< li class = "gt-df gt-ac gt-py-3" v-for ="org in organizations" :key="org.name" >
< a class = "repo-list-link muted" : href = "subUrl + '/' + encodeURIComponent(org.name)" >
< svg -icon name = "octicon-organization" :size ="16" class -name = " repo -list -icon " / >
< div class = "text truncate" > { { org . name } } < / div >
< div > <!-- div to prevent underline of label on hover -- >
< span class = "ui tiny basic label" v-if ="org.org_visibility !== 'public'" >
{ { org . org _visibility === 'limited' ? textOrgVisibilityLimited : textOrgVisibilityPrivate } }
< / span >
< / div >
< / a >
< div class = "text light grey gt-df gt-ac gt-ml-3" >
{ { org . num _repos } }
< svg -icon name = "octicon-repo" :size ="16" class -name = " gt -ml -2 gt -mt -1 " / >
< / div >
< / li >
< / ul >
< / div >
< / div >
< / div >
< / template >
< script >
import { createApp , nextTick } from 'vue' ;
import $ from 'jquery' ;
@ -485,8 +336,155 @@ export function initDashboardRepoList() {
}
export default sfc ; / / a c t i v a t e t h e I D E ' s V u e p l u g i n
< / script >
< template >
< div >
< div v-if ="!isOrganization" class="ui two item menu" >
< a : class = "{item: true, active: tab === 'repos'}" @click ="changeTab('repos')" > {{ textRepository }} < / a >
< a : class = "{item: true, active: tab === 'organizations'}" @click ="changeTab('organizations')" > {{ textOrganization }} < / a >
< / div >
< div v-show ="tab === 'repos'" class="ui tab active list dashboard-repos" >
< h4 class = "ui top attached header gt-df gt-ac" >
< div class = "gt-f1 gt-df gt-ac" >
{ { textMyRepos } }
< span class = "ui grey label gt-ml-3" > { { reposTotalCount } } < / span >
< / div >
< a class = "gt-df gt-ac muted" : href = "subUrl + '/repo/create' + (isOrganization ? '?org=' + organizationId : '')" :data-tooltip-content ="textNewRepo" >
< svg -icon name = "octicon-plus" / >
< / a >
< / h4 >
< div class = "ui attached segment repos-search" >
< div class = "ui fluid action left icon input" : class = "{loading: isLoading}" >
< input type = "search" spellcheck = "false" maxlength = "255" @input ="changeReposFilter(reposFilter)" v-model ="searchQuery" ref="search" @keydown="reposFilterKeyControl" :placeholder ="textSearchRepos" >
< i class = "icon" > < svg -icon name = "octicon-search" :size ="16" / > < / i >
< div class = "ui dropdown icon button" :title ="textFilter" >
< svg -icon name = "octicon-filter" :size ="16" / >
< div class = "menu" >
< a class = "item" @click ="toggleArchivedFilter()" >
< div class = "ui checkbox" ref = "checkboxArchivedFilter" :title ="checkboxArchivedFilterTitle" >
<!-- the "hidden" is necessary to make the checkbox work without Fomantic UI js ,
otherwise if the "input" handles click event for intermediate status , it breaks the internal state -- >
< input type = "checkbox" class = "hidden" v -bind .prop = " checkboxArchivedFilterProps " >
< label >
< svg -icon name = "octicon-archive" :size ="16" class -name = " gt -mr -2 " / >
{ { textShowArchived } }
< / label >
< / div >
< / a >
< a class = "item" @click ="togglePrivateFilter()" >
< div class = "ui checkbox" ref = "checkboxPrivateFilter" :title ="checkboxPrivateFilterTitle" >
< input type = "checkbox" class = "hidden" v -bind .prop = " checkboxPrivateFilterProps " >
< label >
< svg -icon name = "octicon-lock" :size ="16" class -name = " gt -mr -2 " / >
{ { textShowPrivate } }
< / label >
< / div >
< / a >
< / div >
< / div >
< / div >
< div class = "ui secondary tiny pointing borderless menu center grid repos-filter" >
< a class = "item" : class = "{active: reposFilter === 'all'}" @click ="changeReposFilter('all')" >
{ { textAll } }
< div v-show ="reposFilter === 'all'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'sources'}" @click ="changeReposFilter('sources')" >
{ { textSources } }
< div v-show ="reposFilter === 'sources'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'forks'}" @click ="changeReposFilter('forks')" >
{ { textForks } }
< div v-show ="reposFilter === 'forks'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'mirrors'}" @click ="changeReposFilter('mirrors')" v-if ="isMirrorsEnabled" >
{ { textMirrors } }
< div v-show ="reposFilter === 'mirrors'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< a class = "item" : class = "{active: reposFilter === 'collaborative'}" @click ="changeReposFilter('collaborative')" >
{ { textCollaborative } }
< div v-show ="reposFilter === 'collaborative'" class="ui circular mini grey label" > {{ repoTypeCount }} < / div >
< / a >
< / div >
< / div >
< div v-if ="repos.length" class="ui attached table segment gt-rounded-bottom" >
< ul class = "repo-owner-name-list" >
< li class = "gt-df gt-ac gt-py-3" v-for ="repo, index in repos" :class="{'active': index === activeIndex}" :key="repo.id" >
< a class = "repo-list-link muted" :href ="repo.link" >
< svg -icon :name ="repoIcon(repo)" :size ="16" class -name = " repo -list -icon " / >
< div class = "text truncate" > { { repo . full _name } } < / div >
< div v-if ="repo.archived" >
< svg -icon name = "octicon-archive" :size ="16" / >
< / div >
< / a >
< a class = "gt-df gt-ac" v-if ="repo.latest_commit_status_state" :href="repo.latest_commit_status_state_link" :data-tooltip-content="repo.locale_latest_commit_status_state" >
<!-- the commit status icon logic is taken from templates / repo / commit _status . tmpl -- >
< svg -icon :name ="statusIcon(repo.latest_commit_status_state)" : class -name = " ' gt -ml -3 commit -status icon text ' + statusColor ( repo.latest_commit_status_state ) " :size ="16" / >
< / a >
< / li >
< / ul >
< div v-if ="showMoreReposLink" class="center gt-py-3 gt-border-secondary-top" >
< div class = "ui borderless pagination menu narrow" >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === 1}"
@ click = "changePage(1)" : title = "textFirstPage"
>
< svg -icon name = "gitea-double-chevron-left" :size ="16" class -name = " gt -mr -2 " / >
< / a >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === 1}"
@ click = "changePage(page - 1)" : title = "textPreviousPage"
>
< svg -icon name = "octicon-chevron-left" :size ="16" clsas -name = " gt -mr -2 " / >
< / a >
< a class = "active item gt-py-2" > { { page } } < / a >
< a
class = "item navigation" : class = "{'disabled': page === finalPage}"
@ click = "changePage(page + 1)" : title = "textNextPage"
>
< svg -icon name = "octicon-chevron-right" :size ="16" class -name = " gt -ml -2 " / >
< / a >
< a
class = "item navigation gt-py-2" : class = "{'disabled': page === finalPage}"
@ click = "changePage(finalPage)" : title = "textLastPage"
>
< svg -icon name = "gitea-double-chevron-right" :size ="16" class -name = " gt -ml -2 " / >
< / a >
< / div >
< / div >
< / div >
< / div >
< div v-if ="!isOrganization" v-show="tab === 'organizations'" class="ui tab active list dashboard-orgs" >
< h4 class = "ui top attached header gt-df gt-ac" >
< div class = "gt-f1 gt-df gt-ac" >
{ { textMyOrgs } }
< span class = "ui grey label gt-ml-3" > { { organizationsTotalCount } } < / span >
< / div >
< a class = "gt-df gt-ac muted" v-if ="canCreateOrganization" :href="subUrl + '/org/create'" :data-tooltip-content="textNewOrg" >
< svg -icon name = "octicon-plus" / >
< / a >
< / h4 >
< div v-if ="organizations.length" class="ui attached table segment gt-rounded-bottom" >
< ul class = "repo-owner-name-list" >
< li class = "gt-df gt-ac gt-py-3" v-for ="org in organizations" :key="org.name" >
< a class = "repo-list-link muted" : href = "subUrl + '/' + encodeURIComponent(org.name)" >
< svg -icon name = "octicon-organization" :size ="16" class -name = " repo -list -icon " / >
< div class = "text truncate" > { { org . name } } < / div >
< div > <!-- div to prevent underline of label on hover -- >
< span class = "ui tiny basic label" v-if ="org.org_visibility !== 'public'" >
{ { org . org _visibility === 'limited' ? textOrgVisibilityLimited : textOrgVisibilityPrivate } }
< / span >
< / div >
< / a >
< div class = "text light grey gt-df gt-ac gt-ml-3" >
{ { org . num _repos } }
< svg -icon name = "octicon-repo" :size ="16" class -name = " gt -ml -2 gt -mt -1 " / >
< / div >
< / li >
< / ul >
< / div >
< / div >
< / div >
< / template >
< style scoped >
ul {
list - style : none ;