import { dataBuilder } from "@helpers/datas/dataBuilder"; import { lorem } from "@helpers/ui/lipsum"; import { get_random_location } from "@mocks/location.mock"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { get_random_object, type objectParameters, sampleObject, } from "@mocks/object.mock"; import { type Object_3DObject, RDFTYPE_3D_OBJECT, RDFTYPE_OBJECT, } from "@src/rdf"; export const sample3DObject: Object_3DObject = { ...sampleObject, "@type": [RDFTYPE_OBJECT, RDFTYPE_3D_OBJECT], keywords: Array.from( { length: Math.floor(Math.random() * 5) }, get_random_namedResource ), categories: Array.from( { length: Math.floor(Math.random() * 2) }, get_random_namedResource ), time_period: "2024", country: "Australia", location: get_random_location(), actual_representation: "Sample", format: get_random_namedResource(), file_size: "Sample", year: 2024, texture: "Sample", texture_formats: "Sample", texture_resolution: "Sample", is_low_polygons: false, polygons: 0, ai: true, allow_ai: true, prices: "Sample", rights_holder: "Sample", creator: "Sample", }; export const get_random_3DObject = ( parameters: objectParameters = {} ): Object_3DObject => { const removables: string[] = []; const replacements: Object_3DObject = { ...get_random_object(parameters), "@type": [RDFTYPE_OBJECT, RDFTYPE_3D_OBJECT], keywords: Array.from( { length: Math.floor(Math.random() * 5) }, get_random_namedResource ), categories: Array.from( { length: Math.floor(Math.random() * 2) }, get_random_namedResource ), time_period: String( new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).getFullYear() ), country: lorem.generateWords(1), location: get_random_location(), actual_representation: lorem.generateWords(1), format: get_random_namedResource(), file_size: lorem.generateWords(1), year: new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).getFullYear(), texture: lorem.generateWords(1), texture_formats: lorem.generateWords(1), texture_resolution: lorem.generateWords(1), is_low_polygons: Math.random() < 0.5, polygons: Math.floor(Math.random() * 10000), ai: Math.random() < 0.5, allow_ai: Math.random() < 0.5, prices: lorem.generateWords(1), rights_holder: lorem.generateWords(1), creator: lorem.generateWords(1), }; if (parameters.allowRemovables) { const removableGenerator = (key: string) => { // Between 0 and 25% chance if (Math.random() < Math.random() * 0.25) { removables.push(key); } }; removableGenerator("keywords"); removableGenerator("categories"); removableGenerator("time_period"); removableGenerator("country"); removableGenerator("location"); removableGenerator("actual_representation"); removableGenerator("format"); removableGenerator("file_size"); removableGenerator("year"); removableGenerator("texture"); removableGenerator("texture_formats"); removableGenerator("texture_resolution"); removableGenerator("is_low_polygons"); removableGenerator("polygons"); removableGenerator("ai"); removableGenerator("allow_ai"); removableGenerator("prices"); removableGenerator("rights_holder"); removableGenerator("creator"); } return dataBuilder( sample3DObject, removables, replacements, true ) as Object_3DObject; };