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