Compare commits
30 Commits
0e93e7c52f
...
pkg/dev/ub
Author | SHA1 | Date | |
---|---|---|---|
07a5a34476 | |||
6bb8afd914 | |||
3eb96fc75e | |||
d6597270dd | |||
fbad143bed | |||
e3459d136e | |||
fe0e2667a0 | |||
00a300cd00 | |||
e5315fe9d0 | |||
f5ed5a746a | |||
164377ec08 | |||
9cdacf70a0 | |||
fb37bb0e98 | |||
59dcb4c18a | |||
61ef77cf16 | |||
acde7436da | |||
b3d458ebac | |||
5284633e7f | |||
5c77f22c26 | |||
204d6869ec | |||
35683a4584 | |||
64dd215038 | |||
d8192e6953 | |||
4d3175a25e | |||
ca7b8aac47 | |||
971bf25f16 | |||
a2ab012c5f | |||
fb815c4d83 | |||
88a0a5bebe | |||
f54b579ae3 |
@ -66,7 +66,7 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<nav className="navbar is-info">
|
||||
<nav className="navbar is-light">
|
||||
<div className="container is-fluid">
|
||||
<div className="navbar-start">
|
||||
<div className="navbar-item">
|
||||
@ -74,6 +74,19 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
</div>
|
||||
</div>
|
||||
<div className="navbar-end">
|
||||
<div className="navbar-item">
|
||||
|
||||
<div className="field">
|
||||
<input id="compactMode"
|
||||
checked={this.state.compactMode}
|
||||
onChange={this.onCompactModeChange.bind(this)}
|
||||
type="checkbox"
|
||||
className="switch is-outlined is-success"
|
||||
name="compactMode"
|
||||
/>
|
||||
<label htmlFor="compactMode">Mode compact</label>
|
||||
</div>
|
||||
</div>
|
||||
<a href={`#/boards/${board.id}/edit`} className="navbar-item">
|
||||
<span className="icon">
|
||||
<i className="fa fa-edit fa-fw"></i>
|
||||
@ -86,13 +99,13 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
<div className="container is-fluid">
|
||||
<div className="kanboard-container is-fullheight">
|
||||
<Board
|
||||
initialBoard={kanboard}
|
||||
|
||||
renderCard={this.renderCard.bind(this)}
|
||||
renderColumnHeader={this.renderLaneHeader.bind(this)}
|
||||
onCardDragEnd={this.onCardDragEnd.bind(this)}
|
||||
disableColumnDrag={true}
|
||||
/>
|
||||
>
|
||||
{kanboard}
|
||||
</Board>
|
||||
{ this.renderNewCardModal() }
|
||||
</div>
|
||||
</div>
|
||||
@ -182,17 +195,17 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
<div className="level-item">
|
||||
<span className="tag is-primary is-light is-normal">{lane.cards.length}</span>
|
||||
</div>
|
||||
<h3 className="level-item is-size-5">
|
||||
{lane.title}
|
||||
</h3>
|
||||
<button className="button is-light level-item is-small expand"
|
||||
onClick={(e) => { console.log(e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode.classList.toggle('minimized'))}}>
|
||||
onClick={this.onMinimizeColumn}>
|
||||
<span className="icon">
|
||||
<i className="fas fa-chevron-right" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
<h3 className="level-item is-size-5">
|
||||
{lane.title}
|
||||
</h3>
|
||||
</div>
|
||||
<div className="level-right">
|
||||
<div className="level-right is-show-expand">
|
||||
<button className="button is-light level-item is-small"
|
||||
onClick={this.onNewCardClick.bind(this, lane.id)}>
|
||||
<span className="icon">
|
||||
@ -200,7 +213,7 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
</span>
|
||||
</button>
|
||||
<button className="button is-light level-item is-small"
|
||||
onClick={(e) => { console.log(e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode.classList.toggle('minimized'))}}>
|
||||
onClick={this.onMinimizeColumn}>
|
||||
<span className="icon">
|
||||
<i className="fas fa-chevron-left" aria-hidden="true"></i>
|
||||
</span>
|
||||
@ -211,7 +224,11 @@ export class BoardPage extends React.Component<BoardPageProps> {
|
||||
)
|
||||
}
|
||||
|
||||
onCardDragEnd(b: any, card: any, source: any, dest: any) {
|
||||
onMinimizeColumn(e: any) {
|
||||
e.currentTarget.closest('.react-kanban-column').classList.toggle('minimized');
|
||||
}
|
||||
|
||||
onCardDragEnd(card: any, source: any, dest: any) {
|
||||
const { board } = this.props;
|
||||
this.props.dispatch(moveCard(
|
||||
board.id,
|
||||
|
@ -20,28 +20,35 @@ export class IssueCard extends React.PureComponent<IssueCardProps> {
|
||||
<div className="media">
|
||||
<div className="media-content">
|
||||
<div className="content">
|
||||
<nav className="level">
|
||||
<div className="level-left">
|
||||
<div className="level-item">
|
||||
<a target="_blank" href={issueURL}><strong>{`#${card.issue.number}`}</strong></a>
|
||||
</div>
|
||||
<div className="level-item">
|
||||
<a target="_blank" href={projectURL}>{card.project}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div className="level-right">
|
||||
{
|
||||
card.issue.assignee ?
|
||||
{ !compact &&
|
||||
<nav className="level">
|
||||
<div className="level-left">
|
||||
<div className="level-item">
|
||||
<a target="_blank" href={issueURL}><strong>{`#${card.issue.number}`}</strong></a>
|
||||
</div>
|
||||
{ !compact &&
|
||||
<div className="level-item">
|
||||
<small>{`@${card.issue.assignee.login}`}</small>
|
||||
<a target="_blank" href={projectURL}>{card.project}</a>
|
||||
</div>
|
||||
: null
|
||||
}
|
||||
</div>
|
||||
</nav>
|
||||
}
|
||||
</div>
|
||||
<div className="level-right">
|
||||
{
|
||||
card.issue.assignee && !compact ?
|
||||
<div className="level-item">
|
||||
<small>{`@${card.issue.assignee.login}`}</small>
|
||||
</div>
|
||||
: null
|
||||
}
|
||||
</div>
|
||||
</nav>
|
||||
}
|
||||
{ compact &&
|
||||
<a target="_blank" className="mr-1" href={issueURL}><strong>{`#${card.issue.number}`}</strong></a>
|
||||
}
|
||||
<span>{card.issue.title ? card.issue.title : ''}</span>
|
||||
</div>
|
||||
{
|
||||
{ !compact &&
|
||||
<nav className="level">
|
||||
<div className="level-left"></div>
|
||||
<div className="level-right">
|
||||
|
@ -18,4 +18,8 @@ html, body {
|
||||
#app {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.mr-1 {
|
||||
margin-right: 5px;
|
||||
}
|
@ -101,23 +101,41 @@
|
||||
scrollbar-color: $grey-lighter, #f1f1f1;
|
||||
scrollbar-width: 5px;
|
||||
|
||||
.kanboard-card {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&.minimized {
|
||||
max-width: 40px;
|
||||
min-width: 40px;
|
||||
max-width: 70px;
|
||||
min-width: 70px;
|
||||
|
||||
writing-mode: vertical-rl;
|
||||
text-orientation: sideways-right;
|
||||
|
||||
|
||||
|
||||
.level-item {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.level-left {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.level-right.is-show-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.kanboard-lane {
|
||||
margin-right: -1em;
|
||||
/*margin-right: -1em;*/
|
||||
|
||||
h3 {
|
||||
margin-top: .5em;
|
||||
margin-right: -.5em;
|
||||
/*margin-right: -.5em;*/
|
||||
}
|
||||
|
||||
.tag {
|
||||
margin-right: -1em;
|
||||
writing-mode: horizontal-tb;
|
||||
}
|
||||
|
||||
.expand {
|
||||
@ -125,8 +143,13 @@
|
||||
margin-top: .5em;
|
||||
}
|
||||
}
|
||||
|
||||
.kanboard-card {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
@ -155,4 +178,21 @@
|
||||
|
||||
.react-kanban-column {
|
||||
background: white !important;
|
||||
}
|
||||
|
||||
|
||||
.kanboard-card {
|
||||
overflow-wrap: break-word;
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.level {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.level-item {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
@ -37,22 +37,22 @@ function handleMoveCard(state: any, action: any) {
|
||||
|
||||
const kanboard = state.byID[boardID];
|
||||
|
||||
const lanes = [ ...kanboard.columns ];
|
||||
const fromLane = lanes[fromLaneID];
|
||||
const toLane = lanes[toLaneID];
|
||||
const columns = [ ...kanboard.columns ];
|
||||
const fromLane = columns[fromLaneID];
|
||||
const toLane = columns[toLaneID];
|
||||
const card = fromLane.cards[fromPosition];
|
||||
|
||||
const fromCards = [ ...fromLane.cards ];
|
||||
if (fromLaneID !== toLaneID) {
|
||||
fromCards.splice(fromPosition, 1);
|
||||
lanes[fromLaneID] = {
|
||||
columns[fromLaneID] = {
|
||||
...fromLane,
|
||||
cards: fromCards,
|
||||
};
|
||||
|
||||
const toCards = [ ...toLane.cards ];
|
||||
toCards.splice(toPosition, 0, card);
|
||||
lanes[toLaneID] = {
|
||||
columns[toLaneID] = {
|
||||
...toLane,
|
||||
cards: toCards,
|
||||
};
|
||||
@ -67,7 +67,7 @@ function handleMoveCard(state: any, action: any) {
|
||||
...state.byID,
|
||||
[boardID]: {
|
||||
...state.byID[boardID],
|
||||
lanes,
|
||||
columns,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
@ -22,7 +22,7 @@ export function* moveCardSaga(action: any) {
|
||||
}
|
||||
});
|
||||
|
||||
const toLane = kanboard.lanes[toLaneID];
|
||||
const toLane = kanboard.columns[toLaneID];
|
||||
const card = toLane.cards[toPosition];
|
||||
|
||||
if (!card) return;
|
||||
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@ -0,0 +1 @@
|
||||
9
|
14
debian/control
vendored
Normal file
14
debian/control
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
Source: gengitkan
|
||||
Section: unknown
|
||||
Priority: optional
|
||||
Maintainer: William Petit <wpetit@cadoles.com>
|
||||
Build-Depends: debhelper (>= 8.0.0), wget, ca-certificates, tar
|
||||
Standards-Version: 3.9.4
|
||||
Homepage: http://forge.cadoles.com/wpetit/gengitkan
|
||||
Vcs-Git: http://forge.cadoles.com/wpetit/gengitkan.git
|
||||
Vcs-Browser: http://forge.cadoles.com/wpetit/gengitkan
|
||||
|
||||
Package: gengitkan
|
||||
Architecture: amd64
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Application type "Kanboard" connectée à Gitea
|
1
debian/gengitkan.dirs
vendored
Normal file
1
debian/gengitkan.dirs
vendored
Normal file
@ -0,0 +1 @@
|
||||
var/lib/gengitkan
|
13
debian/gengitkan.service
vendored
Normal file
13
debian/gengitkan.service
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Application type "Kanboard" connectée à Gitea
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Environment=GENGITKAN_HTTP_PUBDIR=/usr/share/gengitkan/public
|
||||
Environment=GENGITKAN_DATA_DBPATH=/var/lib/gengitkan/data.db
|
||||
ExecStart=/usr/bin/gengitkan -workdir /usr/share/gengitkan -config /etc/gengitkan/server.conf
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
54
debian/rules
vendored
Normal file
54
debian/rules
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
export DH_VERBOSE=1
|
||||
|
||||
GO_VERSION := 1.13.5
|
||||
OS := linux
|
||||
ARCH := amd64
|
||||
GOPATH=$(HOME)/go
|
||||
|
||||
ifeq (, $(shell which go 2>/dev/null))
|
||||
override_dh_auto_build: install-go
|
||||
endif
|
||||
|
||||
ifeq (, $(shell which node 2>/dev/null))
|
||||
override_dh_auto_build: install-nodejs
|
||||
endif
|
||||
|
||||
%:
|
||||
dh $@ --with systemd
|
||||
|
||||
override_dh_auto_build: $(GOPATH)
|
||||
cd client && npm install
|
||||
GOPATH=$(GOPATH) PATH="$(PATH):/usr/local/go/bin:$(GOPATH)/bin" go mod vendor
|
||||
GOPATH=$(GOPATH) PATH="$(PATH):/usr/local/go/bin:$(GOPATH)/bin" ARCH_TARGETS=$(ARCH) make release
|
||||
|
||||
$(GOPATH):
|
||||
mkdir -p $(GOPATH)
|
||||
|
||||
install-go:
|
||||
wget https://dl.google.com/go/go$(GO_VERSION).$(OS)-$(ARCH).tar.gz
|
||||
tar -C /usr/local -xzf go$(GO_VERSION).$(OS)-$(ARCH).tar.gz
|
||||
|
||||
install-nodejs:
|
||||
wget -O- https://deb.nodesource.com/setup_12.x | bash -
|
||||
apt-get install -y nodejs
|
||||
|
||||
override_dh_auto_install:
|
||||
|
||||
mkdir -p debian/gengitkan/usr/share/gengitkan
|
||||
mkdir -p debian/gengitkan/etc/gengitkan
|
||||
mkdir -p debian/gengitkan/usr/bin
|
||||
|
||||
cp -r release/server-$(OS)-$(ARCH)/* debian/gengitkan/usr/share/gengitkan/
|
||||
|
||||
mv debian/gengitkan/usr/share/gengitkan/bin/server debian/gengitkan/usr/bin/gengitkan
|
||||
mv debian/gengitkan/usr/share/gengitkan/server.conf debian/gengitkan/etc/gengitkan/server.conf
|
||||
|
||||
install -d debian/gengitkan
|
||||
|
||||
override_dh_strip:
|
||||
|
||||
override_dh_auto_test:
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@ -0,0 +1 @@
|
||||
3.0 (native)
|
Reference in New Issue
Block a user