feat(new tools): IES Guidelines and Illuminance converter
IES Guidelines searcher and Illuminance units converter Fix #1475
This commit is contained in:
		
							parent
							
								
									80e46c9292
								
							
						
					
					
						commit
						37693a57ec
					
				
							
								
								
									
										34
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -88,29 +88,19 @@ declare module '@vue/runtime-core' { | ||||
|     HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default'] | ||||
|     IbanValidatorAndParser: typeof import('./src/tools/iban-validator-and-parser/iban-validator-and-parser.vue')['default'] | ||||
|     'IconMdi:brushVariant': typeof import('~icons/mdi/brush-variant')['default'] | ||||
|     'IconMdi:contentCopy': typeof import('~icons/mdi/content-copy')['default'] | ||||
|     'IconMdi:kettleSteamOutline': typeof import('~icons/mdi/kettle-steam-outline')['default'] | ||||
|     IconMdiArrowDown: typeof import('~icons/mdi/arrow-down')['default'] | ||||
|     IconMdiArrowRight: typeof import('~icons/mdi/arrow-right')['default'] | ||||
|     IconMdiArrowRightBottom: typeof import('~icons/mdi/arrow-right-bottom')['default'] | ||||
|     IconMdiCamera: typeof import('~icons/mdi/camera')['default'] | ||||
|     IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default'] | ||||
|     IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] | ||||
|     IconMdiClose: typeof import('~icons/mdi/close')['default'] | ||||
|     IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default'] | ||||
|     IconMdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default'] | ||||
|     IconMdiDownload: typeof import('~icons/mdi/download')['default'] | ||||
|     IconMdiEye: typeof import('~icons/mdi/eye')['default'] | ||||
|     IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default'] | ||||
|     IconMdiHeart: typeof import('~icons/mdi/heart')['default'] | ||||
|     IconMdiPause: typeof import('~icons/mdi/pause')['default'] | ||||
|     IconMdiPlay: typeof import('~icons/mdi/play')['default'] | ||||
|     IconMdiRecord: typeof import('~icons/mdi/record')['default'] | ||||
|     IconMdiRefresh: typeof import('~icons/mdi/refresh')['default'] | ||||
|     IconMdiSearch: typeof import('~icons/mdi/search')['default'] | ||||
|     IconMdiTranslate: typeof import('~icons/mdi/translate')['default'] | ||||
|     IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default'] | ||||
|     IconMdiVideo: typeof import('~icons/mdi/video')['default'] | ||||
|     IesLightingGuidelines: typeof import('./src/tools/ies-lighting-guidelines/ies-lighting-guidelines.vue')['default'] | ||||
|     IlluminanceConverter: typeof import('./src/tools/illuminance-converter/illuminance-converter.vue')['default'] | ||||
|     InputCopyable: typeof import('./src/components/InputCopyable.vue')['default'] | ||||
|     IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default'] | ||||
|     Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default'] | ||||
| @ -137,42 +127,26 @@ declare module '@vue/runtime-core' { | ||||
|     MenuLayout: typeof import('./src/components/MenuLayout.vue')['default'] | ||||
|     MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default'] | ||||
|     MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default'] | ||||
|     NAlert: typeof import('naive-ui')['NAlert'] | ||||
|     NA: typeof import('naive-ui')['NA'] | ||||
|     NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] | ||||
|     NCheckbox: typeof import('naive-ui')['NCheckbox'] | ||||
|     NCode: typeof import('naive-ui')['NCode'] | ||||
|     NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] | ||||
|     NColorPicker: typeof import('naive-ui')['NColorPicker'] | ||||
|     NConfigProvider: typeof import('naive-ui')['NConfigProvider'] | ||||
|     NDatePicker: typeof import('naive-ui')['NDatePicker'] | ||||
|     NDivider: typeof import('naive-ui')['NDivider'] | ||||
|     NDynamicInput: typeof import('naive-ui')['NDynamicInput'] | ||||
|     NEllipsis: typeof import('naive-ui')['NEllipsis'] | ||||
|     NForm: typeof import('naive-ui')['NForm'] | ||||
|     NFormItem: typeof import('naive-ui')['NFormItem'] | ||||
|     NGi: typeof import('naive-ui')['NGi'] | ||||
|     NGrid: typeof import('naive-ui')['NGrid'] | ||||
|     NH1: typeof import('naive-ui')['NH1'] | ||||
|     NH2: typeof import('naive-ui')['NH2'] | ||||
|     NH3: typeof import('naive-ui')['NH3'] | ||||
|     NIcon: typeof import('naive-ui')['NIcon'] | ||||
|     NImage: typeof import('naive-ui')['NImage'] | ||||
|     NInputGroup: typeof import('naive-ui')['NInputGroup'] | ||||
|     NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel'] | ||||
|     NInputNumber: typeof import('naive-ui')['NInputNumber'] | ||||
|     NLayout: typeof import('naive-ui')['NLayout'] | ||||
|     NLayoutSider: typeof import('naive-ui')['NLayoutSider'] | ||||
|     NMenu: typeof import('naive-ui')['NMenu'] | ||||
|     NProgress: typeof import('naive-ui')['NProgress'] | ||||
|     NScrollbar: typeof import('naive-ui')['NScrollbar'] | ||||
|     NSlider: typeof import('naive-ui')['NSlider'] | ||||
|     NStatistic: typeof import('naive-ui')['NStatistic'] | ||||
|     NSwitch: typeof import('naive-ui')['NSwitch'] | ||||
|     NP: typeof import('naive-ui')['NP'] | ||||
|     NTable: typeof import('naive-ui')['NTable'] | ||||
|     NTag: typeof import('naive-ui')['NTag'] | ||||
|     NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default'] | ||||
|     NUpload: typeof import('naive-ui')['NUpload'] | ||||
|     NUploadDragger: typeof import('naive-ui')['NUploadDragger'] | ||||
|     OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default'] | ||||
|     PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default'] | ||||
|     PdfSignatureChecker: typeof import('./src/tools/pdf-signature-checker/pdf-signature-checker.vue')['default'] | ||||
|  | ||||
							
								
								
									
										21
									
								
								src/composable/debouncedref.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/composable/debouncedref.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| import _ from 'lodash'; | ||||
