Public
Edited
Mar 10, 2023
Insert cell
Insert cell
paddockManagers = [
{ id: 1, taxNumber: '132254524', name: 'JUAN TAPIA BURGOS'},
{ id: 2, taxNumber: '143618668', name: 'EFRAIN SOTO VERA'},
{ id: 3, taxNumber: '78903228', name: 'CARLOS PEREZ GONZALEZ'},
{ id: 4, taxNumber: '176812737', name: 'ANDRES VIÑALES CIENFUEGOS'},
{ id: 5, taxNumber: '216352696', name: 'OSCAR PEREZ ZUÑIGA'},
{ id: 6, taxNumber: '78684747', name: 'JOAQUIN ANDRADE SANDOVAL' }
];

Insert cell
paddockType = [
{ id: 1, name: 'PALTOS' },
{ id: 2, name: 'AVELLANOS' },
{ id: 3, name: 'CEREZAS' },
{ id: 4, name: 'NOGALES' },
]

Insert cell
paddocks = [
{ paddockManagerId: 6, farmId: 1, paddockTypeId: 1, harvestYear: 2019, area: 1200 },
{ paddockManagerId: 1, farmId: 3, paddockTypeId: 4, harvestYear: 2019, area: 500 },
{ paddockManagerId: 5, farmId: 3, paddockTypeId: 2, harvestYear: 2020, area: 20000 },
{ paddockManagerId: 2, farmId: 2, paddockTypeId: 3, harvestYear: 2021, area: 8401},
{ paddockManagerId: 3, farmId: 1, paddockTypeId: 1, harvestYear: 2020, area: 2877 },
{ paddockManagerId: 5, farmId: 2, paddockTypeId: 2, harvestYear: 2017, area: 15902 },
{ paddockManagerId: 3, farmId: 3, paddockTypeId: 2, harvestYear: 2018, area: 1736 },
{ paddockManagerId: 2, farmId: 3, paddockTypeId: 3, harvestYear: 2020, area: 2965 },
{ paddockManagerId: 4, farmId: 3, paddockTypeId: 4, harvestYear: 2018, area: 1651 },
{ paddockManagerId: 5, farmId: 1, paddockTypeId: 1, harvestYear: 2018, area: 700 },
{ paddockManagerId: 1, farmId: 2, paddockTypeId: 1, harvestYear: 2019, area: 7956 },
{ paddockManagerId: 5, farmId: 3, paddockTypeId: 2, harvestYear: 2020, area: 3745 },
{ paddockManagerId: 6, farmId: 1, paddockTypeId: 3, harvestYear: 2021, area: 11362 },
{ paddockManagerId: 2, farmId: 3, paddockTypeId: 3, harvestYear: 2021, area: 300 },
{ paddockManagerId: 3, farmId: 2, paddockTypeId: 2, harvestYear: 2020, area: 19188 },
{ paddockManagerId: 3, farmId: 1, paddockTypeId: 1, harvestYear: 2019, area: 17137 },
{ paddockManagerId: 4, farmId: 3, paddockTypeId: 2, harvestYear: 2020, area: 100 },
{ paddockManagerId: 2, farmId: 1, paddockTypeId: 3, harvestYear: 2019, area: 11845 },
{ paddockManagerId: 5, farmId: 2, paddockTypeId: 1, harvestYear: 2018, area: 15969 },
{ paddockManagerId: 1, farmId: 3, paddockTypeId: 1, harvestYear: 2029, area: 10420 },
{ paddockManagerId: 5, farmId: 2, paddockTypeId: 3, harvestYear: 2010, area: 3200 },
{ paddockManagerId: 6, farmId: 1, paddockTypeId: 2, harvestYear: 2012, area: 10587 },
{ paddockManagerId: 2, farmId: 2, paddockTypeId: 2, harvestYear: 2018, area: 16750 }
];

Insert cell
farms = [
{ id: 1, name: 'AGRICOLA SANTA ANA' },
{ id: 2, name: 'VINA SANTA PAULA' },
{ id: 3, name: 'FORESTAL Y AGRICOLA LO ENCINA' }
];

