This commit is contained in:
@@ -13,6 +13,8 @@ export type Project = {
|
||||
year: number;
|
||||
sector: ProjectSector;
|
||||
program?: ProjectProgram;
|
||||
/** Optional detail of what the project covered. */
|
||||
scope?: string;
|
||||
};
|
||||
|
||||
const government: Omit<Project, 'sector'>[] = [
|
||||
@@ -60,6 +62,8 @@ const government: Omit<Project, 'sector'>[] = [
|
||||
title: 'Pengembangan Aplikasi LDH',
|
||||
client: 'Badan Informasi Geospasial (BIG)',
|
||||
year: 2022,
|
||||
program: 'erp',
|
||||
scope: 'OpenERP Community: manajemen dokumen dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Perawatan Sistem Pelaporan Harga',
|
||||
@@ -183,6 +187,8 @@ const government: Omit<Project, 'sector'>[] = [
|
||||
title: 'Pengembangan Sistem Aplikasi Jaringan Informasi Dokumentasi Hukum',
|
||||
client: 'Badan Informasi Geospasial (BIG)',
|
||||
year: 2016,
|
||||
program: 'erp',
|
||||
scope: 'OpenERP Community: manajemen dokumen dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Verifikasi Pelaporan Harga Barang Pokok pada Sistem Pemantauan Pasar Kebutuhan Pokok (SP2KP)',
|
||||
@@ -199,7 +205,7 @@ const government: Omit<Project, 'sector'>[] = [
|
||||
{
|
||||
title: 'Pembuatan Software pada Kegiatan Penguatan Regional Climate Change Center',
|
||||
client: 'Badan Meteorologi Klimatologi dan Geofisika (BMKG)',
|
||||
year: 2025,
|
||||
year: 2015,
|
||||
},
|
||||
{
|
||||
title: 'Kajian Tata Kelola Teknologi Informasi BKPM TA 2014',
|
||||
@@ -223,6 +229,8 @@ const government: Omit<Project, 'sector'>[] = [
|
||||
title: 'Pembangunan Sistem Informasi Pelayanan Dokumen Hukum',
|
||||
client: 'Badan Informasi Geospasial (BIG)',
|
||||
year: 2014,
|
||||
program: 'erp',
|
||||
scope: 'OpenERP Community: manajemen dokumen dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Pendampingan Helpdesk Implementasi Sistem Pelayanan Informasi dan Perizinan Investasi Secara Elektronik (SPIPISE)',
|
||||
@@ -245,6 +253,8 @@ const government: Omit<Project, 'sector'>[] = [
|
||||
title: 'Pembangunan Aplikasi Jaringan Dokumentasi dan Informasi Hukum',
|
||||
client: 'Badan Informasi Geospasial (BIG)',
|
||||
year: 2012,
|
||||
program: 'erp',
|
||||
scope: 'OpenERP Community: manajemen dokumen dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Pengembangan Portal National Single Window for Investment (NSWI) untuk Mendukung SPIPISE BKPM',
|
||||
@@ -271,12 +281,24 @@ const privateSector: Omit<Project, 'sector'>[] = [
|
||||
client: 'Marawah Beach Club',
|
||||
year: 2022,
|
||||
program: 'erp',
|
||||
scope: 'Odoo Enterprise: POS, event, pembelian, penjualan, website, dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Enhancement Manajemen Sistem',
|
||||
client: 'PT Cipta Kridatama',
|
||||
year: 2022,
|
||||
},
|
||||
{
|
||||
title: 'Implementasi OpenERP Manufacturing System',
|
||||
client: 'CV Mujur Jaya Abadi',
|
||||
year: 2015,
|
||||
program: 'erp',
|
||||
scope: 'OpenERP Community: akunting, manufaktur, pembelian, penjualan, inventory, dan custom development',
|
||||
},
|
||||
{
|
||||
title: 'Pengembangan Reswara Integrated Management System',
|
||||
client: 'PT Reswara Minergi Hartama',
|
||||
year: 2013,
|
||||
},
|
||||
{
|
||||
title: 'Kegiatan Pengembangan dan Operasionalisasi Sistem Pemantauan Pasar Kebutuhan Pokok (SP2KP)',
|
||||
@@ -325,6 +347,7 @@ const privateSector: Omit<Project, 'sector'>[] = [
|
||||
title: 'Pengembangan Aplikasi Titis Sampurna Accounting Information System',
|
||||
client: 'PT Titis Sampurna',
|
||||
year: 2006,
|
||||
program: 'erp',
|
||||
},
|
||||
{
|
||||
title: 'Jasa Konsultasi Pengembangan Sistem Informasi Eksekutif Keuangan',
|
||||
@@ -372,22 +395,27 @@ const clientName = (project: Project) =>
|
||||
/** Number of distinct clients across all projects. */
|
||||
export const clientCount = new Set(projects.map(clientName)).size;
|
||||
|
||||
/** Distinct clients in a sector, most frequent first. */
|
||||
export const clientsInSector = (sector: ProjectSector) => {
|
||||
/** Distinct clients, most frequent first. */
|
||||
const rankClients = (items: Project[]) => {
|
||||
const counts = new Map<string, number>();
|
||||
|
||||
projects
|
||||
.filter((project) => project.sector === sector)
|
||||
.forEach((project) => {
|
||||
const name = clientName(project);
|
||||
counts.set(name, (counts.get(name) ?? 0) + 1);
|
||||
});
|
||||
items.forEach((project) => {
|
||||
const name = clientName(project);
|
||||
counts.set(name, (counts.get(name) ?? 0) + 1);
|
||||
});
|
||||
|
||||
return [...counts.entries()]
|
||||
.sort((a, b) => b[1] - a[1])
|
||||
.map(([name]) => name);
|
||||
};
|
||||
|
||||
export const clientsInSector = (sector: ProjectSector) =>
|
||||
rankClients(projects.filter((project) => project.sector === sector));
|
||||
|
||||
/** Clients with the most projects across every sector. */
|
||||
export const topClients = (limit: number) =>
|
||||
rankClients(projects).slice(0, limit);
|
||||
|
||||
export const projectsBySector = (sector: ProjectSector) =>
|
||||
projects.filter((project) => project.sector === sector);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user