| 
 | ||||
| function useDebouncedRef<T>(initialValue: T, delay: number, immediate: boolean = false) { | ||||
|   const state = ref(initialValue); | ||||
|   const debouncedRef = customRef((track, trigger) => ({ | ||||
|     get() { | ||||
|       track(); | ||||
|       return state.value; | ||||
|     }, | ||||
|     set: _.debounce( | ||||
|       (value) => { | ||||
|         state.value = value; | ||||
|         trigger(); | ||||
|       }, | ||||
|       delay, | ||||
|       { leading: immediate }, | ||||
|     ), | ||||
|   })); | ||||
|   return debouncedRef; | ||||
| } | ||||
| export default useDebouncedRef; | ||||
							
								
								
									
										740
									
								
								src/tools/ies-lighting-guidelines/ies-lighting-data.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										740
									
								
								src/tools/ies-lighting-guidelines/ies-lighting-data.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,740 @@ | ||||
| [ | ||||
|   { | ||||
|     "industryType": "Airplane Manufacturing", | ||||
|     "industryApplication": "Drilling, riveting, screw fastening", | ||||
|     "footCandlesRange": "75", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Airplane Manufacturing", | ||||
|     "industryApplication": "Final assembly, hangar", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Airplane Manufacturing", | ||||
|     "industryApplication": "Inspection", | ||||
|     "footCandlesRange": "50-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Airplane Manufacturing", | ||||
|     "industryApplication": "Welding", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Assembly", | ||||
|     "industryApplication": "Rough easy seeing", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Assembly", | ||||
|     "industryApplication": "Rough difficult seeing", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Assembly", | ||||
|     "industryApplication": "Medium", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Auditoriums", | ||||
|     "industryApplication": "Social Activities", | ||||
|     "footCandlesRange": "05-oct", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Auditoriums", | ||||
|     "industryApplication": "Assembly Only", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Auditoriums", | ||||
|     "industryApplication": "Exhibitions", | ||||
|     "footCandlesRange": "15-25", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Automotive Manufacturing", | ||||
|     "industryApplication": "Frame Assembly", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Automotive Manufacturing", | ||||
|     "industryApplication": "Body & chassis assembly", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Automotive Manufacturing", | ||||
|     "industryApplication": "Body parts assembly", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Automotive Manufacturing", | ||||
|     "industryApplication": "Final Assembly, finishing, inspecting", | ||||
|     "footCandlesRange": "200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Banks", | ||||
|     "industryApplication": "Lobby General", | ||||
|     "footCandlesRange": "oct-50", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Banks", | ||||
|     "industryApplication": "Writing Areas", | ||||
|     "footCandlesRange": "20-70", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Banks", | ||||
|     "industryApplication": "Teller Stations, Posting & Keypunch", | ||||
|     "footCandlesRange": "50-150", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Barber Shop", | ||||
|     "industryApplication": "Beauty Parlors", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Chemical Works", | ||||
|     "industryApplication": "Chemical Works", | ||||
|     "footCandlesRange": "30", | ||||
|     "recommendedLighting": "Vapor Tight/Hazardous" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Clothing Manufacturer", | ||||
|     "industryApplication": "Receiving, storing, shipping, winding, measuring", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Clothing Manufacturer", | ||||
|     "industryApplication": "Pattern making, trimming", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Clothing Manufacturer", | ||||
|     "industryApplication": "Shops, Marking", | ||||
|     "footCandlesRange": "50-200", | ||||
|     "recommendedLighting": "Flat Panel/Troffer/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Clothing Manufacturer", | ||||
|     "industryApplication": "Cutting, Pressing", | ||||
|     "footCandlesRange": "100-500", | ||||
|     "recommendedLighting": "Flat Panel/Troffer/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Clothing Manufacturer", | ||||
|     "industryApplication": "Sewing, Inspection", | ||||
|     "footCandlesRange": "200-500", | ||||
|     "recommendedLighting": "Flat Panel/Troffer/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Electrical Equipment Manufacturing", | ||||
|     "industryApplication": "Impregnating", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Electrical Equipment Manufacturing", | ||||
|     "industryApplication": "Insulating coil winding, testing", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Food Service Facility", | ||||
|     "industryApplication": "Dining areas, cashier", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Troffer/Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Food Service Facility", | ||||
|     "industryApplication": "Cleaning", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Food Service Facility", | ||||
|     "industryApplication": "Dining", | ||||
|     "footCandlesRange": "mai-20", | ||||
|     "recommendedLighting": "Troffer/Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Food Service Facility", | ||||
|     "industryApplication": "Food Displays", | ||||
|     "footCandlesRange": "30-100", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Food Service Facility", | ||||
|     "industryApplication": "Kitchen", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "IP65 High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Annealing Furnaces", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Cleaning", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Core Making", | ||||
|     "footCandlesRange": "50-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Inspection Fine", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Inspection Medium", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Molding", | ||||
|     "footCandlesRange": "50-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Foundries", | ||||
|     "industryApplication": "Pouring, Sorting", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay/Hazardous" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Garages-Motor Vehicles", | ||||
|     "industryApplication": "Storage", | ||||
|     "footCandlesRange": "5", | ||||
|     "recommendedLighting": "Garage" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Garages-Motor Vehicles", | ||||
|     "industryApplication": "Parking Garage", | ||||
|     "footCandlesRange": "10", | ||||
|     "recommendedLighting": "Garage /.Strip" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Garages-Motor Vehicles", | ||||
|     "industryApplication": "Service Garage", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "Garage" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Garages-Motor Vehicles", | ||||
|     "industryApplication": "Entrances", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Garages-Motor Vehicles", | ||||
|     "industryApplication": "Repair Area", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Gymnasiums", | ||||
|     "industryApplication": "Assemblies", | ||||
|     "footCandlesRange": "10", | ||||
|     "recommendedLighting": "Flat Panel/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Gymnasiums", | ||||
|     "industryApplication": "General Exercise & Recreation", | ||||
|     "footCandlesRange": "30", | ||||
|     "recommendedLighting": "Flat Panel/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Gymnasiums", | ||||
|     "industryApplication": "Exhibitions, Matches", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "Flat Panel/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hospitals", | ||||
|     "industryApplication": "Rooms", | ||||
|     "footCandlesRange": "oct-30", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hospitals", | ||||
|     "industryApplication": "Corridors", | ||||
|     "footCandlesRange": "mai-30", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hospitals", | ||||
|     "industryApplication": "Emergency Rooms", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "NA" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hospitals", | ||||
|     "industryApplication": "Operating Rooms", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "NA" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Bathrooms", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Bedrooms for Reading", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "NA" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Corridors, elevators and stairs", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Front Desk", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Linen Room: Sewing", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Linen Room: General", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Lobby: General Lighting", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Hotels", | ||||
|     "industryApplication": "Lobby: Reading and working areas", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Recessed/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Stock, hot top, checker, cellar, calcining", | ||||
|     "footCandlesRange": "oct-30", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Building, slag pits, Stripping yard", | ||||
|     "footCandlesRange": "20", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Control platform, repairs, mixer building", | ||||
|     "footCandlesRange": "30", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Rolling mills", | ||||
|     "footCandlesRange": "30-50", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Shearing", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Tin Plate", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Motor Room, Machine Room", | ||||
|     "footCandlesRange": "30", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Iron & Steel Manufacturing", | ||||
|     "industryApplication": "Inspection", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "UFO/Hazardous/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Library", | ||||
|     "industryApplication": "Ordinary Reading, Stacks", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Library", | ||||
|     "industryApplication": "Book Repair and Binding", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Library", | ||||
|     "industryApplication": "Study & Notes, Cataloging", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Library", | ||||
|     "industryApplication": "Card Files, Check Desk", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "Troffer/Flat Panel" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Laundries", | ||||
|     "industryApplication": "Washing", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Laundries", | ||||
|     "industryApplication": "Ironing", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Machine Shops", | ||||
|     "industryApplication": "Rough Bench", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Machine Shops", | ||||
|     "industryApplication": "Medium Bench, Rough Grinding, Buffing", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Machine Shops", | ||||
|     "industryApplication": "Fine Bench and Work", | ||||
|     "footCandlesRange": "200-500", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Materials Handling", | ||||
|     "industryApplication": "Loading Trucking", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "High Bay/Temporary" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Materials Handling", | ||||
|     "industryApplication": "Picking Stock Classifying", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Materials Handling", | ||||
|     "industryApplication": "Wrapping, Packing, Labeling", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Accounting", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Audio-Visual Areas", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Conference Areas", | ||||
|     "footCandlesRange": "20-70", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Corridors, Stairways", | ||||
|     "footCandlesRange": "20", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Drafting", | ||||
|     "footCandlesRange": "50-200", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "General and Private Offices", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Lobbies, Lounges, & Reception Areas", | ||||
|     "footCandlesRange": "mai-20", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Mail Sorting", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Off-set printing & duplicating areas", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "Flat Panel/Troffer/High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Offices", | ||||
|     "industryApplication": "Spaces with VDT's", | ||||
|     "footCandlesRange": "75", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paint Shop", | ||||
|     "industryApplication": "Spraying, Rubbing", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paint Shop", | ||||
|     "industryApplication": "Hand Art, Stencil", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paint Shop", | ||||
|     "industryApplication": "Fine Hand Painting & Finishing", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paper Manufacturing", | ||||
|     "industryApplication": "Beaters, Grinding", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "UFO" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paper Manufacturing", | ||||
|     "industryApplication": "Finishing, Cutting", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "UFO" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paper Manufacturing", | ||||
|     "industryApplication": "Hand Counting", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "UFO" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paper Manufacturing", | ||||
|     "industryApplication": "Paper machine reel, Inspection", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "UFO" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Paper Manufacturing", | ||||
|     "industryApplication": "Rewinder", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "UFO" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Printing", | ||||
|     "industryApplication": "Welding", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Printing", | ||||
|     "industryApplication": "Color Inspecting", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Printing", | ||||
|     "industryApplication": "Presses", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Printing", | ||||
|     "industryApplication": "Proofreading", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Printing", | ||||
|     "industryApplication": "Composing Room", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Schools", | ||||
|     "industryApplication": "Reading", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Schools", | ||||
|     "industryApplication": "Typing", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Schools", | ||||
|     "industryApplication": "Demonstrations", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Schools", | ||||
|     "industryApplication": "Sewing", | ||||
|     "footCandlesRange": "20-100", | ||||
|     "recommendedLighting": "Flat Panel/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Sheet Metal Works", | ||||
|     "industryApplication": "General", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Sheet Metal Works", | ||||
|     "industryApplication": "Tin Plate Inspection", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Sheet Metal Works", | ||||
|     "industryApplication": "Galvanizing, Scribing", | ||||
|     "footCandlesRange": "100-200", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Stores", | ||||
|     "industryApplication": "Circulation Area Stockroom", | ||||
|     "footCandlesRange": "oct-30", | ||||
|     "recommendedLighting": "Recessed" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Stores", | ||||
|     "industryApplication": "Merchandising, Servicing", | ||||
|     "footCandlesRange": "30-100", | ||||
|     "recommendedLighting": "Recessed/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Stores", | ||||
|     "industryApplication": "Merchandising, Self-Servicing", | ||||
|     "footCandlesRange": "200", | ||||
|     "recommendedLighting": "Recessed/Troffer" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Textile Mills", | ||||
|     "industryApplication": "Cotton Picking, Carding, Roving, Spinning", | ||||
|     "footCandlesRange": "50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Textile Mills", | ||||
|     "industryApplication": "Beaming & Slashing", | ||||
|     "footCandlesRange": "150", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Textile Mills", | ||||
|     "industryApplication": "Drawing", | ||||
|     "footCandlesRange": "200", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Textile Mills", | ||||
|     "industryApplication": "Others", | ||||
|     "footCandlesRange": "100", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Warehouse & Storage", | ||||
|     "industryApplication": "Inactive", | ||||
|     "footCandlesRange": "05-oct", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Warehouse & Storage", | ||||
|     "industryApplication": "Active Rough Bulky", | ||||
|     "footCandlesRange": "oct-20", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Warehouse & Storage", | ||||
|     "industryApplication": "Active Medium", | ||||
|     "footCandlesRange": "20", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Warehouse & Storage", | ||||
|     "industryApplication": "Active Fine", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Welding", | ||||
|     "industryApplication": "General", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay/Flood" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Woodworking", | ||||
|     "industryApplication": "Sizing, planning, rough sanding, medium quality machine and bench work, gluing, veneering, cooperage", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay/Strip" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Woodworking", | ||||
|     "industryApplication": "Fine bench and machine work, fine sanding and finishing", | ||||
|     "footCandlesRange": "50-100", | ||||
|     "recommendedLighting": "High Bay/Strip" | ||||
|   }, | ||||
|   { | ||||
|     "industryType": "Woodworking", | ||||
|     "industryApplication": "Rough sawing and bench work", | ||||
|     "footCandlesRange": "20-50", | ||||
|     "recommendedLighting": "High Bay/Strip" | ||||
|   } | ||||
| ] | ||||
| @ -0,0 +1,84 @@ | ||||
| <script setup lang="ts"> | ||||
| import iesData from './ies-lighting-data.json'; | ||||
| import { useFuzzySearch } from '@/composable/fuzzySearch'; | ||||
| import useDebouncedRef from '@/composable/debouncedref'; | ||||
| 
 | ||||