Insert cell
function listPaddockManagerIds() {
return paddockManagers.map((paddockManager) => paddockManager.id);
};

Insert cell
listPaddockManagerIds()
Insert cell
function listPaddockManagersByName() {
var map_rut = paddockManagers.sort((a, b) => a.name.localeCompare(b.name))
return map_rut.map((paddockManager => paddockManager.taxNumber))
}
Insert cell
listPaddockManagersByName()
Insert cell
paddocks
Insert cell
function sortPaddockTypeByTotalArea() {
//var reduce_by_type = Object.values(group_by_type).reduce((t, {value}) => t + value.area, 0)
//var reduce_by_type = group_by_type.reduce((a,b) => {return a.area + b.area})
var reduce_by_type = paddocks.reduce(function(acc, item) {let key = item.paddockTypeId;
if (!acc[key]) {
acc[key] = 0
}
acc[key] = acc[key] + item.area
return acc
},{})
var reduce_by_type_name = []
for (var i = 1; i<5; i++) {
var paddock = paddockType.find(function(paddock) {return paddock.id == i} )
var name = paddock.name
reduce_by_type_name.push({name : name, area : reduce_by_type[i]})
}
var reduce_by_type_name_sort = reduce_by_type_name.sort((p1, p2) => (p1.area < p2.area) ? 1 : (p1.area > p2.area) ? -1 : 0);
var type_sort = reduce_by_type_name_sort.map(d => d.name)
return type_sort
}

Insert cell
sortPaddockTypeByTotalArea()
Insert cell
function sortFarmManagerByAdminArea() {

var reduce_by_type = paddocks.reduce(function(acc, item) {let key = item.paddockManagerId;
if (!acc[key]) {
acc[key] = 0
}
acc[key] = acc[key] + item.area
return acc
},{})
var reduce_by_type_name = []
for (var i = 1; i<paddockManagers.length; i++) {
var paddock = paddockManagers.find(function(paddock) {return paddock.id == i} )
var name = paddock.name
reduce_by_type_name.push({name : name, area : reduce_by_type[i]})
}
var reduce_by_type_name_sort = reduce_by_type_name.sort((p1, p2) => (p1.area < p2.area) ? 1 : (p1.area > p2.area) ? -1 : 0);
var manager_sort = reduce_by_type_name_sort.map(d => d.name)
return manager_sort
}
Insert cell
sortFarmManagerByAdminArea()
Insert cell
function farmManagerNames() {
var farm_managers = {}
for (var i=0; i<farms.length; i++){
farm_managers[farms[i].id] = []
}
for (var j=0; j<paddocks.length; j++){
if (!(farm_managers[paddocks[j].farmId].includes(paddocks[j].paddockManagerId))){
farm_managers[paddocks[j].farmId].push(paddocks[j].paddockManagerId)
}
}
var farm_manager_name = {};
for(var k=1; k<Object.keys(farm_managers).length + 1 ;k++){
var array_id = farm_managers[k]
var array_name = []
for(var manager = 0; manager <array_id.length;manager++){
var manager_object = paddockManagers.find(function(paddock) {return paddock.id == array_id[manager]} )
var name = manager_object.name
array_name.push(name)
}
array_name.sort((a,b) => a.localeCompare(b))
var farm_name = farms.find(function(farm) {return farm.id == k} )
farm_manager_name[farm_name.name] = array_name
}
return farm_manager_name
}

