@osfarm/itineraire-technique 1.1.9 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- div.mainITKContainer{container-type:inline-size;container-name:myparent;line-height:1rem}div.mainITKContainer .left-transcript{display:none;width:50%;font-family:Segoe UI}div.mainITKContainer .chart-div{width:100%}div.mainITKContainer .bottom-transcript{display:none}div.mainITKContainer.withTranscript .bottom-transcript{display:block;font-family:Segoe UI}@container myparent (min-width: 800px){div.mainITKContainer.withTranscript .left-transcript{display:block}div.mainITKContainer.withTranscript .chart-div{width:50%}div.mainITKContainer.withTranscript .bottom-transcript{display:none}}@container myparent (min-width: 1200px){div.mainITKContainer.withTranscript .left-transcript{display:block;width:40%}div.mainITKContainer.withTranscript .chart-div{width:60%}div.mainITKContainer.withTranscript .bottom-transcript{display:none}}div.mainITKContainer div.rotation_item{background-color:#f8fafc;border-left:#fff 14px solid;border-radius:7px;padding:8px 3px 5px 9px;margin:12px 0;overflow-x:hidden}div.mainITKContainer div.rotation_item.highlighted{box-shadow:0px 4px 4px 0px var(--UI-Shadow, rgba(17, 36, 69, 0.16)),0px 1px 16px 0px var(--UI-Shadow, rgba(17, 36, 69, 0.16));background-color:#f0f3f5}div.mainITKContainer div.rotation_item div.step-header h4{margin-bottom:0;margin-top:0}div.mainITKContainer div.rotation_item div.step-header div.step_dates{font-size:11px;background-color:#cdcccc;color:#fff;margin:5px;padding:2px 5px;border-radius:5px;height:20px;float:right}div.mainITKContainer div.rotation_item div.step-header div.collapse-button{border-radius:50%;width:30px;height:30px;text-align:center;padding:5px 0px;margin:0 5px 3px 0;cursor:pointer;background:#dfe6f7;color:#7a8bad;float:right;transition:transform .3s ease-in-out}div.mainITKContainer div.rotation_item .step_description{clear:both}div.mainITKContainer div.rotation_item.show-all div.collapse-button{transform:rotate(180deg)}div.mainITKContainer div.rotation_item.show-all div.details{max-height:10000px}div.mainITKContainer div.rotation_item div.details{max-height:0px;overflow:hidden;transition:max-height .3s ease-in-out}div.mainITKContainer div.rotation_item div.details div.intervention{background-color:#fff;border-radius:5px;margin-bottom:11px;padding:13px;cursor:pointer}div.mainITKContainer div.rotation_item div.details div.intervention span.intervention_title{font-weight:bold}div.mainITKContainer div.rotation_item div.details div.intervention span.intervention_date{color:#707070;background-color:#f0f3f5;float:right}div.mainITKContainer div.rotation_item div.details div.intervention div.intervention_description{margin-top:5px}div.mainITKContainer div.rotation_item .step-edit{display:none}div.mainITKContainer .charts{width:100%;height:500px;display:inline-block}div.mainITKContainer .transcript{font-size:80%;width:100%;max-height:450px;overflow-y:scroll;scroll-behavior:smooth;padding:3px}.rotation-tooltip{max-width:400px}/*# sourceMappingURL=styles-rendering.css.map */
1
+ div.mainITKContainer{container-type:inline-size;container-name:myparent;line-height:1rem}div.mainITKContainer .left-transcript{display:none;width:50%;font-family:Segoe UI}div.mainITKContainer .chart-div{width:100%}div.mainITKContainer .bottom-transcript{display:none}div.mainITKContainer.withTranscript .bottom-transcript{display:block;font-family:Segoe UI}@container myparent (min-width: 800px){div.mainITKContainer.withTranscript .left-transcript{display:block}div.mainITKContainer.withTranscript .chart-div{width:50%}div.mainITKContainer.withTranscript .bottom-transcript{display:none}}@container myparent (min-width: 1000px){div.mainITKContainer.withTranscript .left-transcript{display:block;width:40%}div.mainITKContainer.withTranscript .chart-div{width:60%}div.mainITKContainer.withTranscript .bottom-transcript{display:none}}div.mainITKContainer div.rotation_item{background-color:#f8fafc;border-left:#fff 14px solid;border-radius:7px;padding:8px 3px 5px 9px;margin:12px 0;overflow-x:hidden}div.mainITKContainer div.rotation_item.highlighted{box-shadow:0px 4px 4px 0px var(--UI-Shadow, rgba(17, 36, 69, 0.16)),0px 1px 16px 0px var(--UI-Shadow, rgba(17, 36, 69, 0.16));background-color:#f0f3f5}div.mainITKContainer div.rotation_item div.step-header h4{font-size:20px;margin-bottom:0;margin-top:0}div.mainITKContainer div.rotation_item div.step-header div.step_dates{font-size:11px;background-color:#cdcccc;color:#000;margin:5px;padding:2px 5px;border-radius:5px;height:20px;float:right}div.mainITKContainer div.rotation_item div.step-header div.collapse-button{border-radius:50%;width:30px;height:30px;text-align:center;padding:5px 0px;margin:0 5px 3px 0;cursor:pointer;background:#dfe6f7;color:#7a8bad;float:right;transition:transform .3s ease-in-out}div.mainITKContainer div.rotation_item .step_description{clear:both}div.mainITKContainer div.rotation_item.show-all div.collapse-button{transform:rotate(180deg)}div.mainITKContainer div.rotation_item.show-all div.details{max-height:10000px}div.mainITKContainer div.rotation_item div.details{max-height:0px;overflow:hidden;transition:max-height .3s ease-in-out}div.mainITKContainer div.rotation_item div.details div.intervention{background-color:#fff;border-radius:5px;margin-bottom:11px;padding:13px;cursor:pointer}div.mainITKContainer div.rotation_item div.details div.intervention span.intervention_title{font-weight:bold}div.mainITKContainer div.rotation_item div.details div.intervention span.intervention_date{color:#707070;background-color:#f0f3f5;float:right}div.mainITKContainer div.rotation_item div.details div.intervention div.intervention_description{margin-top:5px}div.mainITKContainer div.rotation_item .step-edit{display:none}div.mainITKContainer .charts{width:100%;height:500px;display:inline-block}div.mainITKContainer .transcript{font-size:80%;width:100%;max-height:450px;overflow-y:scroll;scroll-behavior:smooth;padding:3px}.rotation-tooltip{max-width:400px;text-align:left}.rotation-tooltip div.step_dates{font-size:9px;background-color:#cdcccc;color:#000;margin:5px;padding:0px 5px;border-radius:5px;float:right}/*# sourceMappingURL=styles-rendering.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/styles-rendering.scss"],"names":[],"mappings":"AAAA,qBACI,2BACA,wBACA,iBAEA,sCACI,aACA,UACA,qBAGJ,gCACI,WAGJ,wCACI,aAIA,uDACI,cACA,qBAIR,uCAEQ,qDACI,cAGJ,+CACI,UAGJ,uDACI,cAKZ,wCAEQ,qDACI,cACA,UAGJ,+CACI,UAGJ,uDACI,cAKZ,uCACI,yBACA,4BACA,kBACA,wBACA,cACA,kBAEA,mDACI,8HAEA,yBAIA,0DACI,gBACA,aAGJ,sEACI,eACA,yBACA,WACA,WACA,gBACA,kBACA,YACA,YAGJ,2EACI,kBACA,WACA,YACA,kBACA,gBACA,mBACA,eACA,mBACA,cACA,YACA,qCAIR,yDACI,WAIA,oEACI,yBAGJ,4DACI,mBAKR,mDACI,eACA,gBACA,sCAEA,oEACI,sBACA,kBACA,mBACA,aACA,eAEA,4FACI,iBAGJ,2FACI,cACA,yBACA,YAGJ,iGACI,eAKZ,kDACI,aAIR,6BACI,WACA,aACA,qBAGJ,iCACI,cACA,WACA,iBACA,kBACA,uBACA,YAIR,kBACI","file":"styles-rendering.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../scss/styles-rendering.scss"],"names":[],"mappings":"AAAA,qBACI,2BACA,wBACA,iBAEA,sCACI,aACA,UACA,qBAGJ,gCACI,WAGJ,wCACI,aAIA,uDACI,cACA,qBAIR,uCAEQ,qDACI,cAGJ,+CACI,UAGJ,uDACI,cAKZ,wCAEQ,qDACI,cACA,UAGJ,+CACI,UAGJ,uDACI,cAKZ,uCACI,yBACA,4BACA,kBACA,wBACA,cACA,kBAEA,mDACI,8HAEA,yBAIA,0DACI,eACA,gBACA,aAGJ,sEACI,eACA,yBACA,WACA,WACA,gBACA,kBACA,YACA,YAGJ,2EACI,kBACA,WACA,YACA,kBACA,gBACA,mBACA,eACA,mBACA,cACA,YACA,qCAIR,yDACI,WAIA,oEACI,yBAGJ,4DACI,mBAKR,mDACI,eACA,gBACA,sCAEA,oEACI,sBACA,kBACA,mBACA,aACA,eAEA,4FACI,iBAGJ,2FACI,cACA,yBACA,YAGJ,iGACI,eAKZ,kDACI,aAIR,6BACI,WACA,aACA,qBAGJ,iCACI,cACA,WACA,iBACA,kBACA,uBACA,YAIR,kBACI,gBACA,gBAEA,iCACI,cACA,yBACA,WACA,WACA,gBACA,kBACA","file":"styles-rendering.css"}
@@ -160,7 +160,7 @@ class RotationRenderer {
160
160
  self.noFocusUpdate = false;
161
161
  }, 1500);
162
162
 
163
- element[0].scrollIntoView({ block: "start" });
163
+ element[0].scrollIntoView({ block: "start", block: "nearest" });
164
164
 
165
165
  self.getVisibleTranscriptDiv().find('.' + params.data.divId).closest('.rotation_item').addClass("show-all");
166
166
 
@@ -274,11 +274,14 @@ class RotationRenderer {
274
274
  let maxDate = null;
275
275
 
276
276
  steps.forEach((item) => {
277
- if (!minDate || minDate > item.startDate.valueOf())
278
- minDate = item.startDate.valueOf();
277
+ const stepStart = item.startDate.valueOf() - 86400000 * 30; // Subtract some space for the start of the arrow
278
+ const stepEnd = item.endDate.valueOf() + 86400000 * 50; // Add some space for the end of the arrow
279
279
 
280
- if (!maxDate || maxDate < item.endDate.valueOf())
281
- maxDate = item.endDate.valueOf() + 86400000 * 30; // Add some space for the end of the arrow
280
+ if (!minDate || minDate > stepStart)
281
+ minDate = stepStart;
282
+
283
+ if (!maxDate || maxDate < stepEnd)
284
+ maxDate = stepEnd;
282
285
  });
283
286
 
284
287
  return { min: minDate, max: maxDate };
@@ -294,6 +297,15 @@ class RotationRenderer {
294
297
  if (item.name == Number(item.name))
295
298
  item.name = "Etape " + item.name; // Force the item name to be a string
296
299
 
300
+ let description = self.getHTMLFormatedDescription(item.description);
301
+ if (item.interventions?.length > 0 || item.attributes?.length > 0) {
302
+ description += '<br/>';
303
+ item.attributes?.forEach(attr => {
304
+ description += `<br><b>${attr.name} :</b> ${attr.value}`;
305
+ });
306
+ }
307
+
308
+
297
309
  data.push({
298
310
  name: item.name,
299
311
  divId: 'Step_' + index,
@@ -301,7 +313,7 @@ class RotationRenderer {
301
313
  startDate: new Date(item.startDate.valueOf()), // Date de début
302
314
  endDate: new Date(item.endDate.valueOf()), // Date de fin
303
315
  duration: item.duration,
304
- description: self.getHTMLFormatedDescription(item.description),
316
+ description: description,
305
317
  value: [
306
318
  1, // Parcelle (index de la série)
307
319
  item.startDate.valueOf(), // Date de début
@@ -968,13 +980,21 @@ class RotationRenderer {
968
980
 
969
981
  option.tooltip = {
970
982
  extraCssText: "text-wrap: wrap;",
983
+ position: function (pos, params, el, elRect, size) {
984
+ var obj = { top: 10 };
985
+ obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 30;
986
+ return obj;
987
+ },
971
988
  className: "rotation-tooltip",
972
989
  formatter: function (params) {
973
990
  if (params.data.type == 'rotation_item') {
974
991
  let start = params.data.startDate.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short', year: '2-digit' });
975
992
  let end = params.data.endDate.toLocaleDateString('fr-FR', { day: 'numeric', month: 'short', year: '2-digit' });
993
+ let duration = params.data.duration + ' mois';
994
+ if (params.data.duration > 20)
995
+ duration = (Math.round(params.data.duration / 1.2)/10 + ' années').replace('.', ',');
976
996
 
977
- return params.marker + params.name + ' : ' + params.data.duration + ' mois (' + start + ' ➜ ' + end + ')<br>' + params.data.description;
997
+ return params.marker + ' <b>' + params.name + '</b><div class="step_dates"><b>' + duration + '</b> (' + start + ' ➜ ' + end + ')</div><br style="clear:both">' + params.data.description.replace('’', '\'');
978
998
  }
979
999
  else {
980
1000
  let interventionDate = params.data.interventionDate;
@@ -986,13 +1006,13 @@ class RotationRenderer {
986
1006
  else
987
1007
  dateString += ' (J' + days + ')';
988
1008
 
989
- return params.marker + params.name + ' - ' + dateString + '<br>' + params.data.description;
1009
+ return params.marker + ' <b>'+ params.name + '</b> - ' + dateString + '<br>' + params.data.description.replace('’', '\'');;
990
1010
  }
991
1011
  }
992
1012
  };
993
1013
 
994
1014
  option.toolbox = {
995
- "itemSize": 25,
1015
+ "itemSize": 20,
996
1016
  "iconStyle": {
997
1017
  "borderColor": "#AAA",
998
1018
  "borderWidth": 1
@@ -1040,8 +1060,6 @@ class RotationRenderer {
1040
1060
 
1041
1061
  // If a line has a column in it, split the line in two and add bold to the first part:
1042
1062
  description = description.replace(/^([^:\n]+):/gm, "<b>$1:</b>");
1043
- description = description.replace(/\n([^:\n]+):/gm, "\n<b>$1:</b>");
1044
-
1045
1063
  description = description.replace(/\n/g, '<br/>');
1046
1064
 
1047
1065
  return description;
@@ -103,5 +103,12 @@ class WikiEditor {
103
103
 
104
104
  const editData = await editResp.json();
105
105
  console.log(editData);
106
+
107
+ if (editData.edit && editData.edit.result === 'Success') {
108
+ return Promise.resolve();
109
+ } else {
110
+ return Promise.reject(editData);
111
+ }
106
112
  }
113
+
107
114
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osfarm/itineraire-technique",
3
- "version": "1.1.9",
3
+ "version": "1.1.10",
4
4
  "description": "A visualisation tool to show agricultural technical itineraries based on Echarts",
5
5
  "main": "editor.html",
6
6
  "scripts": {
@@ -36,11 +36,11 @@ div.mainITKContainer {
36
36
 
37
37
  .bottom-transcript {
38
38
  display: none;
39
- }
39
+ }
40
40
  }
41
41
  }
42
42
 
43
- @container myparent (min-width: 1200px) {
43
+ @container myparent (min-width: 1000px) {
44
44
  &.withTranscript {
45
45
  .left-transcript {
46
46
  display: block;
@@ -53,7 +53,7 @@ div.mainITKContainer {
53
53
 
54
54
  .bottom-transcript {
55
55
  display: none;
56
- }
56
+ }
57
57
  }
58
58
  }
59
59
 
@@ -73,6 +73,7 @@ div.mainITKContainer {
73
73
 
74
74
  div.step-header {
75
75
  h4 {
76
+ font-size : 20px;
76
77
  margin-bottom: 0;
77
78
  margin-top : 0;
78
79
  }
@@ -80,7 +81,7 @@ div.mainITKContainer {
80
81
  div.step_dates {
81
82
  font-size : 11px;
82
83
  background-color: #cdcccc;
83
- color : #ffffff;
84
+ color : #000000;
84
85
  margin : 5px;
85
86
  padding : 2px 5px;
86
87
  border-radius : 5px;
@@ -168,5 +169,16 @@ div.mainITKContainer {
168
169
  }
169
170
 
170
171
  .rotation-tooltip {
171
- max-width: 400px;
172
+ max-width : 400px;
173
+ text-align: left;
174
+
175
+ div.step_dates {
176
+ font-size : 9px;
177
+ background-color: #cdcccc;
178
+ color : #000000;
179
+ margin : 5px;
180
+ padding : 0px 5px;
181
+ border-radius : 5px;
182
+ float: right;
183
+ }
172
184
  }
package/test/test.json CHANGED
@@ -1,428 +1,443 @@
1
1
  {
2
- "title": "Itinéraire technique de ma ferme",
3
- "options": {
4
- "view": "horizontal",
5
- "show_transcript": true,
6
- "title_top_interventions": "Contrôle adventices",
7
- "title_bottom_interventions": "Autres interventions",
8
- "title_steps": "Étapes de la rotation dans la parcelle"
9
- },
10
- "steps": [
11
- {
12
- "name": "Betterave",
13
- "color": "#ff96b0",
14
- "description": "Tête de rotation",
15
- "attributes": [
16
- {
17
- "id": "e0266608-9cce-4a1d-8085-ea7ee92af199",
18
- "name": "Pré-semis",
19
- "value": "Possibilité d'un couvert multi-espèces en aout n-1"
20
- },
21
- {
22
- "id": "2b222e06-df5f-4342-8713-e3c556dcdf91",
23
- "name": "Travail du sol",
24
- "value": "déchaumage pour niveler le terrain et un binage en Juin à 1cm"
25
- },
26
- {
27
- "id": "d8bd11f9-f387-439a-b348-b82bb6a6454f",
28
- "name": "Type de semoir",
29
- "value": "trois passages de strip-till"
30
- },
31
- {
32
- "id": "d4810813-22e2-4c2b-b09e-713bc11f27ed",
33
- "name": "Date de semis",
34
- "value": "22/03"
35
- },
36
- {
37
- "id": "7861987c-3279-41bc-a6ec-09fa07ebb823",
38
- "name": "Densité de semis",
39
- "value": "125mil graines/ha"
40
- },
41
- {
42
- "id": "6b3dbfcb-c221-4279-a717-08e6c84fcca1",
43
- "name": "Plantes compagnes",
44
- "value": "avoine/orge fermière, 20kg/ha"
45
- }
46
- ],
47
- "interventions": [
48
- {
49
- "id": "ec225c64-6cc2-40c7-87db-b69e3202d3c3",
50
- "day": 0,
51
- "name": "Semis",
52
- "type": "intervention_bottom",
53
- "description": "Semis des betteraves à J + 5"
54
- }
55
- ],
56
- "startDate": "2022-03-15T00:00:00.000Z",
57
- "endDate": "2022-11-01T00:00:00.000Z",
58
- "id": "7a469089-e253-4e32-86cc-ebc7302a74b5",
59
- "secondary_crop": false,
60
- "useDefaultColor": false,
61
- "useDefaultStartDate": false,
62
- "useDefaultEndDate": false,
63
- "duration": 8
64
- },
65
- {
66
- "name": "Blé tendre",
67
- "color": "#edcc7d",
68
- "duration": 11,
69
- "attributes": [
70
- {
71
- "id": "8e1ad3f1-93df-4e01-8d82-dff1d079748e",
72
- "name": "Pré-semis",
73
- "value": "désinfection du grain au vinaigre (1L/100kg)"
74
- },
75
- {
76
- "id": "776bc17d-91ec-4c42-bb02-c3c3886754d2",
77
- "name": "Travail du sol",
78
- "value": "aucun, semis direct pur"
79
- },
80
- {
81
- "id": "4dc557cf-01fa-4570-a4d1-fa42c5d6758b",
82
- "name": "Type de semoir",
83
- "value": "semoir à dents"
84
- },
85
- {
86
- "id": "18d92067-e0c1-4662-8d79-3b5a77ff531d",
87
- "name": "Date de semis",
88
- "value": "11/10"
89
- },
90
- {
91
- "id": "ad35a41c-b5f0-4331-a9bb-5e0cb1b6a7a5",
92
- "name": "Densité de semis",
93
- "value": "125kg/ha"
94
- },
95
- {
96
- "id": "0c2463e0-3be7-4478-a321-026925984ccf",
97
- "name": "Plantes compagnes",
98
- "value": "orge fermière, 20kg/ha (implantation semoir à disque)"
99
- }
100
- ],
101
- "startDate": "2022-11-15T00:00:00.000Z",
102
- "endDate": "2023-10-15T00:00:00.000Z",
103
- "id": "6350b8d3-d556-4a6c-a751-6cddbd02c3f4",
104
- "description": "",
105
- "interventions": [],
106
- "secondary_crop": false,
107
- "useDefaultColor": false,
108
- "useDefaultStartDate": false,
109
- "useDefaultEndDate": false
110
- },
111
- {
112
- "name": "Colza",
113
- "color": "#ebe733",
114
- "duration": 12,
115
- "description": "Travail du sol: aucun, semis direct pur, fissuration après récolte, avant le blé",
116
- "attributes": [
117
- {
118
- "id": "112bf636-4430-4c5d-ac40-8a639bc02562",
119
- "name": "Type de semoir",
120
- "value": "semoir à dents"
121
- },
122
- {
123
- "id": "1fc4c72d-7960-4f14-89df-60a824202fd5",
124
- "name": "Date de semis",
125
- "value": "26/08"
126
- },
127
- {
128
- "id": "1121f716-dcaa-4938-a7ec-df2af51ac478",
129
- "name": "Densité de semis",
130
- "value": "2kg/ha"
131
- },
132
- {
133
- "id": "2554051a-e5e4-4ca9-b9b1-8d7748c07307",
134
- "name": "Plantes compagnes",
135
- "value": "feverole fermière, 60 pieds au m2"
136
- }
137
- ],
138
- "interventions": [
139
- {
140
- "id": "291ee59e-b545-4fb7-9da3-75615c608ca4",
141
- "day": -20,
142
- "name": "Labour",
143
- "type": "intervention_bottom",
144
- "description": ""
145
- },
146
- {
147
- "id": "748cd931-3572-4890-9792-29121d873d8e",
148
- "day": -15,
149
- "name": "Travail superficiel",
150
- "type": "intervention_bottom",
151
- "description": ""
152
- },
153
- {
154
- "id": "e87d3137-be69-4148-be15-069978dfa8d6",
155
- "day": -10,
156
- "name": "Fertilisation",
157
- "type": "intervention_bottom",
158
- "description": "Fertilisation - tsp_45 (180 kg)"
159
- },
160
- {
161
- "id": "792ebc5d-782b-4287-be55-ac5cac8b301c",
162
- "day": -10,
163
- "name": "Fertilisation",
164
- "type": "intervention_bottom",
165
- "description": "Fertilisation - potassium_chloride (125 kg)"
166
- },
167
- {
168
- "id": "360aa81d-64ba-4863-ac04-1eb2e5dbcabb",
169
- "day": -5,
170
- "name": "Pulverisation",
171
- "type": "intervention_top",
172
- "description": "intervention_top - Proplus (0,4 l)"
173
- },
174
- {
175
- "id": "b2d1af8e-f2d5-4b1d-adbb-c335ebec6e2d",
176
- "day": 0,
177
- "name": "Semis",
178
- "type": "intervention_bottom",
179
- "description": "Semence - Capello (2 kg)"
180
- },
181
- {
182
- "id": "2b3b44f2-b9a0-4b58-bd19-0e78732366b7",
183
- "day": 0,
184
- "name": "Semis",
185
- "type": "intervention_top",
186
- "description": "intervention_top - Anti-limaces (4 kg)"
187
- },
188
- {
189
- "id": "75c37296-10cb-4107-8b06-641a4a773eae",
190
- "day": 30,
191
- "name": "Pulverisation",
192
- "type": "intervention_top",
193
- "description": "intervention_top - Sweet Home (0,3 l)"
194
- },
195
- {
196
- "id": "15cfed19-3f42-4843-97b5-6eec2d104962",
197
- "day": 120,
198
- "name": "Fertilisation",
199
- "type": "intervention_bottom",
200
- "description": "Fertilisation - ammonitrate_33 (178 kg)"
201
- },
202
- {
203
- "id": "ab777df2-48a1-427d-afb0-6c88bd88f955",
204
- "day": 150,
205
- "name": "Fertilisation",
206
- "type": "intervention_bottom",
207
- "description": "Fertilisation - ammonium_sulphate (90 kg)"
208
- },
209
- {
210
- "id": "5433b475-cf92-4b34-838d-a91dcc19dcc0",
211
- "day": 165,
212
- "name": "Pulverisation",
213
- "type": "intervention_top",
214
- "description": "intervention_top - Boravi Wg (1 kg)"
215
- },
216
- {
217
- "id": "dfac3c4a-b8b5-4c06-b050-90a5a4a7fb34",
218
- "day": 180,
219
- "name": "Fertilisation",
220
- "type": "intervention_bottom",
221
- "description": "Fertilisation - ammonitrate_33 (178 kg)"
222
- },
223
- {
224
- "id": "a47999b2-aa69-4f72-bb94-42c56588dca6",
225
- "day": 210,
226
- "name": "Pulverisation",
227
- "type": "intervention_top",
228
- "description": "intervention_top - Elifor (0,5 l)"
229
- },
230
- {
231
- "id": "03f1ed41-0005-4806-a625-ea32e03a3302",
232
- "day": 225,
233
- "name": "Pulverisation",
234
- "type": "intervention_top",
235
- "description": "intervention_top - Karakas (0,05 l)"
236
- },
237
- {
238
- "id": "6d336ca2-1ffb-4b10-ab1e-cbbbe02e7a36",
239
- "day": 240,
240
- "name": "Pulverisation",
241
- "type": "intervention_top",
242
- "description": "intervention_top - Sunorg Pro (0,4 l)"
243
- },
244
- {
245
- "id": "fb764ed6-a6db-4ec1-9407-929f16879eff",
246
- "day": 255,
247
- "name": "Pulverisation",
248
- "type": "intervention_top",
249
- "description": "intervention_top - Boravi Wg (1 kg)"
250
- },
251
- {
252
- "id": "dc43263c-40b3-4d2d-a0ef-e3a8c985a974",
253
- "day": 300,
254
- "name": "Récolte",
255
- "type": "intervention_bottom",
256
- "description": "Récolte - Rendement (30 q)"
257
- },
258
- {
259
- "id": "33a8c586-04e3-438a-bf03-d020daf6568b",
260
- "day": 300,
261
- "name": "Transport",
262
- "type": "intervention_bottom",
263
- "description": ""
264
- }
265
- ],
266
- "startDate": "2023-10-01T00:00:00.000Z",
267
- "endDate": "2024-10-01T00:00:00.000Z",
268
- "id": "57f7357e-7c51-4ea8-a99c-d30e3320b4e9",
269
- "secondary_crop": false,
270
- "useDefaultColor": false,
271
- "useDefaultStartDate": false,
272
- "useDefaultEndDate": false
273
- },
274
- {
275
- "name": "Repousses",
276
- "color": "#93824d",
277
- "duration": 1,
278
- "description": "",
279
- "startDate": "2024-10-01T00:00:00.000Z",
280
- "endDate": "2024-11-01T00:00:00.000Z",
281
- "id": "652c68a1-787c-4ad0-b152-dbb75e4bbdc6",
282
- "interventions": [],
283
- "attributes": [],
284
- "secondary_crop": true,
285
- "useDefaultColor": false,
286
- "useDefaultStartDate": false,
287
- "useDefaultEndDate": false
288
- },
289
- {
290
- "name": "Blé tendre",
291
- "color": "#edcc7d",
292
- "duration": 11,
293
- "description": "",
294
- "startDate": "2024-11-01T00:00:00.000Z",
295
- "endDate": "2025-10-01T00:00:00.000Z",
296
- "id": "d96f1c03-6ea3-4ae7-82cc-78134d77b72f",
297
- "interventions": [],
298
- "attributes": [],
299
- "secondary_crop": false,
300
- "useDefaultColor": false,
301
- "useDefaultStartDate": false,
302
- "useDefaultEndDate": false
303
- },
304
- {
305
- "name": "Couvert",
306
- "color": "#93c47d",
307
- "duration": 6,
308
- "description": "Couvert d'interculture longue pour casser le cycle des graminées",
309
- "attributes": [
310
- {
311
- "id": "da72ed56-d576-401c-a903-fce9379f7abf",
312
- "name": "Composition",
313
- "value": "trefle facscelie vesce, feverple,pois, lupin tournessol, avoine"
314
- },
315
- {
316
- "id": "38a1a1b1-aba3-45b3-8749-0ec34691e1d6",
317
- "name": "Destruction",
318
- "value": "rouleau faca + gel"
319
- },
320
- {
321
- "id": "e24a5039-3ad9-4ea5-9ffc-e94095365445",
322
- "name": "Densité",
323
- "value": "250 pieds/m²"
324
- }
325
- ],
326
- "startDate": "2025-10-01T00:00:00.000Z",
327
- "endDate": "2026-04-01T00:00:00.000Z",
328
- "id": "b5c1acee-8f8a-414a-9b85-20951e6eaecf",
329
- "interventions": [],
330
- "secondary_crop": true,
331
- "useDefaultColor": false,
332
- "useDefaultStartDate": false,
333
- "useDefaultEndDate": false
334
- },
335
- {
336
- "name": "Lin textile",
337
- "color": "#efefef",
338
- "duration": 7,
339
- "attributes": [
340
- {
341
- "id": "51137c9b-2fe3-48e6-9579-1e47b09b5453",
342
- "name": "Semis",
343
- "value": "Mars"
344
- },
345
- {
346
- "id": "e22c97e2-e9d2-4584-9e33-d8cb90588b8c",
347
- "name": "Type de semoir",
348
- "value": "semoir à disques"
349
- },
350
- {
351
- "id": "dd9db2a6-0b85-4627-b12b-806f16cef6fc",
352
- "name": "Note",
353
- "value": "Très sensible à la compaction donc éloigné le plus possible de la récolte de betterave"
354
- },
355
- {
356
- "id": "473c635d-f856-452f-8ef0-e8f67389bbfc",
357
- "name": "Autre",
358
- "value": "Apport de BRF après lin, environ 10t/ha"
359
- }
360
- ],
361
- "startDate": "2026-04-01T00:00:00.000Z",
362
- "endDate": "2026-11-01T00:00:00.000Z",
363
- "id": "30496b74-b81b-4636-a1f3-208b0e90b469",
364
- "description": "",
365
- "interventions": [],
366
- "secondary_crop": false,
367
- "useDefaultColor": false,
368
- "useDefaultStartDate": false,
369
- "useDefaultEndDate": false
370
- },
371
- {
372
- "name": "Blé tendre",
373
- "color": "#edcc7d",
374
- "duration": 11,
375
- "description": "",
376
- "startDate": "2026-11-01T00:00:00.000Z",
377
- "endDate": "2027-10-01T00:00:00.000Z",
378
- "id": "54d56392-7a3f-4d45-a586-7b1981981258",
379
- "interventions": [],
380
- "attributes": [],
381
- "secondary_crop": false,
382
- "useDefaultColor": false,
383
- "useDefaultStartDate": false,
384
- "useDefaultEndDate": false
385
- },
386
- {
387
- "name": "Couvert",
388
- "color": "#93c47d",
389
- "duration": 5,
390
- "description": "Couvert d'interculture court",
391
- "attributes": [
392
- {
393
- "id": "35896a2e-67ec-4780-a033-c33e591713c4",
394
- "name": "Date de semis",
395
- "value": "28/09 ou plus tôt"
396
- },
397
- {
398
- "id": "dc51f9bf-cef3-4111-897f-2948d6019166",
399
- "name": "Composition",
400
- "value": "avoine/pois/feverole/vesce/fascelie/radis/lupin/tournessol"
401
- },
402
- {
403
- "id": "b1594cd2-f2a9-481d-aa8f-ca50aa216a1c",
404
- "name": "Densité",
405
- "value": "85 kg/ha"
406
- },
407
- {
408
- "id": "ab9ab489-e3e0-4122-aec4-3951dd610c4e",
409
- "name": "Destruction",
410
- "value": "26/01"
411
- },
412
- {
413
- "id": "d8ab1a7d-3b1b-4b85-8df2-619ae6e6f895",
414
- "name": "Reliquats azotés",
415
- "value": "apporteront entre 20 et 40 u d'azote mobilisable"
416
- }
417
- ],
418
- "startDate": "2027-10-01T00:00:00.000Z",
419
- "endDate": "2028-02-25T00:00:00.000Z",
420
- "id": "62769f03-15cf-4f7b-9f32-3b3052b3af8c",
421
- "interventions": [],
422
- "secondary_crop": true,
423
- "useDefaultColor": false,
424
- "useDefaultStartDate": false,
425
- "useDefaultEndDate": false
426
- }
427
- ]
428
- }
2
+ "title": "Une rotation de test",
3
+ "options": {
4
+ "view": "horizontal",
5
+ "show_transcript": true,
6
+ "title_top_interventions": "Cultures principales",
7
+ "title_bottom_interventions": "Couverts et CIVE",
8
+ "title_steps": "Rotation",
9
+ "region": "France"
10
+ },
11
+ "steps": [
12
+ {
13
+ "startDate": "2026-03-01T00:00:00.000Z",
14
+ "id": "643172d1-dc20-4289-b346-3c68daa3ace0",
15
+ "name": "Orge + Lupin",
16
+ "color": "#d2b48c",
17
+ "endDate": "2026-07-20T00:00:00.000Z",
18
+ "description": "Lupin (350 kg/ha) + Orge (50 kg/ha) dans la ligne de semis après un labour\nRendement orge : 14,25 qx/ha\nRendement lupin : 10,25 qx/ha\n\nLe couvert luzerne/trèfle est semé à la volée avec le combiné.\n\nPas de desherbage en dehors du labour.\n\nAprès moisson, les pailles sont laissées au sol pour restitution de MO.\n\nLupin vendu pour l'alimentation animale ou la production de steaks végétaux",
19
+ "interventions": [
20
+ {
21
+ "id": "a19ccf22-4478-44f0-b81b-da6df534875f",
22
+ "day": "-5",
23
+ "name": "Labour",
24
+ "type": "intervention_top",
25
+ "description": ""
26
+ },
27
+ {
28
+ "id": "d500f562-5e3f-4713-95fd-97a5d4800e77",
29
+ "day": "141",
30
+ "name": "Fauche, andainage puis récolte",
31
+ "type": "intervention_top",
32
+ "description": "Récolte avec broyage des pailles une semaine après la fauche. Les pailles sont laissées au sol."
33
+ },
34
+ {
35
+ "id": "6a1260ae-3a38-4c3c-80df-03641d380ad8",
36
+ "day": "0",
37
+ "name": "Digestat solide",
38
+ "type": "intervention_top",
39
+ "description": "Epandage de digestat solide 7T/ha en Fevrier dans le couvert de phacélie "
40
+ }
41
+ ],
42
+ "attributes": [
43
+ {
44
+ "id": "0c99eef1-d1ae-4036-8c59-f5ebc079ff50",
45
+ "name": "Travail du sol",
46
+ "value": "Labour"
47
+ },
48
+ {
49
+ "id": "43ea0119-7c51-450a-9f75-2258d5c5c5cb",
50
+ "name": "Type de semoir",
51
+ "value": "Combiné "
52
+ }
53
+ ],
54
+ "secondary_crop": false,
55
+ "useDefaultColor": false,
56
+ "useDefaultStartDate": false,
57
+ "useDefaultEndDate": false,
58
+ "duration": 5
59
+ },
60
+ {
61
+ "startDate": "2026-07-20T00:00:00.000Z",
62
+ "id": "629cee3c-adc1-4369-abb6-6b59e2700403",
63
+ "name": "Luzerne + trèfle violet et blanc",
64
+ "color": "#2d9f6e",
65
+ "endDate": "2028-10-15T00:00:00.000Z",
66
+ "description": "Semis à la volée avec le combiné :\n* Luzerne à 25kg/ha\n* Trèfle violet à 3,5kg/ha\n* Trèfle blanc à 1,5kg/ha\n\nRendement luzerne : 12 tMS/ha\n\nPremière coupe pour la métha, les trois coupes suivantes pour deshyouest, la 5ème, pour un voisin bio en enrubannage",
67
+ "interventions": [
68
+ {
69
+ "id": "0bc21d1a-39f2-4998-85b4-cd0b2d8fbc70",
70
+ "day": "818",
71
+ "name": "Destruction au combiné au moment d'implanter la CIVE",
72
+ "type": "intervention_bottom",
73
+ "description": ""
74
+ },
75
+ {
76
+ "id": "34582b28-570c-4dbf-abc2-431e70af84b5",
77
+ "day": "299",
78
+ "name": "Digestat",
79
+ "type": "intervention_bottom",
80
+ "description": "Epandage de digestat 20m³/ha"
81
+ },
82
+ {
83
+ "id": "1e4dfb92-c8b7-4f57-b025-aeb137e6071b",
84
+ "day": "238",
85
+ "name": "Engrais potassique",
86
+ "type": "intervention_bottom",
87
+ "description": "Epandage de 200kg/ha de chlorure de potassium"
88
+ },
89
+ {
90
+ "id": "06db4688-f1bb-4fb3-852b-11cd26a07a26",
91
+ "day": "-141",
92
+ "name": "Semis associé",
93
+ "type": "intervention_bottom",
94
+ "description": "Semis associé de la luzerne à la volée"
95
+ },
96
+ {
97
+ "id": "95a56654-720c-48d0-b0b0-a91656269b5b",
98
+ "day": "665",
99
+ "name": "Digestat",
100
+ "type": "intervention_bottom",
101
+ "description": "Epandage de digestat 20m³/ha"
102
+ },
103
+ {
104
+ "id": "d22502cb-dbed-4b1e-be27-a22be58d3350",
105
+ "day": "604",
106
+ "name": "Engrais potassique",
107
+ "type": "intervention_bottom",
108
+ "description": "Epandage de 200kg/ha de chlorure de potassium"
109
+ }
110
+ ],
111
+ "attributes": [
112
+ {
113
+ "id": "0d43317d-83ed-43b3-8539-6e4fe1f9a35a",
114
+ "name": "Rendement",
115
+ "value": "12TMS/ha au total sur les 3 ans"
116
+ }
117
+ ],
118
+ "secondary_crop": false,
119
+ "useDefaultColor": false,
120
+ "useDefaultStartDate": false,
121
+ "useDefaultEndDate": false,
122
+ "duration": 27
123
+ },
124
+ {
125
+ "startDate": "2028-10-15T00:00:00.000Z",
126
+ "id": "41d05d65-573b-4537-a7a8-67237c3f717f",
127
+ "name": "CIVE (Triticale)",
128
+ "color": "#d2b48c",
129
+ "endDate": "2029-04-15T00:00:00.000Z",
130
+ "description": "Semis à 100kg/ha, au combiné :\n* Cultivateur à l'avant\n* A l'arrière, fissurateur à 15cm de profondeur\n* Herse rotative\n* Ligne de semis\n",
131
+ "interventions": [
132
+ {
133
+ "id": "8ba599cc-7baf-4631-ba35-3d5738ae88f9",
134
+ "day": "182",
135
+ "name": "Ensilage",
136
+ "type": "intervention_bottom",
137
+ "description": ""
138
+ },
139
+ {
140
+ "id": "77ffacaa-06ae-47de-95bb-44e9244130cb",
141
+ "day": "123",
142
+ "name": "Digestat liquide",
143
+ "type": "intervention_bottom",
144
+ "description": "Epandage de digestat liquide, 20m³/ha en février, si possible au sans tonne"
145
+ }
146
+ ],
147
+ "attributes": [],
148
+ "secondary_crop": true,
149
+ "useDefaultColor": false,
150
+ "useDefaultStartDate": false,
151
+ "useDefaultEndDate": false,
152
+ "duration": 6
153
+ },
154
+ {
155
+ "startDate": "2029-05-10T00:00:00.000Z",
156
+ "id": "152ab61e-6144-4329-a526-4f84ccbb1403",
157
+ "name": "Quinoa",
158
+ "color": "#d9c9b6",
159
+ "endDate": "2029-09-15T00:00:00.000Z",
160
+ "description": "Rendement : 1,2 t/ha\n\nLabour avant le semis, éventuellement un vibro ou rouleau si le sol est séchant.\n\nSemis à 10kg/ha (au combiné) en monograine en 50cm d'écartement",
161
+ "interventions": [
162
+ {
163
+ "id": "914dd600-a144-4ff9-ae9a-31f7bcadff0a",
164
+ "day": "-5",
165
+ "name": "Labour",
166
+ "type": "intervention_top",
167
+ "description": ""
168
+ },
169
+ {
170
+ "id": "678fd84d-d8d3-438a-90de-e3ec8d5ba103",
171
+ "day": "0",
172
+ "name": "Digestat liquide",
173
+ "type": "intervention_top",
174
+ "description": "Epandage de digestat à l’enfouisseur - 20m3/ha"
175
+ },
176
+ {
177
+ "id": "6d9f1d60-1dd2-4d2e-821c-d83fc6992bc1",
178
+ "day": "15",
179
+ "name": "Binage x 2",
180
+ "type": "intervention_top",
181
+ "description": "Binage et semis du trèfle à la volée avec le deuxième"
182
+ }
183
+ ],
184
+ "attributes": [],
185
+ "secondary_crop": false,
186
+ "useDefaultColor": false,
187
+ "useDefaultStartDate": false,
188
+ "useDefaultEndDate": false,
189
+ "duration": 4
190
+ },
191
+ {
192
+ "startDate": "2029-06-01T00:00:00.000Z",
193
+ "id": "280b19da-2b5b-4f9a-8c40-14e5c6e0a67e",
194
+ "name": "Trèfle blanc",
195
+ "color": "#d6d6d6",
196
+ "endDate": "2029-11-15T00:00:00.000Z",
197
+ "description": "Semis à la volé lors du dernier binage du quinoa",
198
+ "interventions": [],
199
+ "attributes": [
200
+ {
201
+ "id": "7b539f34-6e87-43dd-93af-33fb64714622",
202
+ "name": "Pré-semis",
203
+ "value": ""
204
+ },
205
+ {
206
+ "id": "5d9c75e4-b644-4c6e-be43-dc744b47177d",
207
+ "name": "Travail du sol",
208
+ "value": ""
209
+ },
210
+ {
211
+ "id": "84381b4c-1eee-49e1-8436-07a0185dc932",
212
+ "name": "Type de semoir",
213
+ "value": " "
214
+ },
215
+ {
216
+ "id": "d56a1730-7946-45d8-9808-c12d11056978",
217
+ "name": "Date des semis",
218
+ "value": ""
219
+ }
220
+ ],
221
+ "secondary_crop": true,
222
+ "useDefaultColor": false,
223
+ "useDefaultStartDate": false,
224
+ "useDefaultEndDate": false,
225
+ "duration": 6
226
+ },
227
+ {
228
+ "startDate": "2029-11-15T00:00:00.000Z",
229
+ "id": "f7555748-66a9-456e-a6d8-b0d513bdcebf",
230
+ "name": "Blé + féverole",
231
+ "color": "#d2b48c",
232
+ "endDate": "2030-07-15T00:00:00.000Z",
233
+ "description": "Rendement blé : 36 qx/ha\nRendement féverole : 10 qx/ha\n\nSemis du blé féverole en novembre en labour et combiné herse-semis avec une volonté d’implanter au moins 450grains m2 en blé",
234
+ "interventions": [
235
+ {
236
+ "id": "eb4e67da-cc91-463c-bfed-1f645b221e14",
237
+ "day": "-5",
238
+ "name": "Labour",
239
+ "type": "intervention_top",
240
+ "description": ""
241
+ },
242
+ {
243
+ "id": "74135ecd-fb8d-48b2-842b-82a73918b911",
244
+ "day": "97",
245
+ "name": "Digestat liquide",
246
+ "type": "intervention_top",
247
+ "description": "Epandage de digestat liquide, 25m3/ha, février ou mars au pendillard, si possible au sans tonne."
248
+ },
249
+ {
250
+ "id": "eeefe0b8-3df8-41f7-808b-f3bf3b21ba66",
251
+ "day": "120",
252
+ "name": "Herse étrille",
253
+ "type": "intervention_top",
254
+ "description": "2 à 3 passage de herse étrille début de printemps, dont 1 fois en double passage rapprochés.\n"
255
+ },
256
+ {
257
+ "id": "897dce25-1861-41ea-ad1c-94b392a23819",
258
+ "day": "151",
259
+ "name": "Herse étrille",
260
+ "type": "intervention_top",
261
+ "description": "2 à 3 passage de herse étrille début de printemps, dont 1 fois en double passage rapprochés."
262
+ },
263
+ {
264
+ "id": "63960469-ba64-4bac-946e-a91713e4abaa",
265
+ "day": "242",
266
+ "name": "Moisson en mode fauchage andainage",
267
+ "type": "intervention_top",
268
+ "description": "Moisson en mode fauchage andainage et caisson de récupération de menue paille sur la moissonneuse, la paille est utilisé pour les animaux"
269
+ }
270
+ ],
271
+ "attributes": [],
272
+ "secondary_crop": false,
273
+ "useDefaultColor": false,
274
+ "useDefaultStartDate": false,
275
+ "useDefaultEndDate": false,
276
+ "duration": 8
277
+ },
278
+ {
279
+ "startDate": "2030-08-15T00:00:00.000Z",
280
+ "id": "96e96402-cfd8-4258-9eb6-6a95931401c9",
281
+ "name": "Colza + sarrasin",
282
+ "color": "#ffd700",
283
+ "endDate": "2031-06-15T00:00:00.000Z",
284
+ "description": "Rendement colza : 31 qx/ha\n\nSemis associé avec du colza (1,5kg) + sarazin (12kg/ha) et repousse de feverole du précédent \nFauchage du colza vers le 15 juin et récolte 10jours plus tard (30 qtx / ha → huile et tourteaux).",
285
+ "interventions": [
286
+ {
287
+ "id": "89278701-996c-4bb6-8f55-b7241e496b5a",
288
+ "day": "-5",
289
+ "name": "Déchaumage",
290
+ "type": "intervention_top",
291
+ "description": ""
292
+ },
293
+ {
294
+ "id": "3f0f4eb5-81e4-45d3-90d3-b90178023ae8",
295
+ "day": "0",
296
+ "name": "Epandage digestat",
297
+ "type": "intervention_top",
298
+ "description": "Epandage digestat solide et liquide"
299
+ },
300
+ {
301
+ "id": "58098fe1-cadc-4373-9596-f665ab4eeef5",
302
+ "day": "0",
303
+ "name": "Labour",
304
+ "type": "intervention_top",
305
+ "description": ""
306
+ },
307
+ {
308
+ "id": "39cc86a2-3bba-4c00-a660-b12f621740ef",
309
+ "day": "304",
310
+ "name": "Fauchage andainage",
311
+ "type": "intervention_top",
312
+ "description": "Fauchage du colza vers le 15 juin et récolte 10jours plus tard"
313
+ }
314
+ ],
315
+ "attributes": [
316
+ {
317
+ "id": "bfb2d89b-78a3-4e95-941c-d0247701df72",
318
+ "name": "Préparation du sol",
319
+ "value": "Rouleau, combiné de semis, rouleau "
320
+ },
321
+ {
322
+ "id": "3e64f52f-5966-4d51-8c5f-77dd6d719be1",
323
+ "name": "Rendements",
324
+ "value": "Dans les 30 qtx / ha → huile et tourteaux"
325
+ }
326
+ ],
327
+ "secondary_crop": false,
328
+ "useDefaultColor": false,
329
+ "useDefaultStartDate": false,
330
+ "useDefaultEndDate": false,
331
+ "duration": 10
332
+ },
333
+ {
334
+ "startDate": "2031-06-15T00:00:00.000Z",
335
+ "id": "747689c2-629d-4c32-8644-7f4e85f98249",
336
+ "name": "Ray-grass italien + trèfle",
337
+ "color": "#4caf50",
338
+ "endDate": "2032-04-15T00:00:00.000Z",
339
+ "description": "Semis rapide de RGI/Trèfle (avec repousses de colza) 2 broyages sur fin été et automne pour apporter de la matière verte au sol",
340
+ "interventions": [
341
+ {
342
+ "id": "29ead1e6-9a41-4d04-8d61-f94a010bdc20",
343
+ "day": "76",
344
+ "name": "Broyages x 2",
345
+ "type": "intervention_bottom",
346
+ "description": "2 broyages sur fin été et automne pour apporter de la matière verte au sol"
347
+ },
348
+ {
349
+ "id": "3fffb7f4-e689-4f25-b361-5b0f6051b055",
350
+ "day": "291",
351
+ "name": "Enrubannage",
352
+ "type": "intervention_bottom",
353
+ "description": "Enrubannage de la dérobé RGI/trèfle début avril"
354
+ }
355
+ ],
356
+ "attributes": [],
357
+ "secondary_crop": true,
358
+ "useDefaultColor": false,
359
+ "useDefaultStartDate": false,
360
+ "useDefaultEndDate": false,
361
+ "duration": 10
362
+ },
363
+ {
364
+ "startDate": "2032-05-10T00:00:00.000Z",
365
+ "id": "e97af74c-23a8-4b28-bd11-03c281610950",
366
+ "name": "Maïs",
367
+ "color": "#ffd700",
368
+ "endDate": "2032-09-15T00:00:00.000Z",
369
+ "description": "Rendement : 65 qx/ha\n\nEpandage digestat liquide 35m3/ha à l’enfouisseur, labour et semis maïs au combiné en 50cm vers le 10 mai.\n\nNormalement un mois après le semis, en 50cm l'interrang est recouvert.",
370
+ "interventions": [
371
+ {
372
+ "id": "369f45b4-1dcb-4d12-952b-5c78f6defd75",
373
+ "day": "-5",
374
+ "name": "Digestat liquide",
375
+ "type": "intervention_top",
376
+ "description": "Epandage digestat liquide 35m³/ha à l’enfouisseur"
377
+ },
378
+ {
379
+ "id": "f2d625e1-7209-4f16-8c84-2f582141d139",
380
+ "day": "0",
381
+ "name": "Labour",
382
+ "type": "intervention_top",
383
+ "description": ""
384
+ },
385
+ {
386
+ "id": "471f0cb0-1825-46b9-b41e-b200bd3619d8",
387
+ "day": "5",
388
+ "name": "Herse étrille",
389
+ "type": "intervention_top",
390
+ "description": ""
391
+ },
392
+ {
393
+ "id": "e5cc4204-a7cf-499e-bc93-66a19a074b3d",
394
+ "day": "14",
395
+ "name": "Houe rotative",
396
+ "type": "intervention_top",
397
+ "description": "Houe rotative 7 à 10 jours après la herse étrille,\n"
398
+ },
399
+ {
400
+ "id": "1bdac4b9-00b8-4705-907e-90d59e64488d",
401
+ "day": "21",
402
+ "name": "Binage",
403
+ "type": "intervention_top",
404
+ "description": ""
405
+ },
406
+ {
407
+ "id": "2d82070a-1d26-45c0-b44e-b797e8b1d4a1",
408
+ "day": "28",
409
+ "name": "Binage",
410
+ "type": "intervention_top",
411
+ "description": ""
412
+ }
413
+ ],
414
+ "attributes": [
415
+ {
416
+ "id": "375adb43-520d-4021-8c20-9cc13fc6e23d",
417
+ "name": "Récolte",
418
+ "value": "Récolte en maïs épis pour des éleveur Bio, en octobre pour laisser la matière organique au sol."
419
+ }
420
+ ],
421
+ "secondary_crop": false,
422
+ "useDefaultColor": false,
423
+ "useDefaultStartDate": false,
424
+ "useDefaultEndDate": false,
425
+ "duration": 4
426
+ },
427
+ {
428
+ "startDate": "2032-09-15T00:00:00.000Z",
429
+ "id": "c3e83e9e-6258-45f6-887a-52378375635b",
430
+ "name": "Phacélie ",
431
+ "color": "#a7c6ed",
432
+ "endDate": "2033-05-15T00:00:00.000Z",
433
+ "description": "Semis rapide d'un couvert de phacélie à 10/12kg/ha",
434
+ "interventions": [],
435
+ "attributes": [],
436
+ "secondary_crop": true,
437
+ "useDefaultColor": false,
438
+ "useDefaultStartDate": false,
439
+ "useDefaultEndDate": false,
440
+ "duration": 8
441
+ }
442
+ ]
443
+ }