| const data = iesData.map(i => ({ ...i, all: `${i.industryType} - ${i.industryApplication}` })); | ||||
| const searchQuery = useDebouncedRef('', 500); | ||||
| 
 | ||||
| const { searchResult } = useFuzzySearch({ | ||||
|   search: searchQuery, | ||||
|   data, | ||||
|   options: { | ||||
|     keys: ['all'], | ||||
|     threshold: 0.2, | ||||
|     isCaseSensitive: false, | ||||
|     minMatchCharLength: 3, | ||||
|     useExtendedSearch: true, | ||||
|     filterEmpty: false, | ||||
|   }, | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <div mx-auto max-w-2400px important:flex-1> | ||||
|     <div flex items-center gap-3> | ||||
|       <c-input-text | ||||
|         v-model:value="searchQuery" | ||||
|         placeholder="Search IES recommandation by industry or application" | ||||
|         mx-auto max-w-600px | ||||
|       > | ||||
|         <template #prefix> | ||||
|           <icon-mdi-search mr-6px color-black op-70 dark:color-white /> | ||||
|         </template> | ||||
|       </c-input-text> | ||||
|     </div> | ||||
| 
 | ||||
|     <n-p style="text-align: center"> | ||||
|       Individual applications will determine exact foot-candle levels. Please refer to the <n-a href="https://www.ies.org/standards/lighting-library/" target="_blank"> | ||||
|         IES Lighting Handbook | ||||
|       </n-a> for a more detailed evaluation | ||||
|     </n-p> | ||||
| 
 | ||||
|     <div> | ||||
|       <div | ||||
|         v-if="searchResult.length === 0" | ||||
| 
 | ||||
|         mt-4 text-center text-20px font-bold | ||||
|       > | ||||
|         No results | ||||
|       </div> | ||||
| 
 | ||||
|       <div v-else> | ||||
|         <div mt-4 text-20px font-bold> | ||||
|           Search result | ||||
|         </div> | ||||
| 
 | ||||
|         <n-table> | ||||
|           <thead> | ||||
|             <th>Industry</th> | ||||
|             <th>Application</th> | ||||
|             <th>Foot Candles</th> | ||||
|             <th>Lighting type</th> | ||||
|           </thead> | ||||
|           <tbody> | ||||
|             <tr v-for="(result, ix) in searchResult" :key="ix"> | ||||
|               <td> | ||||
|                 <input-copyable :value="result.industryType" /> | ||||
|               </td> | ||||
|               <td> | ||||
|                 <input-copyable :value="result.industryApplication" /> | ||||
|               </td> | ||||
|               <td> | ||||
|                 <input-copyable :value="result.footCandlesRange" /> | ||||
|               </td> | ||||
|               <td> | ||||
|                 <input-copyable :value="result.recommendedLighting" /> | ||||
|               </td> | ||||
|             </tr> | ||||
|           </tbody> | ||||
|         </n-table> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
							
								
								
									
										12
									
								
								src/tools/ies-lighting-guidelines/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/tools/ies-lighting-guidelines/index.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| import { BuildingLighthouse } from '@vicons/tabler'; | ||||
| import { defineTool } from '../tool'; | ||||
| 
 | ||||
| export const tool = defineTool({ | ||||
|   name: 'IES Lighting Guidelines', | ||||
|   path: '/ies-lighting-guidelines', | ||||
|   description: 'Search in the Illuminating Engineering Society’s (IES) current illuminance recommendations.', | ||||
|   keywords: ['ies', 'illuminance', 'lighting', 'guideline'], | ||||
|   component: () => import('./ies-lighting-guidelines.vue'), | ||||
|   icon: BuildingLighthouse, | ||||
|   createdAt: new Date('2025-02-09'), | ||||
| }); | ||||
| @ -0,0 +1,11 @@ | ||||
| export const convertNoxToLux = (illuminance: number) => illuminance * 0.001; | ||||
| export const convertLuxToNox = (illuminance: number) => illuminance * 1000; | ||||
| 
 | ||||
| export const convertFootCandlesToLux = (illuminance: number) => illuminance * 10.7639104167; | ||||
| export const convertLuxToFootCandles = (illuminance: number) => illuminance * 0.09290304; | ||||
| 
 | ||||
| export const convertFlameToLux = (illuminance: number) => illuminance * 43.0556416668; | ||||
| export const convertLuxToFlame = (illuminance: number) => illuminance * 0.02322576; | ||||
| 
 | ||||
| export const convertPhotToLux = (illuminance: number) => illuminance * 10000; | ||||
| export const convertLuxToPhot = (illuminance: number) => illuminance * 0.0001; | ||||
							
								
								
									
										84
									
								
								src/tools/illuminance-converter/illuminance-converter.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								src/tools/illuminance-converter/illuminance-converter.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,84 @@ | ||||
| <script setup lang="ts"> | ||||
| import _ from 'lodash'; | ||||
| import { convertFlameToLux, convertFootCandlesToLux, convertLuxToFlame, convertLuxToFootCandles, convertLuxToNox, convertLuxToPhot, convertNoxToLux, convertPhotToLux } from './illuminance-converter.service'; | ||||
| 
 | ||||
| type IlluminanceScale = 'lux' | 'footcandles' | 'nox' | 'phot' | 'flame'; | ||||
| 
 | ||||
| const units = reactive< | ||||
|   Record< | ||||
|     string | IlluminanceScale, | ||||
|     { title: string; unit: string; ref: number; toLux: (v: number) => number; fromLux: (v: number) => number } | ||||
|   > | ||||
|       >({ | ||||
|         lux: { | ||||
|           title: 'Lux', | ||||
|           unit: 'lx', | ||||
|           ref: 20000, | ||||
|           toLux: _.identity, | ||||
|           fromLux: _.identity, | ||||
|         }, | ||||
|         footcandles: { | ||||
|           title: 'Foot-Candles', | ||||
|           unit: 'ft*c, fc', | ||||
|           ref: 0, | ||||
|           toLux: convertFootCandlesToLux, | ||||
|           fromLux: convertLuxToFootCandles, | ||||
|         }, | ||||
|         nox: { | ||||
|           title: 'Nox', | ||||
|           unit: 'nox', | ||||
|           ref: 0, | ||||
|           toLux: convertNoxToLux, | ||||
|           fromLux: convertLuxToNox, | ||||
|         }, | ||||
|         phot: { | ||||
|           title: 'Phot', | ||||
|           unit: 'ph', | ||||
|           ref: 0, | ||||
|           toLux: convertPhotToLux, | ||||
|           fromLux: convertLuxToPhot, | ||||
|         }, | ||||
|         flame: { | ||||
|           title: 'Flame', | ||||
|           unit: 'flame', | ||||
|           ref: 0, | ||||
|           toLux: convertFlameToLux, | ||||
|           fromLux: convertLuxToFlame, | ||||
|         }, | ||||
|       }); | ||||
| 
 | ||||
| function update(key: IlluminanceScale) { | ||||
|   const { ref: value, toLux } = units[key]; | ||||
| 
 | ||||
|   const luxs = toLux(value) ?? 0; | ||||
| 
 | ||||
|   _.chain(units) | ||||
|     .omit(key) | ||||
|     .forEach(({ fromLux }, index) => { | ||||
|       units[index].ref = Math.floor((fromLux(luxs) ?? 0) * 1000000) / 1000000; | ||||
|     }) | ||||
|     .value(); | ||||
| } | ||||
| 
 | ||||
| update('lux'); | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <div> | ||||
|     <n-input-group v-for="[key, { title, unit }] in Object.entries(units)" :key="key" mb-3 w-full> | ||||
|       <n-input-group-label style="width: 100px"> | ||||
|         {{ title }} | ||||
|       </n-input-group-label> | ||||
| 
 | ||||
|       <n-input-number | ||||
|         v-model:value="units[key].ref" | ||||
|         style="flex: 1" | ||||
|         @update:value="() => update(key as IlluminanceScale)" | ||||
|       /> | ||||
| 
 | ||||
|       <n-input-group-label style="width: 75px"> | ||||
|         {{ unit }} | ||||
|       </n-input-group-label> | ||||
|     </n-input-group> | ||||
|   </div> | ||||
| </template> | ||||
							
								
								
									
										12
									
								
								src/tools/illuminance-converter/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/tools/illuminance-converter/index.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| import { Brightness2 } from '@vicons/tabler'; | ||||
| import { defineTool } from '../tool'; | ||||
| 
 | ||||
| export const tool = defineTool({ | ||||
|   name: 'Illuminance Converter', | ||||
|   path: '/illuminance-converter', | ||||
|   description: 'Illuminance units converter (Lux, Foot Candles, Nox, Phot, Flame)', | ||||
|   keywords: ['illuminance', 'converter', 'lux', 'lx', 'foot', 'candles', 'fc', 'flame', 'nox', 'phot'], | ||||
|   component: () => import('./illuminance-converter.vue'), | ||||
|   icon: Brightness2, | ||||
|   createdAt: new Date('2025-02-09'), | ||||
| }); | ||||
| @ -1,6 +1,8 @@ | ||||
| import { tool as base64FileConverter } from './base64-file-converter'; | ||||
| import { tool as base64StringConverter } from './base64-string-converter'; | ||||
| import { tool as basicAuthGenerator } from './basic-auth-generator'; | ||||
| import { tool as iesLightingGuidelines } from './ies-lighting-guidelines'; | ||||
| import { tool as illuminanceConverter } from './illuminance-converter'; | ||||
| import { tool as pdfSignatureChecker } from './pdf-signature-checker'; | ||||
| import { tool as numeronymGenerator } from './numeronym-generator'; | ||||
| import { tool as macAddressGenerator } from './mac-address-generator'; | ||||
| @ -151,7 +153,13 @@ export const toolsByCategory: ToolCategory[] = [ | ||||
|   }, | ||||
|   { | ||||
|     name: 'Measurement', | ||||
|     components: [chronometer, temperatureConverter, benchmarkBuilder], | ||||
|     components: [ | ||||
|       chronometer, | ||||
|       temperatureConverter, | ||||
|       benchmarkBuilder, | ||||
|       iesLightingGuidelines, | ||||
|       illuminanceConverter, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|     name: 'Text', | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user