Insert cell
farmManagerNames()
Insert cell
function biggestAvocadoFarms() {
var avocado_paddocks = paddocks.filter(d => (d.paddockTypeId == 1))
var reduce_by_farm = avocado_paddocks.reduce(function(acc, item) {let key = item.farmId;
if (!acc[key]) {
acc[key] = 0
}
acc[key] = acc[key] + item.area
return acc
},{})
var valid_farm = []
for (var i =1; i<Object.keys(reduce_by_farm).length;i++){
if (reduce_by_farm[i] > 20000){
valid_farm.push(i)
}
}
var valid_paddock = paddocks.filter(d => (valid_farm.includes(d.farmId)))
var reduce_by_farm2 = valid_paddock.reduce(function(acc, item) {let key = item.farmId;
if (!acc[key]) {
acc[key] = 0
}
acc[key] = acc[key] + item.area
return acc
},{})
var array_area = Object.values(reduce_by_farm2).sort((p1, p2) => (p1 < p2) ? 1 : (p1 > p2) ? -1 : 0)
return array_area
}

Insert cell
biggestAvocadoFarms()
Insert cell
function biggestCherriesManagers() {
var farm_paddocks = paddocks.filter(d => (d.farmId == 3) && (d.paddockTypeId == 2))
var reduce_by_manager = farm_paddocks.reduce(function(acc, item) {let key = item.paddockManagerId;
if (!acc[key]) {
acc[key] = 0
}
acc[key] = acc[key] + item.area
return acc
},{})
var valid_manager = []
for (var i =0; i<Object.keys(reduce_by_manager).length;i++){
if (reduce_by_manager[Object.keys(reduce_by_manager)[i]] > 1000){
valid_manager.push(Object.keys(reduce_by_manager)[i])
}
}
var manager_name = []
for (var j=0; j < valid_manager.length; j++){
var manager_object = paddockManagers.find(function(paddock) {return paddock.id == valid_manager[j]} )
manager_name.push(manager_object.name)
}
return manager_name.sort((a,b) => a.localeCompare(b))
}

Insert cell
biggestCherriesManagers()
Insert cell
function farmManagerPaddocks() {
var manager_fields_id = {}
for (var i =0; i < paddocks.length;i++){
if (!manager_fields_id[paddocks[i].paddockManagerId]){
manager_fields_id[paddocks[i].paddockManagerId] = []
}
if (!manager_fields_id[paddocks[i].paddockManagerId].includes(paddocks[i].farmId)){
manager_fields_id[paddocks[i].paddockManagerId].push(paddocks[i].farmId)
}
}

var manager_fields_names = {};
for(var k=1; k<Object.keys(manager_fields_id).length ;k++){
var farm_id = manager_fields_id[k]
var farms_names = []
for(var j = 0; j <farm_id.length; j++){
var farm_object = farms.find(function(paddock) {return paddock.id == farm_id[j]} )
var name = farm_object.name
farms_names.push(name)
}
var manager_object = paddockManagers.find(function(paddock) {return paddock.id == Object.keys(manager_fields_id)[k]} )
farms_names.sort((a,b) => a.localeCompare(b))
manager_fields_names[manager_object.name] = farms_names
}
return manager_fields_names
}

Insert cell
farmManagerPaddocks()
Insert cell
function paddocksManagers() {
var crop_name_manager_year = {}
for (var i=0; i < paddocks.length; i++){
var farm_name = paddockType.find(function(paddock) {return paddock.id == paddocks[i].paddockTypeId} )
var name = farm_name.name
var year = paddocks[i].harvestYear
var name_year = name.concat('-',year)
var manager_object = paddockManagers.find(function(paddock) {return paddock.id == paddocks[i].paddockManagerId} )
if (!crop_name_manager_year[name_year]){
crop_name_manager_year[name_year] = {}
}

crop_name_manager_year[name_year][manager_object.id] = manager_object.name
}
return crop_name_manager_year
}

Insert cell
paddocksManagers()
Insert cell
function newManagerRanking() {
const new_manager = { id: 7, taxNumber: '12345678', name: 'VALENTINA GUTIERREZ TOLEDO' }
paddockManagers.push(new_manager)
const new_paddock = { paddockManagerId: 7, farmId: 1, paddockTypeId: 4, harvestYear: 2017, area: 900 }
paddocks.push(new_paddock)
return sortFarmManagerByAdminArea()
}

Insert cell
newManagerRanking()
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more