svg
This commit is contained in:
@ -31,7 +31,7 @@ class Issue
|
|||||||
private int $rowissue = 0;
|
private int $rowissue = 0;
|
||||||
|
|
||||||
#[ORM\Column(nullable: true)]
|
#[ORM\Column(nullable: true)]
|
||||||
private string $color = '';
|
private ?string $color = null;
|
||||||
|
|
||||||
#[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'issues')]
|
#[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'issues')]
|
||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
@ -130,7 +130,9 @@ class Issue
|
|||||||
|
|
||||||
public function getColor(): ?string
|
public function getColor(): ?string
|
||||||
{
|
{
|
||||||
return $this->rowsprint;
|
if($this->color) return $this->color;
|
||||||
|
elseif($this->parent) return $this->parent->getColor();
|
||||||
|
else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setColor(?string $color): static
|
public function setColor(?string $color): static
|
||||||
|
@ -6,6 +6,7 @@ use Symfony\Component\Form\AbstractType;
|
|||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
|
||||||
class SelbgType extends AbstractType
|
class SelbgType extends AbstractType
|
||||||
{
|
{
|
||||||
public function configureOptions(OptionsResolver $resolver): void
|
public function configureOptions(OptionsResolver $resolver): void
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
Modification Issue = {{title}}
|
= Modification Issue = {{title}}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
@ -27,6 +27,7 @@ Modification Issue = {{title}}
|
|||||||
<div class="col-md-6 mx-auto">
|
<div class="col-md-6 mx-auto">
|
||||||
<div class="card mt-3">
|
<div class="card mt-3">
|
||||||
<div class="card-header">Information</div>
|
<div class="card-header">Information</div>
|
||||||
|
{{ form_row(form.color) }}
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
<h5 style="flex-grow:1">#{{ issue.redmine.id }} = {{ issue.redmine.subject }}</h5>
|
<h5 style="flex-grow:1">#{{ issue.redmine.id }} = {{ issue.redmine.subject }}</h5>
|
||||||
<a href="{{redmineUrl}}/issues/{{issue.id}}" target="_blank" class="btn btn-primary"><i class="fas fa-eye"></i></a>
|
<a href="{{redmineUrl}}/issues/{{issue.id}}" target="_blank" class="btn btn-primary"><i class="fas fa-eye"></i></a>
|
||||||
<div class="btn btn-secondary" onClick="hideIssue()"><i class="fas fa-window-close"></i></div>
|
<div class="btn btn-secondary" onClick="hideIssue()"><i class="fas fa-window-close"></i></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
@ -17,6 +16,8 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div><a href="{{path("app_issue_update",{id:issue.id})}}">Modifier</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
@ -16,12 +16,14 @@
|
|||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
main {
|
main {
|
||||||
padding-top:80px;
|
padding-top:80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
content {
|
content {
|
||||||
padding:0px;
|
padding:0px;
|
||||||
|
overflow:auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.issueContainer {
|
.issueContainer {
|
||||||
@ -42,6 +44,7 @@
|
|||||||
.scrumContainer {
|
.scrumContainer {
|
||||||
display:none;
|
display:none;
|
||||||
padding-left:300px;
|
padding-left:300px;
|
||||||
|
width:10000px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.containerStatus{
|
.containerStatus{
|
||||||
@ -313,7 +316,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% for issue in project.issues %}
|
{% for issue in project.issues %}
|
||||||
<div class="issueCard card tracker{{issue.redmine.tracker.id}} category{{(issue.redmine.category is defined?issue.redmine.category.id:'0') }}" data-status='{{issue.redmine.status.id}}' data-sprint='{{issue.rowsprint}}' data-version='{{(issue.redmine.fixed_version is defined?issue.redmine.fixed_version.id:'')}}' data-id='{{issue.id}}'>
|
<div class="issueCard {{issue.color}} card tracker{{issue.redmine.tracker.id}} category{{(issue.redmine.category is defined?issue.redmine.category.id:'0') }}" data-status='{{issue.redmine.status.id}}' data-sprint='{{issue.rowsprint}}' data-version='{{(issue.redmine.fixed_version is defined?issue.redmine.fixed_version.id:'')}}' data-id='{{issue.id}}'>
|
||||||
<div class='issueHeader'>
|
<div class='issueHeader'>
|
||||||
<div class='issueId'>#{{issue.id}}</div>
|
<div class='issueId'>#{{issue.id}}</div>
|
||||||
<div class='issueTitle'>
|
<div class='issueTitle'>
|
||||||
@ -665,6 +668,11 @@
|
|||||||
$sourceContainer = ui.item.parent();
|
$sourceContainer = ui.item.parent();
|
||||||
$movedItem = ui.item;
|
$movedItem = ui.item;
|
||||||
originalIndex = ui.item.index();
|
originalIndex = ui.item.index();
|
||||||
|
enableAutoScroll($(window)); // ou remplace par ton conteneur scrollable
|
||||||
|
},
|
||||||
|
|
||||||
|
stop: function () {
|
||||||
|
disableAutoScroll();
|
||||||
},
|
},
|
||||||
|
|
||||||
update: function (event, ui) {
|
update: function (event, ui) {
|
||||||
@ -725,7 +733,39 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let autoScrollInterval = null;
|
||||||
|
|
||||||
|
function enableAutoScroll($container) {
|
||||||
|
$(document).on('mousemove.autoScroll', function (e) {
|
||||||
|
const scrollMargin = 50; // px depuis le bord de la fenêtre
|
||||||
|
const scrollSpeed = 20; // px à chaque tick
|
||||||
|
|
||||||
|
const mouseY = e.clientY;
|
||||||
|
const windowHeight = window.innerHeight;
|
||||||
|
|
||||||
|
// Scroll vers le haut
|
||||||
|
if (mouseY < scrollMargin) {
|
||||||
|
clearInterval(autoScrollInterval);
|
||||||
|
autoScrollInterval = setInterval(() => {
|
||||||
|
$container.scrollTop($container.scrollTop() - scrollSpeed);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
// Scroll vers le bas
|
||||||
|
else if (mouseY > windowHeight - scrollMargin) {
|
||||||
|
clearInterval(autoScrollInterval);
|
||||||
|
autoScrollInterval = setInterval(() => {
|
||||||
|
$container.scrollTop($container.scrollTop() + scrollSpeed);
|
||||||
|
}, 50);
|
||||||
|
} else {
|
||||||
|
clearInterval(autoScrollInterval);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableAutoScroll() {
|
||||||
|
$(document).off('mousemove.autoScroll');
|
||||||
|
clearInterval(autoScrollInterval);
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
Reference in New Issue
Block a user