Calendrier - gestion des interavalles


#1

Bonjour,

je suis actuellement sur la customisation d’une interface sous Redmine,
j’ai la version 2.1.0.

J’ai voulu ajouter la possibilité de voir les intervalles entre le début
et la fin d’un tâche. C’est à dire, si une tâche était programmée entre
le 17 et le 19, pouvoir l’afficher le 18.
Cependant, si je programme une tâche commencée le 01 aout et qui doit
finir le 10 octobre par exemple, ma tache s’affichera pour tout le mois
d’aout mais en septembre elle ne va plus s’afficher …
Il y aurait-il moyen pour l’afficher ?

Sur le fichier htdocs/app/views/common/_calendar.html.erb :

Avant la ligne :
<% calendar.events_on(day).each do |i| %>

J’ai en fait rajouté :
<% tab =
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
%>
<% for t in tab %>
<% calendar.events_on(day-t).each do |i| %>
<% if i.due_date != nil && day < i.due_date %>

<%= h("#{i.project} -") unless @project && @project == i.project %> <%= link_to_issue i, :truncate => 30 %>

<%= render_issue_tooltip i %>

<% end %> <% end %> <% end %>

Merci pour votre aide !

Cordialement.


#2

Bonjour Amélie,

je ne passe pas souvent, j’espère que tu as pu avancer malgré l’absence
de réponse en un mois :slight_smile:

Je n’aime pas inciter à la désertion d’une ML mais ce canal est un peu
vide, si tu tentes les Google G., ils sont largement plus actifs.

Je me permets quelques remarques sur le code. Personne n’est parfait
mais ces quelques astuces te simplifieront sûrement la vie et
l’apprentissage du Ruby.

À bientôt,

Amelie D. wrote in post #1080272:

J’ai voulu ajouter la possibilité de voir les intervalles entre le début
et la fin d’un tâche. C’est à dire, si une tâche était programmée entre
le 17 et le 19, pouvoir l’afficher le 18.
Cependant, si je programme une tâche commencée le 01 aout et qui doit
finir le 10 octobre par exemple, ma tache s’affichera pour tout le mois
d’aout mais en septembre elle ne va plus s’afficher …
Il y aurait-il moyen pour l’afficher ?

Sur le fichier htdocs/app/views/common/_calendar.html.erb :

Avant la ligne :
<% calendar.events_on(day).each do |i| %>

J’ai en fait rajouté :
<% tab =

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]

%>
Plusieurs remarques :

  • quitte à créer un tableau, autant faire un intervalle : 1…31
  • il y a PLEIN de moyens plus pratiques de créer un tableau du genre
    (1…31).to_a
    a = []; 31.times {|i| a << i+1}
  • si c’est un tableau de dates, tu veux parfois 28, 29 ou 30 ?

<% for t in tab %>
Et si c’est pour itérer, idem. Je fais surtout avec each et map, pas
for, mais :
(1…31).each {|i| … }
1.upto(31) {|i| …}

<% calendar.events_on(day-t).each do |i| %>
Tu fais donc l’itération à l’envers, du N au 1er ?
Là encore cela induirait des modifs du style
1.upto(day) {|j|

jour j

}

Mais je pense que requêter tes événements en un coup peut aider à faire
ça.
Je ne connais pas “events_on(x)” et j’espère qu’il ne fait pas des
dizaines de requêtes inutiles pour rien, mais n’y a-t-il pas une méthode
pour prendre les événements entre une date X et Y ?

<% if i.due_date != nil && day < i.due_date %>

<%= h("#{i.project} -") unless @project && @project == i.project %>

Si tu as toujours un i.project, tu peux inverser ta condition tu fais
deux en un :
i.project == @project # si @project est nil la condition ne sera pas
remplie

<%= link_to_issue i, :truncate => 30 %>

<%= render_issue_tooltip i %>

<% end %> <% end %> <% end %>

Bon courage et à bientôt si tu as d’autres questions !


#3

Sylvain Abélard wrote in post #1084909:

Je n’aime pas inciter à la désertion d’une ML mais ce canal est un peu
vide, si tu tentes les Google G., ils sont largement plus actifs.

est-ce qu’il y aurait un google-groupe francophone sur Ruby ? j’ai aussi
remarqué que le newsgroup francophone est très désert.


#4

Il y a le Google Group RailsFrance :
https://groups.google.com/forum/?fromgroups#!forum/railsfrance

Et de nombreux meetups :
http://www.ruby-lang.org/fr/community/user-groups/

Bon courage :slight_smile: