1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Interactive BOM for KiCAD</title>
- <style type="text/css">
- :root {
- --pcb-edge-color: black;
- --pad-color: #878787;
- --pad-hole-color: #CCCCCC;
- --pad-color-highlight: #D04040;
- --pad-color-highlight-both: #D0D040;
- --pad-color-highlight-marked: #44a344;
- --pin1-outline-color: #ffb629;
- --pin1-outline-color-highlight: #ffb629;
- --pin1-outline-color-highlight-both: #fcbb39;
- --pin1-outline-color-highlight-marked: #fdbe41;
- --silkscreen-edge-color: #aa4;
- --silkscreen-polygon-color: #4aa;
- --silkscreen-text-color: #4aa;
- --fabrication-edge-color: #907651;
- --fabrication-polygon-color: #907651;
- --fabrication-text-color: #a27c24;
- --track-color: #def5f1;
- --track-color-highlight: #D04040;
- --zone-color: #def5f1;
- --zone-color-highlight: #d0404080;
- }
- html,
- body {
- margin: 0px;
- height: 100%;
- font-family: Verdana, sans-serif;
- }
- .dark.topmostdiv {
- --pcb-edge-color: #eee;
- --pad-color: #808080;
- --pin1-outline-color: #ffa800;
- --pin1-outline-color-highlight: #ccff00;
- --track-color: #42524f;
- --zone-color: #42524f;
- background-color: #252c30;
- color: #eee;
- }
- button {
- background-color: #eee;
- border: 1px solid #888;
- color: black;
- height: 44px;
- width: 44px;
- text-align: center;
- text-decoration: none;
- display: inline-block;
- font-size: 14px;
- font-weight: bolder;
- }
- .dark button {
- /* This will be inverted */
- background-color: #c3b7b5;
- }
- button.depressed {
- background-color: #0a0;
- color: white;
- }
- .dark button.depressed {
- /* This will be inverted */
- background-color: #b3b;
- }
- button:focus {
- outline: 0;
- }
- button#tb-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
- }
- button#lr-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
- }
- button#bom-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
- }
- button#bom-grouped-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
- }
- button#bom-ungrouped-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
- }
- button#bom-netlist-btn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
- }
- button#copy {
- background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
- background-position: 6px 6px;
- background-repeat: no-repeat;
- background-size: 26px 26px;
- border-radius: 6px;
- height: 40px;
- width: 40px;
- margin: 10px 5px;
- }
- button#copy:active {
- box-shadow: inset 0px 0px 5px #6c6c6c;
- }
- textarea.clipboard-temp {
- position: fixed;
- top: 0;
- left: 0;
- width: 2em;
- height: 2em;
- padding: 0;
- border: None;
- outline: None;
- box-shadow: None;
- background: transparent;
- }
- .left-most-button {
- border-right: 0;
- border-top-left-radius: 6px;
- border-bottom-left-radius: 6px;
- }
- .middle-button {
- border-right: 0;
- }
- .right-most-button {
- border-top-right-radius: 6px;
- border-bottom-right-radius: 6px;
- }
- .button-container {
- font-size: 0;
- margin: 0.4rem 0.4rem 0.4rem 0;
- }
- .dark .button-container {
- filter: invert(1);
- }
- .button-container button {
- background-size: 32px 32px;
- background-position: 5px 5px;
- background-repeat: no-repeat;
- }
- @media print {
- .hideonprint {
- display: none;
- }
- }
- canvas {
- cursor: crosshair;
- }
- canvas:active {
- cursor: grabbing;
- }
- .fileinfo {
- width: 100%;
- max-width: 1000px;
- border: none;
- padding: 3px;
- }
- .fileinfo .title {
- font-size: 20pt;
- font-weight: bold;
- }
- .fileinfo td {
- overflow: hidden;
- white-space: nowrap;
- max-width: 1px;
- width: 50%;
- text-overflow: ellipsis;
- }
- .bom {
- border-collapse: collapse;
- font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
- font-size: 10pt;
- table-layout: fixed;
- width: 100%;
- margin-top: 1px;
- position: relative;
- }
- .bom th,
- .bom td {
- border: 1px solid black;
- padding: 5px;
- word-wrap: break-word;
- text-align: center;
- position: relative;
- }
- .dark .bom th,
- .dark .bom td {
- border: 1px solid #777;
- }
- .bom th {
- background-color: #CCCCCC;
- background-clip: padding-box;
- }
- .dark .bom th {
- background-color: #3b4749;
- }
- .bom tr.highlighted:nth-child(n) {
- background-color: #cfc;
- }
- .dark .bom tr.highlighted:nth-child(n) {
- background-color: #226022;
- }
- .bom tr:nth-child(even) {
- background-color: #f2f2f2;
- }
- .dark .bom tr:nth-child(even) {
- background-color: #313b40;
- }
- .bom tr.checked {
- color: #1cb53d;
- }
- .dark .bom tr.checked {
- color: #2cce54;
- }
- .bom tr {
- transition: background-color 0.2s;
- }
- .bom .numCol {
- width: 30px;
- }
- .bom .value {
- width: 15%;
- }
- .bom .quantity {
- width: 65px;
- }
- .bom th .sortmark {
- position: absolute;
- right: 1px;
- top: 1px;
- margin-top: -5px;
- border-width: 5px;
- border-style: solid;
- border-color: transparent transparent #221 transparent;
- transform-origin: 50% 85%;
- transition: opacity 0.2s, transform 0.4s;
- }
- .dark .bom th .sortmark {
- filter: invert(1);
- }
- .bom th .sortmark.none {
- opacity: 0;
- }
- .bom th .sortmark.desc {
- transform: rotate(180deg);
- }
- .bom th:hover .sortmark.none {
- opacity: 0.5;
- }
- .bom .bom-checkbox {
- width: 30px;
- position: relative;
- user-select: none;
- -moz-user-select: none;
- }
- .bom .bom-checkbox:before {
- content: "";
- position: absolute;
- border-width: 15px;
- border-style: solid;
- border-color: #51829f transparent transparent transparent;
- visibility: hidden;
- top: -15px;
- }
- .bom .bom-checkbox:after {
- content: "Double click to set/unset all";
- position: absolute;
- color: white;
- top: -35px;
- left: -26px;
- background: #51829f;
- padding: 5px 15px;
- border-radius: 8px;
- white-space: nowrap;
- visibility: hidden;
- }
- .bom .bom-checkbox:hover:before,
- .bom .bom-checkbox:hover:after {
- visibility: visible;
- transition: visibility 0.2s linear 1s;
- }
- .split {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- overflow-y: auto;
- overflow-x: hidden;
- background-color: inherit;
- }
- .split.split-horizontal,
- .gutter.gutter-horizontal {
- height: 100%;
- float: left;
- }
- .gutter {
- background-color: #ddd;
- background-repeat: no-repeat;
- background-position: 50%;
- transition: background-color 0.3s;
- }
- .dark .gutter {
- background-color: #777;
- }
- .gutter.gutter-horizontal {
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
- cursor: ew-resize;
- width: 5px;
- }
- .gutter.gutter-vertical {
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
- cursor: ns-resize;
- height: 5px;
- }
- .searchbox {
- float: left;
- height: 40px;
- margin: 10px 5px;
- padding: 12px 32px;
- font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
- font-size: 18px;
- box-sizing: border-box;
- border: 1px solid #888;
- border-radius: 6px;
- outline: none;
- background-color: #eee;
- transition: background-color 0.2s, border 0.2s;
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
- background-position: 10px 10px;
- background-repeat: no-repeat;
- }
- .dark .searchbox {
- background-color: #111;
- color: #eee;
- }
- .searchbox::placeholder {
- color: #ccc;
- }
- .dark .searchbox::placeholder {
- color: #666;
- }
- .filter {
- width: calc(60% - 64px);
- }
- .reflookup {
- width: calc(40% - 10px);
- }
- input[type=text]:focus {
- background-color: white;
- border: 1px solid #333;
- }
- .dark input[type=text]:focus {
- background-color: #333;
- border: 1px solid #ccc;
- }
- mark.highlight {
- background-color: #5050ff;
- color: #fff;
- padding: 2px;
- border-radius: 6px;
- }
- .dark mark.highlight {
- background-color: #76a6da;
- color: #111;
- }
- .menubtn {
- background-color: white;
- border: none;
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
- background-position: center;
- background-repeat: no-repeat;
- }
- .statsbtn {
- background-color: white;
- border: none;
- background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
- background-position: center;
- background-repeat: no-repeat;
- }
- .iobtn {
- background-color: white;
- border: none;
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
- background-position: center;
- background-repeat: no-repeat;
- }
- .visbtn {
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
- background-position: center;
- background-repeat: no-repeat;
- padding: 15px;
- }
- #vismenu-content {
- left: 0px;
- font-family: Verdana, sans-serif;
- }
- .dark .statsbtn,
- .dark .savebtn,
- .dark .menubtn,
- .dark .iobtn,
- .dark .visbtn {
- filter: invert(1);
- }
- .flexbox {
- display: flex;
- align-items: center;
- justify-content: space-between;
- width: 100%;
- }
- .savebtn {
- background-color: #d6d6d6;
- width: auto;
- height: 30px;
- flex-grow: 1;
- margin: 5px;
- border-radius: 4px;
- }
- .savebtn:active {
- background-color: #0a0;
- color: white;
- }
- .dark .savebtn:active {
- /* This will be inverted */
- background-color: #b3b;
- }
- .stats {
- border-collapse: collapse;
- font-size: 12pt;
- table-layout: fixed;
- width: 100%;
- min-width: 450px;
- }
- .dark .stats td {
- border: 1px solid #bbb;
- }
- .stats td {
- border: 1px solid black;
- padding: 5px;
- word-wrap: break-word;
- text-align: center;
- position: relative;
- }
- #checkbox-stats div {
- position: absolute;
- left: 0;
- top: 0;
- height: 100%;
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- #checkbox-stats .bar {
- background-color: rgba(28, 251, 0, 0.6);
- }
- .menu {
- position: relative;
- display: inline-block;
- margin: 0.4rem 0.4rem 0.4rem 0;
- }
- .menu-content {
- font-size: 12pt !important;
- text-align: left !important;
- font-weight: normal !important;
- display: none;
- position: absolute;
- background-color: white;
- right: 0;
- min-width: 300px;
- box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
- z-index: 100;
- padding: 8px;
- }
- .dark .menu-content {
- background-color: #111;
- }
- .menu:hover .menu-content {
- display: block;
- }
- .menu:hover .menubtn,
- .menu:hover .iobtn,
- .menu:hover .statsbtn {
- background-color: #eee;
- }
- .menu-label {
- display: inline-block;
- padding: 8px;
- border: 1px solid #ccc;
- border-top: 0;
- width: calc(100% - 18px);
- }
- .menu-label-top {
- border-top: 1px solid #ccc;
- }
- .menu-textbox {
- float: left;
- height: 24px;
- margin: 10px 5px;
- padding: 5px 5px;
- font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
- font-size: 14px;
- box-sizing: border-box;
- border: 1px solid #888;
- border-radius: 4px;
- outline: none;
- background-color: #eee;
- transition: background-color 0.2s, border 0.2s;
- width: calc(100% - 10px);
- }
- .menu-textbox.invalid,
- .dark .menu-textbox.invalid {
- color: red;
- }
- .dark .menu-textbox {
- background-color: #222;
- color: #eee;
- }
- .radio-container {
- margin: 4px;
- }
- .topmostdiv {
- display: flex;
- flex-direction: column;
- width: 100%;
- background-color: white;
- transition: background-color 0.3s;
- }
- #top {
- display: flex;
- flex-wrap: wrap;
- justify-content: flex-end;
- align-items: center;
- }
- #topdivider {
- border-bottom: 2px solid black;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- .dark #topdivider {
- border-bottom: 2px solid #ccc;
- }
- #topdivider>div {
- position: relative;
- }
- #toptoggle {
- cursor: pointer;
- user-select: none;
- position: absolute;
- padding: 0.1rem 0.3rem;
- top: -0.4rem;
- left: -1rem;
- font-size: 1.4rem;
- line-height: 60%;
- border: 1px solid black;
- border-radius: 1rem;
- background-color: #fff;
- z-index: 100;
- }
- .flipped {
- transform: rotate(0.5turn);
- }
- .dark #toptoggle {
- border: 1px solid #fff;
- background-color: #222;
- }
- #fileinfodiv {
- flex: 20rem 1 0;
- overflow: auto;
- }
- #bomcontrols {
- display: flex;
- flex-direction: row-reverse;
- }
- #bomcontrols>* {
- flex-shrink: 0;
- }
- #dbg {
- display: block;
- }
- ::-webkit-scrollbar {
- width: 8px;
- }
- ::-webkit-scrollbar-track {
- background: #aaa;
- }
- ::-webkit-scrollbar-thumb {
- background: #666;
- border-radius: 3px;
- }
- ::-webkit-scrollbar-thumb:hover {
- background: #555;
- }
- .slider {
- -webkit-appearance: none;
- width: 100%;
- margin: 3px 0;
- padding: 0;
- outline: none;
- opacity: 0.7;
- -webkit-transition: .2s;
- transition: opacity .2s;
- border-radius: 3px;
- }
- .slider:hover {
- opacity: 1;
- }
- .slider:focus {
- outline: none;
- }
- .slider::-webkit-slider-runnable-track {
- -webkit-appearance: none;
- width: 100%;
- height: 8px;
- background: #d3d3d3;
- border-radius: 3px;
- border: none;
- }
- .slider::-webkit-slider-thumb {
- -webkit-appearance: none;
- width: 15px;
- height: 15px;
- border-radius: 50%;
- background: #0a0;
- cursor: pointer;
- margin-top: -4px;
- }
- .dark .slider::-webkit-slider-thumb {
- background: #3d3;
- }
- .slider::-moz-range-thumb {
- width: 15px;
- height: 15px;
- border-radius: 50%;
- background: #0a0;
- cursor: pointer;
- }
- .slider::-moz-range-track {
- height: 8px;
- background: #d3d3d3;
- border-radius: 3px;
- }
- .dark .slider::-moz-range-thumb {
- background: #3d3;
- }
- .slider::-ms-track {
- width: 100%;
- height: 8px;
- border-width: 3px 0;
- background: transparent;
- border-color: transparent;
- color: transparent;
- transition: opacity .2s;
- }
- .slider::-ms-fill-lower {
- background: #d3d3d3;
- border: none;
- border-radius: 3px;
- }
- .slider::-ms-fill-upper {
- background: #d3d3d3;
- border: none;
- border-radius: 3px;
- }
- .slider::-ms-thumb {
- width: 15px;
- height: 15px;
- border-radius: 50%;
- background: #0a0;
- cursor: pointer;
- margin: 0;
- }
- .shameless-plug {
- font-size: 0.8em;
- text-align: center;
- display: block;
- }
- a {
- color: #0278a4;
- }
- .dark a {
- color: #00b9fd;
- }
- #frontcanvas,
- #backcanvas {
- touch-action: none;
- }
- .placeholder {
- border: 1px dashed #9f9fda !important;
- background-color: #edf2f7 !important;
- }
- .dragging {
- z-index: 999;
- }
- .dark .dragging>table>tbody>tr {
- background-color: #252c30;
- }
- .dark .placeholder {
- filter: invert(1);
- }
- .column-spacer {
- top: 0;
- left: 0;
- width: calc(100% - 4px);
- position: absolute;
- cursor: pointer;
- user-select: none;
- height: 100%;
- }
- .column-width-handle {
- top: 0;
- right: 0;
- width: 4px;
- position: absolute;
- cursor: col-resize;
- user-select: none;
- height: 100%;
- }
- .column-width-handle:hover {
- background-color: #4f99bd;
- }
- .help-link {
- border: 1px solid #0278a4;
- padding-inline: 0.3rem;
- border-radius: 3px;
- cursor: pointer;
- }
- .dark .help-link {
- border: 1px solid #00b9fd;
- }
- .bom-color {
- width: 20%;
- }
- .color-column input {
- width: 1.6rem;
- height: 1rem;
- border: 1px solid black;
- cursor: pointer;
- padding: 0;
- }
- /* removes default styling from input color element */
- ::-webkit-color-swatch {
- border: none;
- }
- ::-webkit-color-swatch-wrapper {
- padding: 0;
- }
- ::-moz-color-swatch,
- ::-moz-focus-inner {
- border: none;
- }
- ::-moz-focus-inner {
- padding: 0;
- }
- /* #bomhead {
- position: sticky;
- top: 0px;
- z-index: 1;
- } */
- </style>
- <script type="text/javascript" >
- ///////////////////////////////////////////////
- /*
- Split.js - v1.3.5
- MIT License
- https://github.com/nathancahill/Split.js
- */
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- // Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
- // This work is free. You can redistribute it and/or modify it
- // under the terms of the WTFPL, Version 2
- // For more information see LICENSE.txt or http://www.wtfpl.net/
- //
- // For more information, the home page:
- // http://pieroxy.net/blog/pages/lz-string/testing.html
- //
- // LZ-based compression algorithm, version 1.4.4
- var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- /*!
- * PEP v0.4.3 | https://github.com/jquery/PEP
- * Copyright jQuery Foundation and other contributors | http://jquery.org/license
- */
- !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
- for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
- var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
- var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
- b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
- b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
- for(var b=a;b.parentNode;)b=b.parentNode;
- return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
- return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
- //
- this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
- installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
- var b=x(a,this.findElements,this);
- return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
- var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
- isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
- var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
- 0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
- c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
- c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
- Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
- Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
- d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
- (0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
- c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
- var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
- shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
- b=!1;else if("XY"===c)
- b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
- b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
- vacuumTouches:function(a){var b=a.touches;
- if(R.size>=b.length){var c=[];R.forEach(function(a,d){
- if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
- if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
- d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
- b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
- dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
- if(this.isPrimaryTouch(c)){
- var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- var pcbdata = JSON.parse(LZString.decompressFromBase64("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bzGvPkBNbxtXGb7Nvtl3NP8yryz/Dn8dfzG+xdc9vs/YJ28ljyhXD28rzzubCO8EVye+/284vwNvJL8JHzS/Cb7xvx8HA1cPvvVXPO8/vua/mu8Wvuxdh1cyft6+877BvscfEZ8PPye+xe81vtcs0tcnrwnvNtcQfup+zIcpfsa/Fn8Nfyu+738NrxR+3n7D1wF+5mTtNyQ3OB8KfvrPGB8r1xd/Oz8aPx8vGD89fse++X7O2zw3K376vtofM37GNxl+537O2xT+1X71fzd/LX78/zu+6Tcefs03M376/uJ++TcrNzT+x642/ssfPP7+vs1+4b7bvuD+6v7w/ui3EJ8GdwxvgX7Eny7+4r7rhzK3If7mfvH+9n7i3yL/NH7KnySvBncxty3+xp89/vefP/7z/vmvC77J/t1+6R8Q/sz+xZ8avsl3AyuMAeK3OECEdye+/Z8PfsS/Jz8A/sQB+f7UAc+fLf7nny4BxqoSAcX+wMDoftEfOH7nHxx/Pb7sXxx++N8zZLW+8l8Hft7+/QHGfsgB1n7ZAc5+x/7lAf5fHQHXAdb+6V8hAcz+3wHqAdh++gHUvy1fFgHjAcNfHQHkge8Bx18/AeMB7IHQgekByIHEftiB9PclAejfNQHWiZcIHQHoDwAB9YmuoLABzu8oAdv+9z8HAfD++t8Y/viPOg81vu7fHb75geJMSQHPXzKB+QHufvmB1AQGLzTXJd8mgdsPHIHivs+B4oHTgfo/Mv7Z/tqB+YHMjw2B+EHW/uy5L4H/3wdFAEHHPxBBxgHkfuQB3v7xjyWB1Y8sPxRB8j8ege0NmFO8Qd9++q8sfyuBzP7+PzW+6UHW/shPDEHxPybaPkH2vzBB5gHoQclB/T8mge0/GUHmTw5B4z8jgcJB/37ogdU/HQ89vs1POkHEzyC/BUHLTwdB2MHhgeQfGgHiQe9B3r8KzwDB4r8Qwce7H9ASwe27Or8dgclB+r8zAdGB6wHzgfsB/L7w/vG/Fv7RweaB6b8OQdnB5MHbHzCBzMHKgd9B/MHhwePPNb7zvxPB2RO5wevB5cH0vsmB0UHZgcz+0C8Fvu3PEH8pwdQvBsHe/sh/F0HBQdhfKYHBwe/B8n8xwewh6cHqfwMB4r76fzgh3UHSQeqB/0Hw/vF/Fv72IeaBxX8VQfOvBy8tQfe/OiHdwfBXPb7EryrB868rfzW+wq8CPyf+3SHqIckh7MHr3wUh/q8OIfsh3iHY/wgh4r7k/xMh3P8pIdzB+SHWIer/DiHood4h+v8SIfL8fcCxIcChyyHcfwrXKr7l7yIfEqHqvwa+278Trzqh/yHS/uCh698iodW++P8hbxNHmqH13a2+8y8UF41vNsHUwfXBz0HtwdCh9s8XvsYvF+8YVxOhwp8IfvJPIsGGfxPvL37aIfyhzz8iodLvIaH8ftK/CqHW7yn3C0Wlfzeh9MHtocuBx/7K1z5+0GHFfsitYmHihw3vPS8SYc3vFaHVwdKBzcHsYcQ/PGHTfsph7RTQ/wKfDcTGofxh+37WYefB2wH7/v5hzncE/tFhw2Htnylh3P76Yez+0mwsoc6h36HcYf1h5v7zYdMfH2HU3wnvAx8HofMfF6Hunw+h8yHdod6hwXcN/tFh4J8yodafHLcEdym3MuHnYdgB/UHyQek3Kbcv/vzh7uH/YdafEAHbYfV6J18QPyL+xuHuocKhwXcZnzzhzeHB4d23IgHHocoBx8HqXwXh92HdYeB3Lnci4eBfJm7aofEB0+HQXwvh8YHNYdQh/38TrxUB0OHV9y0BymH9Adth0wHTvssB6/7IEffBx+HXdw8B/eHeXwJJKr8ggen3DhHVYevh18HcvtgR3VcTXzfh1fc0gcYR3Z+N9y4RwoHQEe7B7mH+wfER5bcD4wlh0N82gcwR7oHuEecR/hHwEd7B7WHTEfMPNYHKYcWB6r8tgfmh7g8Dgfrh4RHK/vT3HVcXgeQR88ecSTCR/d8p9z+B3RHSEd8R6BHUftyR5EHlEeWsjOIZEc6Nl4kyTzRB1JHyEdER9pHltxpB6JHmQd6R9Y8JkfZB+pH54fSRyEHdDx1XOUHekceRwpHOPwk/Mk8lQdmR5pHKEcCR3dcrQcph6FHnkftB8M8kUc8R/RHMYeMR5ZHgdyDB6r8SUdhRxMHbYdi/AFHDEf8RwlHIUeLB8lHeUdhR+sH4keTPJGHE4fRh4UHFkcXXLi82vsphycH3kcXB22HFwcxRxpHWUdaR1VHltzPB7VHjwe1R+8HjUfvB81HzkfmRzJHbkcdR4CH9UdjR+78wIfiR2CHmUdxR9lH7UeB3Oi8hkfT8stxtUeIh41HiIcDR5OHcofTh1eHgdy4h95HB0cD/ESHp9z4h7NHFUfDRys8brw0hymHl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"))
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- /* Utility functions */
- var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
- pcbdata.metadata.revision + '__#';
- var storage;
- function initStorage(key) {
- try {
- window.localStorage.getItem("blank");
- storage = window.localStorage;
- } catch (e) {
- // localStorage not available
- }
- if (!storage) {
- try {
- window.sessionStorage.getItem("blank");
- storage = window.sessionStorage;
- } catch (e) {
- // sessionStorage also not available
- }
- }
- }
- function readStorage(key) {
- if (storage) {
- return storage.getItem(storagePrefix + key);
- } else {
- return null;
- }
- }
- function writeStorage(key, value) {
- if (storage) {
- storage.setItem(storagePrefix + key, value);
- }
- }
- function fancyDblClickHandler(el, onsingle, ondouble) {
- return function () {
- if (el.getAttribute("data-dblclick") == null) {
- el.setAttribute("data-dblclick", 1);
- setTimeout(function () {
- if (el.getAttribute("data-dblclick") == 1) {
- onsingle();
- }
- el.removeAttribute("data-dblclick");
- }, 200);
- } else {
- el.removeAttribute("data-dblclick");
- ondouble();
- }
- }
- }
- function smoothScrollToRow(rowid) {
- document.getElementById(rowid).scrollIntoView({
- behavior: "smooth",
- block: "center",
- inline: "nearest"
- });
- }
- function focusInputField(input) {
- input.scrollIntoView(false);
- input.focus();
- input.select();
- }
- function saveBomTable(output) {
- var text = '';
- for (var node of bomhead.childNodes[0].childNodes) {
- if (node.firstChild) {
- text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
- }
- if (node != bomhead.childNodes[0].lastChild) {
- text += (output == 'csv' ? ',' : '\t');
- }
- }
- text += '\n';
- for (var row of bombody.childNodes) {
- for (var cell of row.childNodes) {
- let val = '';
- for (var node of cell.childNodes) {
- if (node.nodeName == "INPUT") {
- if (node.checked) {
- val += '✓';
- }
- } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
- val += node.firstChild.nodeValue;
- } else {
- val += node.nodeValue;
- }
- }
- if (output == 'csv') {
- val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
- if (isNumeric(val)) {
- val = +val; // use number
- } else {
- val = `"${val}"`; // enclosed within double-quote
- }
- }
- text += val;
- if (cell != row.lastChild) {
- text += (output == 'csv' ? ',' : '\t');
- }
- }
- text += '\n';
- }
- if (output != 'clipboard') {
- // To file: csv or txt
- var blob = new Blob([text], {
- type: `text/${output}`
- });
- saveFile(`${pcbdata.metadata.title}.${output}`, blob);
- } else {
- // To clipboard
- var textArea = document.createElement("textarea");
- textArea.classList.add('clipboard-temp');
- textArea.value = text;
- document.body.appendChild(textArea);
- textArea.focus();
- textArea.select();
- try {
- if (document.execCommand('copy')) {
- console.log('Bom copied to clipboard.');
- }
- } catch (err) {
- console.log('Can not copy to clipboard.');
- }
- document.body.removeChild(textArea);
- }
- }
- function isNumeric(str) {
- /* https://stackoverflow.com/a/175787 */
- return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
- }
- function removeGutterNode(node) {
- for (var i = 0; i < node.childNodes.length; i++) {
- if (node.childNodes[i].classList &&
- node.childNodes[i].classList.contains("gutter")) {
- node.removeChild(node.childNodes[i]);
- break;
- }
- }
- }
- function cleanGutters() {
- removeGutterNode(document.getElementById("bot"));
- removeGutterNode(document.getElementById("canvasdiv"));
- }
- var units = {
- prefixes: {
- giga: ["G", "g", "giga", "Giga", "GIGA"],
- mega: ["M", "mega", "Mega", "MEGA"],
- kilo: ["K", "k", "kilo", "Kilo", "KILO"],
- milli: ["m", "milli", "Milli", "MILLI"],
- micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
- nano: ["N", "n", "nano", "Nano", "NANO"],
- pico: ["P", "p", "pico", "Pico", "PICO"],
- },
- unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
- unitsLong: [
- "OHM", "Ohm", "ohm", "ohms",
- "FARAD", "Farad", "farad",
- "HENRY", "Henry", "henry"
- ],
- getMultiplier: function (s) {
- if (this.prefixes.giga.includes(s)) return 1e9;
- if (this.prefixes.mega.includes(s)) return 1e6;
- if (this.prefixes.kilo.includes(s)) return 1e3;
- if (this.prefixes.milli.includes(s)) return 1e-3;
- if (this.prefixes.micro.includes(s)) return 1e-6;
- if (this.prefixes.nano.includes(s)) return 1e-9;
- if (this.prefixes.pico.includes(s)) return 1e-12;
- return 1;
- },
- valueRegex: null,
- }
- function initUtils() {
- var allPrefixes = units.prefixes.giga
- .concat(units.prefixes.mega)
- .concat(units.prefixes.kilo)
- .concat(units.prefixes.milli)
- .concat(units.prefixes.micro)
- .concat(units.prefixes.nano)
- .concat(units.prefixes.pico);
- var allUnits = units.unitsShort.concat(units.unitsLong);
- units.valueRegex = new RegExp("^([0-9\.]+)" +
- "\\s*(" + allPrefixes.join("|") + ")?" +
- "(" + allUnits.join("|") + ")?" +
- "(\\b.*)?$", "");
- units.valueAltRegex = new RegExp("^([0-9]*)" +
- "(" + units.unitsShort.join("|") + ")?" +
- "([GgMmKkUuNnPp])?" +
- "([0-9]*)" +
- "(\\b.*)?$", "");
- if (config.fields.includes("Value")) {
- var index = config.fields.indexOf("Value");
- pcbdata.bom["parsedValues"] = {};
- for (var id in pcbdata.bom.fields) {
- pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
- }
- }
- }
- function parseValue(val, ref) {
- var inferUnit = (unit, ref) => {
- if (unit) {
- unit = unit.toLowerCase();
- if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
- unit = 'r';
- }
- unit = unit[0];
- } else {
- ref = /^([a-z]+)\d+$/i.exec(ref);
- if (ref) {
- ref = ref[1].toLowerCase();
- if (ref == "c") unit = 'f';
- else if (ref == "l") unit = 'h';
- else if (ref == "r" || ref == "rv") unit = 'r';
- else unit = null;
- }
- }
- return unit;
- };
- val = val.replace(/,/g, "");
- var match = units.valueRegex.exec(val);
- var unit;
- if (match) {
- val = parseFloat(match[1]);
- if (match[2]) {
- val = val * units.getMultiplier(match[2]);
- }
- unit = inferUnit(match[3], ref);
- if (!unit) return null;
- else return {
- val: val,
- unit: unit,
- extra: match[4],
- }
- }
- match = units.valueAltRegex.exec(val);
- if (match && (match[1] || match[4])) {
- val = parseFloat(match[1] + "." + match[4]);
- if (match[3]) {
- val = val * units.getMultiplier(match[3]);
- }
- unit = inferUnit(match[2], ref);
- if (!unit) return null;
- else return {
- val: val,
- unit: unit,
- extra: match[5],
- }
- }
- return null;
- }
- function valueCompare(a, b, stra, strb) {
- if (a === null && b === null) {
- // Failed to parse both values, compare them as strings.
- if (stra != strb) return stra > strb ? 1 : -1;
- else return 0;
- } else if (a === null) {
- return 1;
- } else if (b === null) {
- return -1;
- } else {
- if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
- else if (a.val != b.val) return a.val > b.val ? 1 : -1;
- else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
- else return 0;
- }
- }
- function validateSaveImgDimension(element) {
- var valid = false;
- var intValue = 0;
- if (/^[1-9]\d*$/.test(element.value)) {
- intValue = parseInt(element.value);
- if (intValue <= 16000) {
- valid = true;
- }
- }
- if (valid) {
- element.classList.remove("invalid");
- } else {
- element.classList.add("invalid");
- }
- return intValue;
- }
- function saveImage(layer) {
- var width = validateSaveImgDimension(document.getElementById("render-save-width"));
- var height = validateSaveImgDimension(document.getElementById("render-save-height"));
- var bgcolor = null;
- if (!document.getElementById("render-save-transparent").checked) {
- var style = getComputedStyle(topmostdiv);
- bgcolor = style.getPropertyValue("background-color");
- }
- if (!width || !height) return;
- // Prepare image
- var canvas = document.createElement("canvas");
- var layerdict = {
- transform: {
- x: 0,
- y: 0,
- s: 1,
- panx: 0,
- pany: 0,
- zoom: 1,
- },
- bg: canvas,
- fab: canvas,
- silk: canvas,
- highlight: canvas,
- layer: layer,
- }
- // Do the rendering
- recalcLayerScale(layerdict, width, height);
- prepareLayer(layerdict);
- clearCanvas(canvas, bgcolor);
- drawBackground(layerdict, false);
- drawHighlightsOnLayer(layerdict, false);
- // Save image
- var imgdata = canvas.toDataURL("image/png");
- var filename = pcbdata.metadata.title;
- if (pcbdata.metadata.revision) {
- filename += `.${pcbdata.metadata.revision}`;
- }
- filename += `.${layer}.png`;
- saveFile(filename, dataURLtoBlob(imgdata));
- }
- function saveSettings() {
- var data = {
- type: "InteractiveHtmlBom settings",
- version: 1,
- pcbmetadata: pcbdata.metadata,
- settings: settings,
- }
- var blob = new Blob([JSON.stringify(data, null, 4)], {
- type: "application/json"
- });
- saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
- }
- function loadSettings() {
- var input = document.createElement("input");
- input.type = "file";
- input.accept = ".settings.json";
- input.onchange = function (e) {
- var file = e.target.files[0];
- var reader = new FileReader();
- reader.onload = readerEvent => {
- var content = readerEvent.target.result;
- var newSettings;
- try {
- newSettings = JSON.parse(content);
- } catch (e) {
- alert("Selected file is not InteractiveHtmlBom settings file.");
- return;
- }
- if (newSettings.type != "InteractiveHtmlBom settings") {
- alert("Selected file is not InteractiveHtmlBom settings file.");
- return;
- }
- var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
- if (metadataMatches) {
- for (var k in pcbdata.metadata) {
- if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
- metadataMatches = false;
- }
- }
- }
- if (!metadataMatches) {
- var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
- var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
- if (!confirm(
- `Settins file metadata does not match current metadata.\n\n` +
- `Page metadata:\n${currentMetadata}\n\n` +
- `Settings file metadata:\n${fileMetadata}\n\n` +
- `Press OK if you would like to import settings anyway.`)) {
- return;
- }
- }
- overwriteSettings(newSettings.settings);
- }
- reader.readAsText(file, 'UTF-8');
- }
- input.click();
- }
- function resetSettings() {
- if (!confirm(
- `This will reset all checkbox states and other settings.\n\n` +
- `Press OK if you want to continue.`)) {
- return;
- }
- if (storage) {
- var keys = [];
- for (var i = 0; i < storage.length; i++) {
- var key = storage.key(i);
- if (key.startsWith(storagePrefix)) keys.push(key);
- }
- for (var key of keys) storage.removeItem(key);
- }
- location.reload();
- }
- function overwriteSettings(newSettings) {
- initDone = false;
- Object.assign(settings, newSettings);
- writeStorage("bomlayout", settings.bomlayout);
- writeStorage("bommode", settings.bommode);
- writeStorage("canvaslayout", settings.canvaslayout);
- writeStorage("bomCheckboxes", settings.checkboxes.join(","));
- document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
- for (var checkbox of settings.checkboxes) {
- writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
- }
- writeStorage("markWhenChecked", settings.markWhenChecked);
- padsVisible(settings.renderPads);
- document.getElementById("padsCheckbox").checked = settings.renderPads;
- fabricationVisible(settings.renderFabrication);
- document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
- silkscreenVisible(settings.renderSilkscreen);
- document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
- referencesVisible(settings.renderReferences);
- document.getElementById("referencesCheckbox").checked = settings.renderReferences;
- valuesVisible(settings.renderValues);
- document.getElementById("valuesCheckbox").checked = settings.renderValues;
- tracksVisible(settings.renderTracks);
- document.getElementById("tracksCheckbox").checked = settings.renderTracks;
- zonesVisible(settings.renderZones);
- document.getElementById("zonesCheckbox").checked = settings.renderZones;
- dnpOutline(settings.renderDnpOutline);
- document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
- setRedrawOnDrag(settings.redrawOnDrag);
- document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
- setDarkMode(settings.darkMode);
- document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
- setHighlightPin1(settings.highlightpin1);
- document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1;
- writeStorage("boardRotation", settings.boardRotation);
- document.getElementById("boardRotation").value = settings.boardRotation / 5;
- document.getElementById("rotationDegree").textContent = settings.boardRotation;
- setOffsetBackRotation(settings.offsetBackRotation);
- document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
- initDone = true;
- prepCheckboxes();
- changeBomLayout(settings.bomlayout);
- }
- function saveFile(filename, blob) {
- var link = document.createElement("a");
- var objurl = URL.createObjectURL(blob);
- link.download = filename;
- link.href = objurl;
- link.click();
- }
- function dataURLtoBlob(dataurl) {
- var arr = dataurl.split(','),
- mime = arr[0].match(/:(.*?);/)[1],
- bstr = atob(arr[1]),
- n = bstr.length,
- u8arr = new Uint8Array(n);
- while (n--) {
- u8arr[n] = bstr.charCodeAt(n);
- }
- return new Blob([u8arr], {
- type: mime
- });
- }
- var settings = {
- canvaslayout: "FB",
- bomlayout: "left-right",
- bommode: "grouped",
- checkboxes: [],
- checkboxStoredRefs: {},
- darkMode: false,
- highlightpin1: "none",
- redrawOnDrag: true,
- boardRotation: 0,
- offsetBackRotation: false,
- renderPads: true,
- renderReferences: true,
- renderValues: true,
- renderSilkscreen: true,
- renderFabrication: true,
- renderDnpOutline: false,
- renderTracks: true,
- renderZones: true,
- columnOrder: [],
- hiddenColumns: [],
- netColors: {},
- }
- function initDefaults() {
- settings.bomlayout = readStorage("bomlayout");
- if (settings.bomlayout === null) {
- settings.bomlayout = config.bom_view;
- }
- if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
- settings.bomlayout = config.bom_view;
- }
- settings.bommode = readStorage("bommode");
- if (settings.bommode === null) {
- settings.bommode = "grouped";
- }
- if (settings.bommode == "netlist" && !pcbdata.nets) {
- settings.bommode = "grouped";
- }
- if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
- settings.bommode = "grouped";
- }
- settings.canvaslayout = readStorage("canvaslayout");
- if (settings.canvaslayout === null) {
- settings.canvaslayout = config.layer_view;
- }
- var bomCheckboxes = readStorage("bomCheckboxes");
- if (bomCheckboxes === null) {
- bomCheckboxes = config.checkboxes;
- }
- settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
- document.getElementById("bomCheckboxes").value = bomCheckboxes;
- var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1;
- if (highlightpin1 === "false") highlightpin1 = "none";
- if (highlightpin1 === "true") highlightpin1 = "all";
- setHighlightPin1(highlightpin1);
- document.forms.highlightpin1.highlightpin1.value = highlightpin1;
- settings.markWhenChecked = readStorage("markWhenChecked") || "";
- populateMarkWhenCheckedOptions();
- function initBooleanSetting(storageString, def, elementId, func) {
- var b = readStorage(storageString);
- if (b === null) {
- b = def;
- } else {
- b = (b == "true");
- }
- document.getElementById(elementId).checked = b;
- func(b);
- }
- initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
- initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
- initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
- initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
- initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
- if ("tracks" in pcbdata) {
- initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
- initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
- } else {
- document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
- tracksVisible(false);
- zonesVisible(false);
- }
- initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
- initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
- initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
- var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
- var hcols = JSON.parse(readStorage("hiddenColumns"));
- if (hcols === null) {
- hcols = [];
- }
- settings.hiddenColumns = hcols.filter(e => fields.includes(e));
- var cord = JSON.parse(readStorage("columnOrder"));
- if (cord === null) {
- cord = fields;
- } else {
- cord = cord.filter(e => fields.includes(e));
- if (cord.length != fields.length)
- cord = fields;
- }
- settings.columnOrder = cord;
- settings.boardRotation = readStorage("boardRotation");
- if (settings.boardRotation === null) {
- settings.boardRotation = config.board_rotation * 5;
- } else {
- settings.boardRotation = parseInt(settings.boardRotation);
- }
- document.getElementById("boardRotation").value = settings.boardRotation / 5;
- document.getElementById("rotationDegree").textContent = settings.boardRotation;
- initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
- settings.netColors = JSON.parse(readStorage("netColors")) || {};
- }
- // Helper classes for user js callbacks.
- const IBOM_EVENT_TYPES = {
- ALL: "all",
- HIGHLIGHT_EVENT: "highlightEvent",
- CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
- BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
- }
- const EventHandler = {
- callbacks: {},
- init: function () {
- for (eventType of Object.values(IBOM_EVENT_TYPES))
- this.callbacks[eventType] = [];
- },
- registerCallback: function (eventType, callback) {
- this.callbacks[eventType].push(callback);
- },
- emitEvent: function (eventType, eventArgs) {
- event = {
- eventType: eventType,
- args: eventArgs,
- }
- var callback;
- for (callback of this.callbacks[eventType])
- callback(event);
- for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
- callback(event);
- }
- }
- EventHandler.init();
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- /* PCB rendering code */
- var emptyContext2d = document.createElement("canvas").getContext("2d");
- function deg2rad(deg) {
- return deg * Math.PI / 180;
- }
- function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
- var point = [
- linepoint[0] * text.width + offsetx,
- linepoint[1] * text.height + offsety
- ];
- // This approximates pcbnew behavior with how text tilts depending on horizontal justification
- point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
- return point;
- }
- function drawText(ctx, text, color) {
- if ("ref" in text && !settings.renderReferences) return;
- if ("val" in text && !settings.renderValues) return;
- ctx.save();
- ctx.fillStyle = color;
- ctx.strokeStyle = color;
- ctx.lineCap = "round";
- ctx.lineJoin = "round";
- ctx.lineWidth = text.thickness;
- if ("svgpath" in text) {
- ctx.stroke(new Path2D(text.svgpath));
- ctx.restore();
- return;
- }
- if ("polygons" in text) {
- ctx.fill(getPolygonsPath(text));
- ctx.restore();
- return;
- }
- ctx.translate(...text.pos);
- ctx.translate(text.thickness * 0.5, 0);
- var angle = -text.angle;
- if (text.attr.includes("mirrored")) {
- ctx.scale(-1, 1);
- angle = -angle;
- }
- var tilt = 0;
- if (text.attr.includes("italic")) {
- tilt = 0.125;
- }
- var interline = text.height * 1.5 + text.thickness;
- var txt = text.text.split("\n");
- // KiCad ignores last empty line.
- if (txt[txt.length - 1] == '') txt.pop();
- ctx.rotate(deg2rad(angle));
- var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
- offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
- for (var i in txt) {
- var lineWidth = text.thickness + interline / 2 * tilt;
- for (var j = 0; j < txt[i].length; j++) {
- if (txt[i][j] == '\t') {
- var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
- lineWidth += fourSpaces - lineWidth % fourSpaces;
- } else {
- if (txt[i][j] == '~') {
- j++;
- if (j == txt[i].length)
- break;
- }
- lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
- }
- }
- var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
- var inOverbar = false;
- for (var j = 0; j < txt[i].length; j++) {
- if (config.kicad_text_formatting) {
- if (txt[i][j] == '\t') {
- var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
- offsetx += fourSpaces - offsetx % fourSpaces;
- continue;
- } else if (txt[i][j] == '~') {
- j++;
- if (j == txt[i].length)
- break;
- if (txt[i][j] != '~') {
- inOverbar = !inOverbar;
- }
- }
- }
- var glyph = pcbdata.font_data[txt[i][j]];
- if (inOverbar) {
- var overbarStart = [offsetx, -text.height * 1.4 + offsety];
- var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
- if (!lastHadOverbar) {
- overbarStart[0] += text.height * 1.4 * tilt;
- lastHadOverbar = true;
- }
- ctx.beginPath();
- ctx.moveTo(...overbarStart);
- ctx.lineTo(...overbarEnd);
- ctx.stroke();
- } else {
- lastHadOverbar = false;
- }
- for (var line of glyph.l) {
- ctx.beginPath();
- ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
- for (var k = 1; k < line.length; k++) {
- ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
- }
- ctx.stroke();
- }
- offsetx += glyph.w * text.width;
- }
- offsety += interline;
- }
- ctx.restore();
- }
- function drawedge(ctx, scalefactor, edge, color) {
- ctx.strokeStyle = color;
- ctx.fillStyle = color;
- ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
- ctx.lineCap = "round";
- ctx.lineJoin = "round";
- if ("svgpath" in edge) {
- ctx.stroke(new Path2D(edge.svgpath));
- } else {
- ctx.beginPath();
- if (edge.type == "segment") {
- ctx.moveTo(...edge.start);
- ctx.lineTo(...edge.end);
- }
- if (edge.type == "rect") {
- ctx.moveTo(...edge.start);
- ctx.lineTo(edge.start[0], edge.end[1]);
- ctx.lineTo(...edge.end);
- ctx.lineTo(edge.end[0], edge.start[1]);
- ctx.lineTo(...edge.start);
- }
- if (edge.type == "arc") {
- ctx.arc(
- ...edge.start,
- edge.radius,
- deg2rad(edge.startangle),
- deg2rad(edge.endangle));
- }
- if (edge.type == "circle") {
- ctx.arc(
- ...edge.start,
- edge.radius,
- 0, 2 * Math.PI);
- ctx.closePath();
- }
- if (edge.type == "curve") {
- ctx.moveTo(...edge.start);
- ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
- }
- if("filled" in edge && edge.filled)
- ctx.fill();
- else
- ctx.stroke();
- }
- }
- function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
- // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
- var path = new Path2D();
- var width = size[0];
- var height = size[1];
- var x = width * -0.5;
- var y = height * -0.5;
- var chamfOffset = Math.min(width, height) * chamfratio;
- path.moveTo(x, 0);
- if (chamfpos & 4) {
- path.lineTo(x, y + height - chamfOffset);
- path.lineTo(x + chamfOffset, y + height);
- path.lineTo(0, y + height);
- } else {
- path.arcTo(x, y + height, x + width, y + height, radius);
- }
- if (chamfpos & 8) {
- path.lineTo(x + width - chamfOffset, y + height);
- path.lineTo(x + width, y + height - chamfOffset);
- path.lineTo(x + width, 0);
- } else {
- path.arcTo(x + width, y + height, x + width, y, radius);
- }
- if (chamfpos & 2) {
- path.lineTo(x + width, y + chamfOffset);
- path.lineTo(x + width - chamfOffset, y);
- path.lineTo(0, y);
- } else {
- path.arcTo(x + width, y, x, y, radius);
- }
- if (chamfpos & 1) {
- path.lineTo(x + chamfOffset, y);
- path.lineTo(x, y + chamfOffset);
- path.lineTo(x, 0);
- } else {
- path.arcTo(x, y, x, y + height, radius);
- }
- path.closePath();
- return path;
- }
- function getOblongPath(size) {
- return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
- }
- function getPolygonsPath(shape) {
- if (shape.path2d) {
- return shape.path2d;
- }
- if ("svgpath" in shape) {
- shape.path2d = new Path2D(shape.svgpath);
- } else {
- var path = new Path2D();
- for (var polygon of shape.polygons) {
- path.moveTo(...polygon[0]);
- for (var i = 1; i < polygon.length; i++) {
- path.lineTo(...polygon[i]);
- }
- path.closePath();
- }
- shape.path2d = path;
- }
- return shape.path2d;
- }
- function drawPolygonShape(ctx, scalefactor, shape, color) {
- ctx.save();
- if (!("svgpath" in shape)) {
- ctx.translate(...shape.pos);
- ctx.rotate(deg2rad(-shape.angle));
- }
- if("filled" in shape && !shape.filled) {
- ctx.strokeStyle = color;
- ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
- ctx.lineCap = "round";
- ctx.lineJoin = "round";
- ctx.stroke(getPolygonsPath(shape));
- } else {
- ctx.fillStyle = color;
- ctx.fill(getPolygonsPath(shape));
- }
- ctx.restore();
- }
- function drawDrawing(ctx, scalefactor, drawing, color) {
- if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
- drawedge(ctx, scalefactor, drawing, color);
- } else if (drawing.type == "polygon") {
- drawPolygonShape(ctx, scalefactor, drawing, color);
- } else {
- drawText(ctx, drawing, color);
- }
- }
- function getCirclePath(radius) {
- var path = new Path2D();
- path.arc(0, 0, radius, 0, 2 * Math.PI);
- path.closePath();
- return path;
- }
- function getCachedPadPath(pad) {
- if (!pad.path2d) {
- // if path2d is not set, build one and cache it on pad object
- if (pad.shape == "rect") {
- pad.path2d = new Path2D();
- pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
- } else if (pad.shape == "oval") {
- pad.path2d = getOblongPath(pad.size);
- } else if (pad.shape == "circle") {
- pad.path2d = getCirclePath(pad.size[0] / 2);
- } else if (pad.shape == "roundrect") {
- pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
- } else if (pad.shape == "chamfrect") {
- pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
- } else if (pad.shape == "custom") {
- pad.path2d = getPolygonsPath(pad);
- }
- }
- return pad.path2d;
- }
- function drawPad(ctx, pad, color, outline) {
- ctx.save();
- ctx.translate(...pad.pos);
- ctx.rotate(-deg2rad(pad.angle));
- if (pad.offset) {
- ctx.translate(...pad.offset);
- }
- ctx.fillStyle = color;
- ctx.strokeStyle = color;
- var path = getCachedPadPath(pad);
- if (outline) {
- ctx.stroke(path);
- } else {
- ctx.fill(path);
- }
- ctx.restore();
- }
- function drawPadHole(ctx, pad, padHoleColor) {
- if (pad.type != "th") return;
- ctx.save();
- ctx.translate(...pad.pos);
- ctx.rotate(-deg2rad(pad.angle));
- ctx.fillStyle = padHoleColor;
- if (pad.drillshape == "oblong") {
- ctx.fill(getOblongPath(pad.drillsize));
- } else {
- ctx.fill(getCirclePath(pad.drillsize[0] / 2));
- }
- ctx.restore();
- }
- function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
- if (highlight) {
- // draw bounding box
- if (footprint.layer == layer) {
- ctx.save();
- ctx.globalAlpha = 0.2;
- ctx.translate(...footprint.bbox.pos);
- ctx.rotate(deg2rad(-footprint.bbox.angle));
- ctx.translate(...footprint.bbox.relpos);
- ctx.fillStyle = colors.pad;
- ctx.fillRect(0, 0, ...footprint.bbox.size);
- ctx.globalAlpha = 1;
- ctx.strokeStyle = colors.pad;
- ctx.lineWidth = 3 / scalefactor;
- ctx.strokeRect(0, 0, ...footprint.bbox.size);
- ctx.restore();
- }
- }
- // draw drawings
- for (var drawing of footprint.drawings) {
- if (drawing.layer == layer) {
- drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
- }
- }
- ctx.lineWidth = 3 / scalefactor;
- // draw pads
- if (settings.renderPads) {
- for (var pad of footprint.pads) {
- if (pad.layers.includes(layer)) {
- drawPad(ctx, pad, colors.pad, outline);
- if (pad.pin1 &&
- (settings.highlightpin1 == "all" ||
- settings.highlightpin1 == "selected" && highlight)) {
- drawPad(ctx, pad, colors.outline, true);
- }
- }
- }
- for (var pad of footprint.pads) {
- drawPadHole(ctx, pad, colors.padHole);
- }
- }
- }
- function drawEdgeCuts(canvas, scalefactor) {
- var ctx = canvas.getContext("2d");
- var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
- for (var edge of pcbdata.edges) {
- drawDrawing(ctx, scalefactor, edge, edgecolor);
- }
- }
- function drawFootprints(canvas, layer, scalefactor, highlight) {
- var ctx = canvas.getContext("2d");
- ctx.lineWidth = 3 / scalefactor;
- var style = getComputedStyle(topmostdiv);
- var colors = {
- pad: style.getPropertyValue('--pad-color'),
- padHole: style.getPropertyValue('--pad-hole-color'),
- outline: style.getPropertyValue('--pin1-outline-color'),
- }
- for (var i = 0; i < pcbdata.footprints.length; i++) {
- var mod = pcbdata.footprints[i];
- var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
- var h = highlightedFootprints.includes(i);
- var d = markedFootprints.has(i);
- if (highlight) {
- if(h && d) {
- colors.pad = style.getPropertyValue('--pad-color-highlight-both');
- colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
- } else if (h) {
- colors.pad = style.getPropertyValue('--pad-color-highlight');
- colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
- } else if (d) {
- colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
- colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
- }
- }
- if( h || d || !highlight) {
- drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
- }
- }
- }
- function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
- var ctx = canvas.getContext("2d");
- for (var d of pcbdata.drawings[layername][layer]) {
- if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
- drawedge(ctx, scalefactor, d, edgeColor);
- } else if (d.type == "polygon") {
- drawPolygonShape(ctx, scalefactor, d, polygonColor);
- } else {
- drawText(ctx, d, textColor);
- }
- }
- }
- function drawTracks(canvas, layer, defaultColor, highlight) {
- ctx = canvas.getContext("2d");
- ctx.lineCap = "round";
- var hasHole = (track) => (
- 'drillsize' in track &&
- track.start[0] == track.end[0] &&
- track.start[1] == track.end[1]);
- // First draw tracks and tented vias
- for (var track of pcbdata.tracks[layer]) {
- if (highlight && highlightedNet != track.net) continue;
- if (!hasHole(track)) {
- ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
- ctx.lineWidth = track.width;
- ctx.beginPath();
- if ('radius' in track) {
- ctx.arc(
- ...track.center,
- track.radius,
- deg2rad(track.startangle),
- deg2rad(track.endangle));
- } else {
- ctx.moveTo(...track.start);
- ctx.lineTo(...track.end);
- }
- ctx.stroke();
- }
- }
- // Second pass to draw untented vias
- var style = getComputedStyle(topmostdiv);
- var holeColor = style.getPropertyValue('--pad-hole-color')
- for (var track of pcbdata.tracks[layer]) {
- if (highlight && highlightedNet != track.net) continue;
- if (hasHole(track)) {
- ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
- ctx.lineWidth = track.width;
- ctx.beginPath();
- ctx.moveTo(...track.start);
- ctx.lineTo(...track.end);
- ctx.stroke();
- ctx.strokeStyle = holeColor;
- ctx.lineWidth = track.drillsize;
- ctx.lineTo(...track.end);
- ctx.stroke();
- }
- }
- }
- function drawZones(canvas, layer, defaultColor, highlight) {
- ctx = canvas.getContext("2d");
- ctx.lineJoin = "round";
- for (var zone of pcbdata.zones[layer]) {
- if (highlight && highlightedNet != zone.net) continue;
- ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
- ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
- if (!zone.path2d) {
- zone.path2d = getPolygonsPath(zone);
- }
- ctx.fill(zone.path2d, zone.fillrule || "nonzero");
- if (zone.width > 0) {
- ctx.lineWidth = zone.width;
- ctx.stroke(zone.path2d);
- }
- }
- }
- function clearCanvas(canvas, color = null) {
- var ctx = canvas.getContext("2d");
- ctx.save();
- ctx.setTransform(1, 0, 0, 1, 0, 0);
- if (color) {
- ctx.fillStyle = color;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- } else {
- if (!window.matchMedia("print").matches)
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- }
- ctx.restore();
- }
- function drawNets(canvas, layer, highlight) {
- var style = getComputedStyle(topmostdiv);
- if (settings.renderZones) {
- var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
- drawZones(canvas, layer, zoneColor, highlight);
- }
- if (settings.renderTracks) {
- var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
- drawTracks(canvas, layer, trackColor, highlight);
- }
- if (highlight && settings.renderPads) {
- var padColor = style.getPropertyValue('--pad-color-highlight');
- var padHoleColor = style.getPropertyValue('--pad-hole-color');
- var ctx = canvas.getContext("2d");
- for (var footprint of pcbdata.footprints) {
- // draw pads
- var padDrawn = false;
- for (var pad of footprint.pads) {
- if (highlightedNet != pad.net) continue;
- if (pad.layers.includes(layer)) {
- drawPad(ctx, pad, padColor, false);
- padDrawn = true;
- }
- }
- if (padDrawn) {
- // redraw all pad holes because some pads may overlap
- for (var pad of footprint.pads) {
- drawPadHole(ctx, pad, padHoleColor);
- }
- }
- }
- }
- }
- function drawHighlightsOnLayer(canvasdict, clear = true) {
- if (clear) {
- clearCanvas(canvasdict.highlight);
- }
- if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
- drawFootprints(canvasdict.highlight, canvasdict.layer,
- canvasdict.transform.s * canvasdict.transform.zoom, true);
- }
- if (highlightedNet !== null) {
- drawNets(canvasdict.highlight, canvasdict.layer, true);
- }
- }
- function drawHighlights() {
- drawHighlightsOnLayer(allcanvas.front);
- drawHighlightsOnLayer(allcanvas.back);
- }
- function drawBackground(canvasdict, clear = true) {
- if (clear) {
- clearCanvas(canvasdict.bg);
- clearCanvas(canvasdict.fab);
- clearCanvas(canvasdict.silk);
- }
- drawNets(canvasdict.bg, canvasdict.layer, false);
- drawFootprints(canvasdict.bg, canvasdict.layer,
- canvasdict.transform.s * canvasdict.transform.zoom, false);
- drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
- var style = getComputedStyle(topmostdiv);
- var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
- var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
- var textColor = style.getPropertyValue('--silkscreen-text-color');
- if (settings.renderSilkscreen) {
- drawBgLayer(
- "silkscreen", canvasdict.silk, canvasdict.layer,
- canvasdict.transform.s * canvasdict.transform.zoom,
- edgeColor, polygonColor, textColor);
- }
- edgeColor = style.getPropertyValue('--fabrication-edge-color');
- polygonColor = style.getPropertyValue('--fabrication-polygon-color');
- textColor = style.getPropertyValue('--fabrication-text-color');
- if (settings.renderFabrication) {
- drawBgLayer(
- "fabrication", canvasdict.fab, canvasdict.layer,
- canvasdict.transform.s * canvasdict.transform.zoom,
- edgeColor, polygonColor, textColor);
- }
- }
- function prepareCanvas(canvas, flip, transform) {
- var ctx = canvas.getContext("2d");
- ctx.setTransform(1, 0, 0, 1, 0, 0);
- ctx.scale(transform.zoom, transform.zoom);
- ctx.translate(transform.panx, transform.pany);
- if (flip) {
- ctx.scale(-1, 1);
- }
- ctx.translate(transform.x, transform.y);
- ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
- ctx.scale(transform.s, transform.s);
- }
- function prepareLayer(canvasdict) {
- var flip = (canvasdict.layer === "B");
- for (var c of ["bg", "fab", "silk", "highlight"]) {
- prepareCanvas(canvasdict[c], flip, canvasdict.transform);
- }
- }
- function rotateVector(v, angle) {
- angle = deg2rad(angle);
- return [
- v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
- v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
- ];
- }
- function applyRotation(bbox, flip) {
- var corners = [
- [bbox.minx, bbox.miny],
- [bbox.minx, bbox.maxy],
- [bbox.maxx, bbox.miny],
- [bbox.maxx, bbox.maxy],
- ];
- corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
- return {
- minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
- miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
- maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
- maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
- }
- }
- function recalcLayerScale(layerdict, width, height) {
- var flip = (layerdict.layer === "B");
- var bbox = applyRotation(pcbdata.edges_bbox, flip);
- var scalefactor = 0.98 * Math.min(
- width / (bbox.maxx - bbox.minx),
- height / (bbox.maxy - bbox.miny)
- );
- if (scalefactor < 0.1) {
- scalefactor = 1;
- }
- layerdict.transform.s = scalefactor;
- if (flip) {
- layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
- } else {
- layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
- }
- layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
- for (var c of ["bg", "fab", "silk", "highlight"]) {
- canvas = layerdict[c];
- canvas.width = width;
- canvas.height = height;
- canvas.style.width = (width / devicePixelRatio) + "px";
- canvas.style.height = (height / devicePixelRatio) + "px";
- }
- }
- function redrawCanvas(layerdict) {
- prepareLayer(layerdict);
- drawBackground(layerdict);
- drawHighlightsOnLayer(layerdict);
- }
- function resizeCanvas(layerdict) {
- var canvasdivid = {
- "F": "frontcanvas",
- "B": "backcanvas"
- } [layerdict.layer];
- var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
- var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
- recalcLayerScale(layerdict, width, height);
- redrawCanvas(layerdict);
- }
- function resizeAll() {
- resizeCanvas(allcanvas.front);
- resizeCanvas(allcanvas.back);
- }
- function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
- var A = x - x1;
- var B = y - y1;
- var C = x2 - x1;
- var D = y2 - y1;
- var dot = A * C + B * D;
- var len_sq = C * C + D * D;
- var dx, dy;
- if (len_sq == 0) {
- // start and end of the segment coincide
- dx = x - x1;
- dy = y - y1;
- } else {
- var param = dot / len_sq;
- var xx, yy;
- if (param < 0) {
- xx = x1;
- yy = y1;
- } else if (param > 1) {
- xx = x2;
- yy = y2;
- } else {
- xx = x1 + param * C;
- yy = y1 + param * D;
- }
- dx = x - xx;
- dy = y - yy;
- }
- return dx * dx + dy * dy <= d * d;
- }
- function modulo(n, mod) {
- return ((n % mod) + mod) % mod;
- }
- function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
- var dx = x - xc;
- var dy = y - yc;
- var r_sq = dx * dx + dy * dy;
- var rmin = Math.max(0, radius - d);
- var rmax = radius + d;
- if (r_sq < rmin * rmin || r_sq > rmax * rmax)
- return false;
- var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
- var dx1 = xc + radius * Math.cos(angle1) - x;
- var dy1 = yc + radius * Math.sin(angle1) - y;
- if (dx1 * dx1 + dy1 * dy1 <= d * d)
- return true;
- var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
- var dx2 = xc + radius * Math.cos(angle2) - x;
- var dy2 = yc + radius * Math.sin(angle2) - y;
- if (dx2 * dx2 + dy2 * dy2 <= d * d)
- return true;
- var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
- if (angle1 > angle2)
- return (angle >= angle2 || angle <= angle1);
- else
- return (angle >= angle1 && angle <= angle2);
- }
- function pointWithinPad(x, y, pad) {
- var v = [x - pad.pos[0], y - pad.pos[1]];
- v = rotateVector(v, pad.angle);
- if (pad.offset) {
- v[0] -= pad.offset[0];
- v[1] -= pad.offset[1];
- }
- return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
- }
- function netHitScan(layer, x, y) {
- // Check track segments
- if (settings.renderTracks && pcbdata.tracks) {
- for (var track of pcbdata.tracks[layer]) {
- if ('radius' in track) {
- if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
- return track.net;
- }
- } else {
- if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
- return track.net;
- }
- }
- }
- }
- // Check pads
- if (settings.renderPads) {
- for (var footprint of pcbdata.footprints) {
- for (var pad of footprint.pads) {
- if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
- return pad.net;
- }
- }
- }
- }
- return null;
- }
- function pointWithinFootprintBbox(x, y, bbox) {
- var v = [x - bbox.pos[0], y - bbox.pos[1]];
- v = rotateVector(v, bbox.angle);
- return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
- bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
- }
- function bboxHitScan(layer, x, y) {
- var result = [];
- for (var i = 0; i < pcbdata.footprints.length; i++) {
- var footprint = pcbdata.footprints[i];
- if (footprint.layer == layer) {
- if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
- result.push(i);
- }
- }
- }
- return result;
- }
- function handlePointerDown(e, layerdict) {
- if (e.button != 0 && e.button != 1) {
- return;
- }
- e.preventDefault();
- e.stopPropagation();
- if (!e.hasOwnProperty("offsetX")) {
- // The polyfill doesn't set this properly
- e.offsetX = e.pageX - e.currentTarget.offsetLeft;
- e.offsetY = e.pageY - e.currentTarget.offsetTop;
- }
- layerdict.pointerStates[e.pointerId] = {
- distanceTravelled: 0,
- lastX: e.offsetX,
- lastY: e.offsetY,
- downTime: Date.now(),
- };
- }
- function handleMouseClick(e, layerdict) {
- if (!e.hasOwnProperty("offsetX")) {
- // The polyfill doesn't set this properly
- e.offsetX = e.pageX - e.currentTarget.offsetLeft;
- e.offsetY = e.pageY - e.currentTarget.offsetTop;
- }
- var x = e.offsetX;
- var y = e.offsetY;
- var t = layerdict.transform;
- var flip = layerdict.layer === "B";
- if (flip) {
- x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
- } else {
- x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
- }
- y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
- var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
- if ("nets" in pcbdata) {
- var net = netHitScan(layerdict.layer, ...v);
- if (net !== highlightedNet) {
- netClicked(net);
- }
- }
- if (highlightedNet === null) {
- var footprints = bboxHitScan(layerdict.layer, ...v);
- if (footprints.length > 0) {
- footprintsClicked(footprints);
- }
- }
- }
- function handlePointerLeave(e, layerdict) {
- e.preventDefault();
- e.stopPropagation();
- if (!settings.redrawOnDrag) {
- redrawCanvas(layerdict);
- }
- delete layerdict.pointerStates[e.pointerId];
- }
- function resetTransform(layerdict) {
- layerdict.transform.panx = 0;
- layerdict.transform.pany = 0;
- layerdict.transform.zoom = 1;
- redrawCanvas(layerdict);
- }
- function handlePointerUp(e, layerdict) {
- if (!e.hasOwnProperty("offsetX")) {
- // The polyfill doesn't set this properly
- e.offsetX = e.pageX - e.currentTarget.offsetLeft;
- e.offsetY = e.pageY - e.currentTarget.offsetTop;
- }
- e.preventDefault();
- e.stopPropagation();
- if (e.button == 2) {
- // Reset pan and zoom on right click.
- resetTransform(layerdict);
- layerdict.anotherPointerTapped = false;
- return;
- }
- // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
- var ptr = layerdict.pointerStates[e.pointerId];
- ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
- if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
- if (Object.keys(layerdict.pointerStates).length == 1) {
- if (layerdict.anotherPointerTapped) {
- // This is the second pointer coming off of a two-finger tap
- resetTransform(layerdict);
- } else {
- // This is just a regular tap
- handleMouseClick(e, layerdict);
- }
- layerdict.anotherPointerTapped = false;
- } else {
- // This is the first finger coming off of what could become a two-finger tap
- layerdict.anotherPointerTapped = true;
- }
- } else {
- if (!settings.redrawOnDrag) {
- redrawCanvas(layerdict);
- }
- layerdict.anotherPointerTapped = false;
- }
- delete layerdict.pointerStates[e.pointerId];
- }
- function handlePointerMove(e, layerdict) {
- if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
- return;
- }
- e.preventDefault();
- e.stopPropagation();
- if (!e.hasOwnProperty("offsetX")) {
- // The polyfill doesn't set this properly
- e.offsetX = e.pageX - e.currentTarget.offsetLeft;
- e.offsetY = e.pageY - e.currentTarget.offsetTop;
- }
- var thisPtr = layerdict.pointerStates[e.pointerId];
- var dx = e.offsetX - thisPtr.lastX;
- var dy = e.offsetY - thisPtr.lastY;
- // If this number is low on pointer up, we count the action as a click
- thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
- if (Object.keys(layerdict.pointerStates).length == 1) {
- // This is a simple drag
- layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
- layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
- } else if (Object.keys(layerdict.pointerStates).length == 2) {
- var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
- var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
- var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
- var scaleFactor = newDist / oldDist;
- if (scaleFactor != NaN) {
- layerdict.transform.zoom *= scaleFactor;
- var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
- layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
- layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
- }
- }
- thisPtr.lastX = e.offsetX;
- thisPtr.lastY = e.offsetY;
- if (settings.redrawOnDrag) {
- redrawCanvas(layerdict);
- }
- }
- function handleMouseWheel(e, layerdict) {
- e.preventDefault();
- e.stopPropagation();
- var t = layerdict.transform;
- var wheeldelta = e.deltaY;
- if (e.deltaMode == 1) {
- // FF only, scroll by lines
- wheeldelta *= 30;
- } else if (e.deltaMode == 2) {
- wheeldelta *= 300;
- }
- var m = Math.pow(1.1, -wheeldelta / 40);
- // Limit amount of zoom per tick.
- if (m > 2) {
- m = 2;
- } else if (m < 0.5) {
- m = 0.5;
- }
- t.zoom *= m;
- var zoomd = (1 - m) / t.zoom;
- t.panx += devicePixelRatio * e.offsetX * zoomd;
- t.pany += devicePixelRatio * e.offsetY * zoomd;
- redrawCanvas(layerdict);
- }
- function addMouseHandlers(div, layerdict) {
- div.addEventListener("pointerdown", function(e) {
- handlePointerDown(e, layerdict);
- });
- div.addEventListener("pointermove", function(e) {
- handlePointerMove(e, layerdict);
- });
- div.addEventListener("pointerup", function(e) {
- handlePointerUp(e, layerdict);
- });
- var pointerleave = function(e) {
- handlePointerLeave(e, layerdict);
- }
- div.addEventListener("pointercancel", pointerleave);
- div.addEventListener("pointerleave", pointerleave);
- div.addEventListener("pointerout", pointerleave);
- div.onwheel = function(e) {
- handleMouseWheel(e, layerdict);
- }
- for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
- element.addEventListener("contextmenu", function(e) {
- e.preventDefault();
- }, false);
- }
- }
- function setRedrawOnDrag(value) {
- settings.redrawOnDrag = value;
- writeStorage("redrawOnDrag", value);
- }
- function setBoardRotation(value) {
- settings.boardRotation = value * 5;
- writeStorage("boardRotation", settings.boardRotation);
- document.getElementById("rotationDegree").textContent = settings.boardRotation;
- resizeAll();
- }
- function setOffsetBackRotation(value) {
- settings.offsetBackRotation = value;
- writeStorage("offsetBackRotation", value);
- resizeAll();
- }
- function initRender() {
- allcanvas = {
- front: {
- transform: {
- x: 0,
- y: 0,
- s: 1,
- panx: 0,
- pany: 0,
- zoom: 1,
- },
- pointerStates: {},
- anotherPointerTapped: false,
- bg: document.getElementById("F_bg"),
- fab: document.getElementById("F_fab"),
- silk: document.getElementById("F_slk"),
- highlight: document.getElementById("F_hl"),
- layer: "F",
- },
- back: {
- transform: {
- x: 0,
- y: 0,
- s: 1,
- panx: 0,
- pany: 0,
- zoom: 1,
- },
- pointerStates: {},
- anotherPointerTapped: false,
- bg: document.getElementById("B_bg"),
- fab: document.getElementById("B_fab"),
- silk: document.getElementById("B_slk"),
- highlight: document.getElementById("B_hl"),
- layer: "B",
- }
- };
- addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
- addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
- }
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- /*
- * Table reordering via Drag'n'Drop
- * Inspired by: https://htmldom.dev/drag-and-drop-table-column
- */
- function setBomHandlers() {
- const bom = document.getElementById('bomtable');
- let dragName;
- let placeHolderElements;
- let draggingElement;
- let forcePopulation;
- let xOffset;
- let yOffset;
- let wasDragged;
- const mouseUpHandler = function(e) {
- // Delete dragging element
- draggingElement.remove();
- // Make BOM selectable again
- bom.style.removeProperty("userSelect");
- // Remove listeners
- document.removeEventListener('mousemove', mouseMoveHandler);
- document.removeEventListener('mouseup', mouseUpHandler);
- if (wasDragged) {
- // Redraw whole BOM
- populateBomTable();
- }
- }
- const mouseMoveHandler = function(e) {
- // Notice the dragging
- wasDragged = true;
- // Make the dragged element visible
- draggingElement.style.removeProperty("display");
- // Set elements position to mouse position
- draggingElement.style.left = `${e.screenX - xOffset}px`;
- draggingElement.style.top = `${e.screenY - yOffset}px`;
- // Forced redrawing of BOM table
- if (forcePopulation) {
- forcePopulation = false;
- // Copy array
- phe = Array.from(placeHolderElements);
- // populate BOM table again
- populateBomHeader(dragName, phe);
- populateBomBody(dragName, phe);
- }
- // Set up array of hidden columns
- var hiddenColumns = Array.from(settings.hiddenColumns);
- // In the ungrouped mode, quantity don't exist
- if (settings.bommode === "ungrouped")
- hiddenColumns.push("Quantity");
- // If no checkbox fields can be found, we consider them hidden
- if (settings.checkboxes.length == 0)
- hiddenColumns.push("checkboxes");
- // Get table headers and group them into checkboxes, extrafields and normal headers
- const bh = document.getElementById("bomhead");
- headers = Array.from(bh.querySelectorAll("th"))
- headers.shift() // numCol is not part of the columnOrder
- headerGroups = []
- lastCompoundClass = null;
- for (i = 0; i < settings.columnOrder.length; i++) {
- cElem = settings.columnOrder[i];
- if (hiddenColumns.includes(cElem)) {
- // Hidden columns appear as a dummy element
- headerGroups.push([]);
- continue;
- }
- elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
- if (elem.classList.contains("bom-checkbox")) {
- if (lastCompoundClass === "bom-checkbox") {
- cbGroup = headerGroups.pop();
- cbGroup.push(elem);
- headerGroups.push(cbGroup);
- } else {
- lastCompoundClass = "bom-checkbox";
- headerGroups.push([elem])
- }
- } else {
- headerGroups.push([elem])
- }
- }
- // Copy settings.columnOrder
- var columns = Array.from(settings.columnOrder)
- // Set up array with indices of hidden columns
- var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
- var dragIndex = columns.indexOf(dragName);
- var swapIndex = dragIndex;
- var swapDone = false;
- // Check if the current dragged element is swapable with the left or right element
- if (dragIndex > 0) {
- // Get left headers boundingbox
- swapIndex = dragIndex - 1;
- while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
- swapIndex--;
- if (!hiddenIndices.includes(swapIndex)) {
- box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
- if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
- swapElement = columns[dragIndex];
- columns.splice(dragIndex, 1);
- columns.splice(swapIndex, 0, swapElement);
- forcePopulation = true;
- swapDone = true;
- }
- }
- }
- if ((!swapDone) && dragIndex < headerGroups.length - 1) {
- // Get right headers boundingbox
- swapIndex = dragIndex + 1;
- while (hiddenIndices.includes(swapIndex))
- swapIndex++;
- if (swapIndex < headerGroups.length) {
- box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
- if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
- swapElement = columns[dragIndex];
- columns.splice(dragIndex, 1);
- columns.splice(swapIndex, 0, swapElement);
- forcePopulation = true;
- swapDone = true;
- }
- }
- }
- // Write back change to storage
- if (swapDone) {
- settings.columnOrder = columns
- writeStorage("columnOrder", JSON.stringify(columns));
- }
- }
- const mouseDownHandler = function(e) {
- var target = e.target;
- if (target.tagName.toLowerCase() != "td")
- target = target.parentElement;
- // Used to check if a dragging has ever happened
- wasDragged = false;
- // Create new element which will be displayed as the dragged column
- draggingElement = document.createElement("div")
- draggingElement.classList.add("dragging");
- draggingElement.style.display = "none";
- draggingElement.style.position = "absolute";
- draggingElement.style.overflow = "hidden";
- // Get bomhead and bombody elements
- const bh = document.getElementById("bomhead");
- const bb = document.getElementById("bombody");
- // Get all compound headers for the current column
- var compoundHeaders;
- if (target.classList.contains("bom-checkbox")) {
- compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
- } else {
- compoundHeaders = [target];
- }
- // Create new table which will display the column
- var newTable = document.createElement("table");
- newTable.classList.add("bom");
- newTable.style.background = "white";
- draggingElement.append(newTable);
- // Create new header element
- var newHeader = document.createElement("thead");
- newTable.append(newHeader);
- // Set up array for storing all placeholder elements
- placeHolderElements = [];
- // Add all compound headers to the new thead element and placeholders
- compoundHeaders.forEach(function(h) {
- clone = cloneElementWithDimensions(h);
- newHeader.append(clone);
- placeHolderElements.push(clone);
- });
- // Create new body element
- var newBody = document.createElement("tbody");
- newTable.append(newBody);
- // Get indices for compound headers
- var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
- // For each row in the BOM body...
- var rows = bb.querySelectorAll("tr");
- rows.forEach(function(row) {
- // ..get the cells for the compound column
- const tds = row.querySelectorAll("td");
- var copytds = idxs.map(i => tds[i]);
- // Add them to the new element and the placeholders
- var newRow = document.createElement("tr");
- copytds.forEach(function(td) {
- clone = cloneElementWithDimensions(td);
- newRow.append(clone);
- placeHolderElements.push(clone);
- });
- newBody.append(newRow);
- });
- // Compute width for compound header
- var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
- draggingElement.style.width = `${width}px`;
- // Insert the new dragging element and disable selection on BOM
- bom.insertBefore(draggingElement, null);
- bom.style.userSelect = "none";
- // Determine the mouse position offset
- xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
- yOffset = e.screenY - compoundHeaders[0].offsetTop;
- // Get name for the column in settings.columnOrder
- dragName = getColumnOrderName(target);
- // Change text and class for placeholder elements
- placeHolderElements = placeHolderElements.map(function(e) {
- newElem = cloneElementWithDimensions(e);
- newElem.textContent = "";
- newElem.classList.add("placeholder");
- return newElem;
- });
- // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
- forcePopulation = true;
- // Add listeners for move and up on mouse
- document.addEventListener('mousemove', mouseMoveHandler);
- document.addEventListener('mouseup', mouseUpHandler);
- }
- // In netlist mode, there is nothing to reorder
- if (settings.bommode === "netlist")
- return;
- // Add mouseDownHandler to every column except the numCol
- bom.querySelectorAll("th")
- .forEach(function(head) {
- if (!head.classList.contains("numCol")) {
- head.onmousedown = mouseDownHandler;
- }
- });
- }
- function getBoundingClientRectFromMultiple(elements) {
- var elems = Array.from(elements);
- if (elems.length == 0)
- return null;
- var box = elems.shift()
- .getBoundingClientRect();
- elems.forEach(function(elem) {
- var elembox = elem.getBoundingClientRect();
- box.left = Math.min(elembox.left, box.left);
- box.top = Math.min(elembox.top, box.top);
- box.width += elembox.width;
- box.height = Math.max(elembox.height, box.height);
- });
- return box;
- }
- function cloneElementWithDimensions(elem) {
- var newElem = elem.cloneNode(true);
- newElem.style.height = window.getComputedStyle(elem).height;
- newElem.style.width = window.getComputedStyle(elem).width;
- return newElem;
- }
- function getBomTableHeaderIndex(elem) {
- const bh = document.getElementById('bomhead');
- const ths = Array.from(bh.querySelectorAll("th"));
- return ths.indexOf(elem);
- }
- function getColumnOrderName(elem) {
- var cname = elem.getAttribute("col_name");
- if (cname === "bom-checkbox")
- return "checkboxes";
- else
- return cname;
- }
- function resizableGrid(tablehead) {
- var cols = tablehead.firstElementChild.children;
- var rowWidth = tablehead.offsetWidth;
- for (var i = 1; i < cols.length; i++) {
- if (cols[i].classList.contains("bom-checkbox"))
- continue;
- cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
- }
- for (var i = 1; i < cols.length - 1; i++) {
- var div = document.createElement('div');
- div.className = "column-width-handle";
- cols[i].appendChild(div);
- setListeners(div);
- }
- function setListeners(div) {
- var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
- div.addEventListener('mousedown', function(e) {
- e.preventDefault();
- e.stopPropagation();
- curCol = e.target.parentElement;
- nxtCol = curCol.nextElementSibling;
- startX = e.pageX;
- var padding = paddingDiff(curCol);
- rowWidth = curCol.parentElement.offsetWidth;
- curColWidth = curCol.clientWidth - padding;
- nxtColWidth = nxtCol.clientWidth - padding;
- });
- document.addEventListener('mousemove', function(e) {
- if (startX) {
- var diffX = e.pageX - startX;
- diffX = -Math.min(-diffX, curColWidth - 20);
- diffX = Math.min(diffX, nxtColWidth - 20);
- curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
- nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
- console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
- }
- });
- document.addEventListener('mouseup', function(e) {
- curCol = undefined;
- nxtCol = undefined;
- startX = undefined;
- nxtColWidth = undefined;
- curColWidth = undefined
- });
- }
- function paddingDiff(col) {
- if (getStyleVal(col, 'box-sizing') == 'border-box') {
- return 0;
- }
- var padLeft = getStyleVal(col, 'padding-left');
- var padRight = getStyleVal(col, 'padding-right');
- return (parseInt(padLeft) + parseInt(padRight));
- }
- function getStyleVal(elm, css) {
- return (window.getComputedStyle(elm, null).getPropertyValue(css))
- }
- }
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- /* DOM manipulation and misc code */
- var bomsplit;
- var canvassplit;
- var initDone = false;
- var bomSortFunction = null;
- var currentSortColumn = null;
- var currentSortOrder = null;
- var currentHighlightedRowId;
- var highlightHandlers = [];
- var footprintIndexToHandler = {};
- var netsToHandler = {};
- var markedFootprints = new Set();
- var highlightedFootprints = [];
- var highlightedNet = null;
- var lastClicked;
- function dbg(html) {
- dbgdiv.innerHTML = html;
- }
- function redrawIfInitDone() {
- if (initDone) {
- redrawCanvas(allcanvas.front);
- redrawCanvas(allcanvas.back);
- }
- }
- function padsVisible(value) {
- writeStorage("padsVisible", value);
- settings.renderPads = value;
- redrawIfInitDone();
- }
- function referencesVisible(value) {
- writeStorage("referencesVisible", value);
- settings.renderReferences = value;
- redrawIfInitDone();
- }
- function valuesVisible(value) {
- writeStorage("valuesVisible", value);
- settings.renderValues = value;
- redrawIfInitDone();
- }
- function tracksVisible(value) {
- writeStorage("tracksVisible", value);
- settings.renderTracks = value;
- redrawIfInitDone();
- }
- function zonesVisible(value) {
- writeStorage("zonesVisible", value);
- settings.renderZones = value;
- redrawIfInitDone();
- }
- function dnpOutline(value) {
- writeStorage("dnpOutline", value);
- settings.renderDnpOutline = value;
- redrawIfInitDone();
- }
- function setDarkMode(value) {
- if (value) {
- topmostdiv.classList.add("dark");
- } else {
- topmostdiv.classList.remove("dark");
- }
- writeStorage("darkmode", value);
- settings.darkMode = value;
- redrawIfInitDone();
- if (initDone) {
- populateBomTable();
- }
- }
- function setShowBOMColumn(field, value) {
- if (field === "references") {
- var rl = document.getElementById("reflookup");
- rl.disabled = !value;
- if (!value) {
- rl.value = "";
- updateRefLookup("");
- }
- }
- var n = settings.hiddenColumns.indexOf(field);
- if (value) {
- if (n != -1) {
- settings.hiddenColumns.splice(n, 1);
- }
- } else {
- if (n == -1) {
- settings.hiddenColumns.push(field);
- }
- }
- writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
- if (initDone) {
- populateBomTable();
- }
- redrawIfInitDone();
- }
- function setFullscreen(value) {
- if (value) {
- document.documentElement.requestFullscreen();
- } else {
- document.exitFullscreen();
- }
- }
- function fabricationVisible(value) {
- writeStorage("fabricationVisible", value);
- settings.renderFabrication = value;
- redrawIfInitDone();
- }
- function silkscreenVisible(value) {
- writeStorage("silkscreenVisible", value);
- settings.renderSilkscreen = value;
- redrawIfInitDone();
- }
- function setHighlightPin1(value) {
- writeStorage("highlightpin1", value);
- settings.highlightpin1 = value;
- redrawIfInitDone();
- }
- function getStoredCheckboxRefs(checkbox) {
- function convert(ref) {
- var intref = parseInt(ref);
- if (isNaN(intref)) {
- for (var i = 0; i < pcbdata.footprints.length; i++) {
- if (pcbdata.footprints[i].ref == ref) {
- return i;
- }
- }
- return -1;
- } else {
- return intref;
- }
- }
- if (!(checkbox in settings.checkboxStoredRefs)) {
- var val = readStorage("checkbox_" + checkbox);
- settings.checkboxStoredRefs[checkbox] = val ? val : "";
- }
- if (!settings.checkboxStoredRefs[checkbox]) {
- return new Set();
- } else {
- return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
- }
- }
- function getCheckboxState(checkbox, references) {
- var storedRefsSet = getStoredCheckboxRefs(checkbox);
- var currentRefsSet = new Set(references.map(r => r[1]));
- // Get difference of current - stored
- var difference = new Set(currentRefsSet);
- for (ref of storedRefsSet) {
- difference.delete(ref);
- }
- if (difference.size == 0) {
- // All the current refs are stored
- return "checked";
- } else if (difference.size == currentRefsSet.size) {
- // None of the current refs are stored
- return "unchecked";
- } else {
- // Some of the refs are stored
- return "indeterminate";
- }
- }
- function setBomCheckboxState(checkbox, element, references) {
- var state = getCheckboxState(checkbox, references);
- element.checked = (state == "checked");
- element.indeterminate = (state == "indeterminate");
- }
- function createCheckboxChangeHandler(checkbox, references, row) {
- return function () {
- refsSet = getStoredCheckboxRefs(checkbox);
- var markWhenChecked = settings.markWhenChecked == checkbox;
- eventArgs = {
- checkbox: checkbox,
- refs: references,
- }
- if (this.checked) {
- // checkbox ticked
- for (var ref of references) {
- refsSet.add(ref[1]);
- }
- if (markWhenChecked) {
- row.classList.add("checked");
- for (var ref of references) {
- markedFootprints.add(ref[1]);
- }
- drawHighlights();
- }
- eventArgs.state = 'checked';
- } else {
- // checkbox unticked
- for (var ref of references) {
- refsSet.delete(ref[1]);
- }
- if (markWhenChecked) {
- row.classList.remove("checked");
- for (var ref of references) {
- markedFootprints.delete(ref[1]);
- }
- drawHighlights();
- }
- eventArgs.state = 'unchecked';
- }
- settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
- writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
- updateCheckboxStats(checkbox);
- EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
- }
- }
- function clearHighlightedFootprints() {
- if (currentHighlightedRowId) {
- document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
- currentHighlightedRowId = null;
- highlightedFootprints = [];
- highlightedNet = null;
- }
- }
- function createRowHighlightHandler(rowid, refs, net) {
- return function () {
- if (currentHighlightedRowId) {
- if (currentHighlightedRowId == rowid) {
- return;
- }
- document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
- }
- document.getElementById(rowid).classList.add("highlighted");
- currentHighlightedRowId = rowid;
- highlightedFootprints = refs ? refs.map(r => r[1]) : [];
- highlightedNet = net;
- drawHighlights();
- EventHandler.emitEvent(
- IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
- rowid: rowid,
- refs: refs,
- net: net
- });
- }
- }
- function updateNetColors() {
- writeStorage("netColors", JSON.stringify(settings.netColors));
- redrawIfInitDone();
- }
- function netColorChangeHandler(net) {
- return (event) => {
- settings.netColors[net] = event.target.value;
- updateNetColors();
- }
- }
- function netColorRightClick(net) {
- return (event) => {
- if (event.button == 2) {
- event.preventDefault();
- event.stopPropagation();
- var style = getComputedStyle(topmostdiv);
- var defaultNetColor = style.getPropertyValue('--track-color').trim();
- event.target.value = defaultNetColor;
- delete settings.netColors[net];
- updateNetColors();
- }
- }
- }
- function entryMatches(entry) {
- if (settings.bommode == "netlist") {
- // entry is just a net name
- return entry.toLowerCase().indexOf(filter) >= 0;
- }
- // check refs
- if (!settings.hiddenColumns.includes("references")) {
- for (var ref of entry) {
- if (ref[0].toLowerCase().indexOf(filter) >= 0) {
- return true;
- }
- }
- }
- // check fields
- for (var i in config.fields) {
- var f = config.fields[i];
- if (!settings.hiddenColumns.includes(f)) {
- for (var ref of entry) {
- if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) {
- return true;
- }
- }
- }
- }
- return false;
- }
- function findRefInEntry(entry) {
- return entry.filter(r => r[0].toLowerCase() == reflookup);
- }
- function highlightFilter(s) {
- if (!filter) {
- return s;
- }
- var parts = s.toLowerCase().split(filter);
- if (parts.length == 1) {
- return s;
- }
- var r = "";
- var pos = 0;
- for (var i in parts) {
- if (i > 0) {
- r += '<mark class="highlight">' +
- s.substring(pos, pos + filter.length) +
- '</mark>';
- pos += filter.length;
- }
- r += s.substring(pos, pos + parts[i].length);
- pos += parts[i].length;
- }
- return r;
- }
- function checkboxSetUnsetAllHandler(checkboxname) {
- return function () {
- var checkboxnum = 0;
- while (checkboxnum < settings.checkboxes.length &&
- settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
- checkboxnum++;
- }
- if (checkboxnum >= settings.checkboxes.length) {
- return;
- }
- var allset = true;
- var checkbox;
- var row;
- for (row of bombody.childNodes) {
- checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
- if (!checkbox.checked || checkbox.indeterminate) {
- allset = false;
- break;
- }
- }
- for (row of bombody.childNodes) {
- checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
- checkbox.checked = !allset;
- checkbox.indeterminate = false;
- checkbox.onchange();
- }
- }
- }
- function createColumnHeader(name, cls, comparator, is_checkbox = false) {
- var th = document.createElement("TH");
- th.innerHTML = name;
- th.classList.add(cls);
- if (is_checkbox)
- th.setAttribute("col_name", "bom-checkbox");
- else
- th.setAttribute("col_name", name);
- var span = document.createElement("SPAN");
- span.classList.add("sortmark");
- span.classList.add("none");
- th.appendChild(span);
- var spacer = document.createElement("div");
- spacer.className = "column-spacer";
- th.appendChild(spacer);
- spacer.onclick = function () {
- if (currentSortColumn && th !== currentSortColumn) {
- // Currently sorted by another column
- currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
- currentSortColumn.childNodes[1].classList.add("none");
- currentSortColumn = null;
- currentSortOrder = null;
- }
- if (currentSortColumn && th === currentSortColumn) {
- // Already sorted by this column
- if (currentSortOrder == "asc") {
- // Sort by this column, descending order
- bomSortFunction = function (a, b) {
- return -comparator(a, b);
- }
- currentSortColumn.childNodes[1].classList.remove("asc");
- currentSortColumn.childNodes[1].classList.add("desc");
- currentSortOrder = "desc";
- } else {
- // Unsort
- bomSortFunction = null;
- currentSortColumn.childNodes[1].classList.remove("desc");
- currentSortColumn.childNodes[1].classList.add("none");
- currentSortColumn = null;
- currentSortOrder = null;
- }
- } else {
- // Sort by this column, ascending order
- bomSortFunction = comparator;
- currentSortColumn = th;
- currentSortColumn.childNodes[1].classList.remove("none");
- currentSortColumn.childNodes[1].classList.add("asc");
- currentSortOrder = "asc";
- }
- populateBomBody();
- }
- if (is_checkbox) {
- spacer.onclick = fancyDblClickHandler(
- spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
- }
- return th;
- }
- function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
- while (bomhead.firstChild) {
- bomhead.removeChild(bomhead.firstChild);
- }
- var tr = document.createElement("TR");
- var th = document.createElement("TH");
- th.classList.add("numCol");
- var vismenu = document.createElement("div");
- vismenu.id = "vismenu";
- vismenu.classList.add("menu");
- var visbutton = document.createElement("div");
- visbutton.classList.add("visbtn");
- visbutton.classList.add("hideonprint");
- var viscontent = document.createElement("div");
- viscontent.classList.add("menu-content");
- viscontent.id = "vismenu-content";
- settings.columnOrder.forEach(column => {
- if (typeof column !== "string")
- return;
- // Skip empty columns
- if (column === "checkboxes" && settings.checkboxes.length == 0)
- return;
- else if (column === "Quantity" && settings.bommode == "ungrouped")
- return;
- var label = document.createElement("label");
- label.classList.add("menu-label");
- var input = document.createElement("input");
- input.classList.add("visibility_checkbox");
- input.type = "checkbox";
- input.onchange = function (e) {
- setShowBOMColumn(column, e.target.checked)
- };
- input.checked = !(settings.hiddenColumns.includes(column));
- label.appendChild(input);
- if (column.length > 0)
- label.append(column[0].toUpperCase() + column.slice(1));
- viscontent.appendChild(label);
- });
- viscontent.childNodes[0].classList.add("menu-label-top");
- vismenu.appendChild(visbutton);
- if (settings.bommode != "netlist") {
- vismenu.appendChild(viscontent);
- th.appendChild(vismenu);
- }
- tr.appendChild(th);
- var checkboxCompareClosure = function (checkbox) {
- return (a, b) => {
- var stateA = getCheckboxState(checkbox, a);
- var stateB = getCheckboxState(checkbox, b);
- if (stateA > stateB) return -1;
- if (stateA < stateB) return 1;
- return 0;
- }
- }
- var stringFieldCompareClosure = function (fieldIndex) {
- return (a, b) => {
- var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
- var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
- if (fa != fb) return fa > fb ? 1 : -1;
- else return 0;
- }
- }
- var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
- var compareRefs = (a, b) => {
- var ra = referenceRegex.exec(a);
- var rb = referenceRegex.exec(b);
- if (ra === null || rb === null) {
- if (a != b) return a > b ? 1 : -1;
- return 0;
- } else {
- if (ra.groups.prefix != rb.groups.prefix) {
- return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
- }
- if (ra.groups.number != rb.groups.number) {
- return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
- }
- return 0;
- }
- }
- if (settings.bommode == "netlist") {
- tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => {
- if (a > b) return -1;
- if (a < b) return 1;
- return 0;
- }));
- tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => {
- return 0;
- }));
- } else {
- // Filter hidden columns
- var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
- var valueIndex = config.fields.indexOf("Value");
- var footprintIndex = config.fields.indexOf("Footprint");
- columns.forEach((column) => {
- if (column === placeHolderColumn) {
- var n = 1;
- if (column === "checkboxes")
- n = settings.checkboxes.length;
- for (i = 0; i < n; i++) {
- td = placeHolderElements.shift();
- tr.appendChild(td);
- }
- return;
- } else if (column === "checkboxes") {
- for (var checkbox of settings.checkboxes) {
- th = createColumnHeader(
- checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
- tr.appendChild(th);
- }
- } else if (column === "References") {
- tr.appendChild(createColumnHeader("References", "references", (a, b) => {
- var i = 0;
- while (i < a.length && i < b.length) {
- if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
- i++;
- }
- return a.length - b.length;
- }));
- } else if (column === "Value") {
- tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
- var ra = a[0][1], rb = b[0][1];
- return valueCompare(
- pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
- pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
- }));
- return;
- } else if (column === "Footprint") {
- tr.appendChild(createColumnHeader(
- "Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
- } else if (column === "Quantity" && settings.bommode == "grouped") {
- tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
- return a.length - b.length;
- }));
- } else {
- // Other fields
- var i = config.fields.indexOf(column);
- if (i < 0)
- return;
- tr.appendChild(createColumnHeader(
- column, `field${i + 1}`, stringFieldCompareClosure(i)));
- }
- });
- }
- bomhead.appendChild(tr);
- }
- function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
- const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
- while (bom.firstChild) {
- bom.removeChild(bom.firstChild);
- }
- highlightHandlers = [];
- footprintIndexToHandler = {};
- netsToHandler = {};
- currentHighlightedRowId = null;
- var first = true;
- var style = getComputedStyle(topmostdiv);
- var defaultNetColor = style.getPropertyValue('--track-color').trim();
- if (settings.bommode == "netlist") {
- bomtable = pcbdata.nets.slice();
- } else {
- switch (settings.canvaslayout) {
- case 'F':
- bomtable = pcbdata.bom.F.slice();
- break;
- case 'FB':
- bomtable = pcbdata.bom.both.slice();
- break;
- case 'B':
- bomtable = pcbdata.bom.B.slice();
- break;
- }
- if (settings.bommode == "ungrouped") {
- // expand bom table
- expandedTable = []
- for (var bomentry of bomtable) {
- for (var ref of bomentry) {
- expandedTable.push([ref]);
- }
- }
- bomtable = expandedTable;
- }
- }
- if (bomSortFunction) {
- bomtable = bomtable.sort(bomSortFunction);
- }
- for (var i in bomtable) {
- var bomentry = bomtable[i];
- if (filter && !entryMatches(bomentry)) {
- continue;
- }
- var references = null;
- var netname = null;
- var tr = document.createElement("TR");
- var td = document.createElement("TD");
- var rownum = +i + 1;
- tr.id = "bomrow" + rownum;
- td.textContent = rownum;
- tr.appendChild(td);
- if (settings.bommode == "netlist") {
- netname = bomentry;
- td = document.createElement("TD");
- td.innerHTML = highlightFilter(netname ? netname : "<no net>");
- tr.appendChild(td);
- var color = settings.netColors[netname] || defaultNetColor;
- td = document.createElement("TD");
- var colorBox = document.createElement("INPUT");
- colorBox.type = "color";
- colorBox.value = color;
- colorBox.onchange = netColorChangeHandler(netname);
- colorBox.onmouseup = netColorRightClick(netname);
- colorBox.oncontextmenu = (e) => e.preventDefault();
- td.appendChild(colorBox);
- td.classList.add("color-column");
- tr.appendChild(td);
- } else {
- if (reflookup) {
- references = findRefInEntry(bomentry);
- if (references.length == 0) {
- continue;
- }
- } else {
- references = bomentry;
- }
- // Filter hidden columns
- var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
- columns.forEach((column) => {
- if (column === placeholderColumn) {
- var n = 1;
- if (column === "checkboxes")
- n = settings.checkboxes.length;
- for (i = 0; i < n; i++) {
- td = placeHolderElements.shift();
- tr.appendChild(td);
- }
- return;
- } else if (column === "checkboxes") {
- for (var checkbox of settings.checkboxes) {
- if (checkbox) {
- td = document.createElement("TD");
- var input = document.createElement("input");
- input.type = "checkbox";
- input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
- setBomCheckboxState(checkbox, input, references);
- if (input.checked && settings.markWhenChecked == checkbox) {
- tr.classList.add("checked");
- }
- td.appendChild(input);
- tr.appendChild(td);
- }
- }
- } else if (column === "References") {
- td = document.createElement("TD");
- td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
- tr.appendChild(td);
- } else if (column === "Quantity" && settings.bommode == "grouped") {
- // Quantity
- td = document.createElement("TD");
- td.textContent = references.length;
- tr.appendChild(td);
- } else {
- // All the other fields
- var field_index = config.fields.indexOf(column)
- if (field_index < 0)
- return;
- var valueSet = new Set();
- references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
- td = document.createElement("TD");
- var output = new Array();
- for (let item of valueSet) {
- const visible = highlightFilter(String(item));
- if (typeof item === 'string' && item.match(urlRegex)) {
- output.push(`<a href="${item}" target="_blank">${visible}</a>`);
- } else {
- output.push(visible);
- }
- }
- td.innerHTML = output.join(", ");
- tr.appendChild(td);
- }
- });
- }
- bom.appendChild(tr);
- var handler = createRowHighlightHandler(tr.id, references, netname);
- tr.onmousemove = handler;
- highlightHandlers.push({
- id: tr.id,
- handler: handler,
- });
- if (references !== null) {
- for (var refIndex of references.map(r => r[1])) {
- footprintIndexToHandler[refIndex] = handler;
- }
- }
- if (netname !== null) {
- netsToHandler[netname] = handler;
- }
- if ((filter || reflookup) && first) {
- handler();
- first = false;
- }
- }
- EventHandler.emitEvent(
- IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
- filter: filter,
- reflookup: reflookup,
- checkboxes: settings.checkboxes,
- bommode: settings.bommode,
- });
- }
- function highlightPreviousRow() {
- if (!currentHighlightedRowId) {
- highlightHandlers[highlightHandlers.length - 1].handler();
- } else {
- if (highlightHandlers.length > 1 &&
- highlightHandlers[0].id == currentHighlightedRowId) {
- highlightHandlers[highlightHandlers.length - 1].handler();
- } else {
- for (var i = 0; i < highlightHandlers.length - 1; i++) {
- if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
- highlightHandlers[i].handler();
- break;
- }
- }
- }
- }
- smoothScrollToRow(currentHighlightedRowId);
- }
- function highlightNextRow() {
- if (!currentHighlightedRowId) {
- highlightHandlers[0].handler();
- } else {
- if (highlightHandlers.length > 1 &&
- highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
- highlightHandlers[0].handler();
- } else {
- for (var i = 1; i < highlightHandlers.length; i++) {
- if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
- highlightHandlers[i].handler();
- break;
- }
- }
- }
- }
- smoothScrollToRow(currentHighlightedRowId);
- }
- function populateBomTable() {
- populateBomHeader();
- populateBomBody();
- setBomHandlers();
- resizableGrid(bomhead);
- }
- function footprintsClicked(footprintIndexes) {
- var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
- for (var i = 1; i <= footprintIndexes.length; i++) {
- var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
- if (refIndex in footprintIndexToHandler) {
- lastClicked = refIndex;
- footprintIndexToHandler[refIndex]();
- smoothScrollToRow(currentHighlightedRowId);
- break;
- }
- }
- }
- function netClicked(net) {
- if (net in netsToHandler) {
- netsToHandler[net]();
- smoothScrollToRow(currentHighlightedRowId);
- } else {
- clearHighlightedFootprints();
- highlightedNet = net;
- drawHighlights();
- }
- }
- function updateFilter(input) {
- filter = input.toLowerCase();
- populateBomTable();
- }
- function updateRefLookup(input) {
- reflookup = input.toLowerCase();
- populateBomTable();
- }
- function changeCanvasLayout(layout) {
- document.getElementById("fl-btn").classList.remove("depressed");
- document.getElementById("fb-btn").classList.remove("depressed");
- document.getElementById("bl-btn").classList.remove("depressed");
- switch (layout) {
- case 'F':
- document.getElementById("fl-btn").classList.add("depressed");
- if (settings.bomlayout != "bom-only") {
- canvassplit.collapse(1);
- }
- break;
- case 'B':
- document.getElementById("bl-btn").classList.add("depressed");
- if (settings.bomlayout != "bom-only") {
- canvassplit.collapse(0);
- }
- break;
- default:
- document.getElementById("fb-btn").classList.add("depressed");
- if (settings.bomlayout != "bom-only") {
- canvassplit.setSizes([50, 50]);
- }
- }
- settings.canvaslayout = layout;
- writeStorage("canvaslayout", layout);
- resizeAll();
- changeBomMode(settings.bommode);
- }
- function populateMetadata() {
- document.getElementById("title").innerHTML = pcbdata.metadata.title;
- document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
- document.getElementById("company").innerHTML = pcbdata.metadata.company;
- document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
- if (pcbdata.metadata.title != "") {
- document.title = pcbdata.metadata.title + " BOM";
- }
- // Calculate board stats
- var fp_f = 0,
- fp_b = 0,
- pads_f = 0,
- pads_b = 0,
- pads_th = 0;
- for (var i = 0; i < pcbdata.footprints.length; i++) {
- if (pcbdata.bom.skipped.includes(i)) continue;
- var mod = pcbdata.footprints[i];
- if (mod.layer == "F") {
- fp_f++;
- } else {
- fp_b++;
- }
- for (var pad of mod.pads) {
- if (pad.type == "th") {
- pads_th++;
- } else {
- if (pad.layers.includes("F")) {
- pads_f++;
- }
- if (pad.layers.includes("B")) {
- pads_b++;
- }
- }
- }
- }
- document.getElementById("stats-components-front").innerHTML = fp_f;
- document.getElementById("stats-components-back").innerHTML = fp_b;
- document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
- document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
- document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
- document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
- document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
- document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
- document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
- document.getElementById("stats-th-pads").innerHTML = pads_th;
- // Update version string
- document.getElementById("github-link").innerHTML = "InteractiveHtmlBom " +
- /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
- }
- function changeBomLayout(layout) {
- document.getElementById("bom-btn").classList.remove("depressed");
- document.getElementById("lr-btn").classList.remove("depressed");
- document.getElementById("tb-btn").classList.remove("depressed");
- switch (layout) {
- case 'bom-only':
- document.getElementById("bom-btn").classList.add("depressed");
- if (bomsplit) {
- bomsplit.destroy();
- bomsplit = null;
- canvassplit.destroy();
- canvassplit = null;
- }
- document.getElementById("frontcanvas").style.display = "none";
- document.getElementById("backcanvas").style.display = "none";
- document.getElementById("topmostdiv").style.height = "";
- document.getElementById("topmostdiv").style.display = "block";
- break;
- case 'top-bottom':
- document.getElementById("tb-btn").classList.add("depressed");
- document.getElementById("frontcanvas").style.display = "";
- document.getElementById("backcanvas").style.display = "";
- document.getElementById("topmostdiv").style.height = "100%";
- document.getElementById("topmostdiv").style.display = "flex";
- document.getElementById("bomdiv").classList.remove("split-horizontal");
- document.getElementById("canvasdiv").classList.remove("split-horizontal");
- document.getElementById("frontcanvas").classList.add("split-horizontal");
- document.getElementById("backcanvas").classList.add("split-horizontal");
- if (bomsplit) {
- bomsplit.destroy();
- bomsplit = null;
- canvassplit.destroy();
- canvassplit = null;
- }
- bomsplit = Split(['#bomdiv', '#canvasdiv'], {
- sizes: [50, 50],
- onDragEnd: resizeAll,
- direction: "vertical",
- gutterSize: 5
- });
- canvassplit = Split(['#frontcanvas', '#backcanvas'], {
- sizes: [50, 50],
- gutterSize: 5,
- onDragEnd: resizeAll
- });
- break;
- case 'left-right':
- document.getElementById("lr-btn").classList.add("depressed");
- document.getElementById("frontcanvas").style.display = "";
- document.getElementById("backcanvas").style.display = "";
- document.getElementById("topmostdiv").style.height = "100%";
- document.getElementById("topmostdiv").style.display = "flex";
- document.getElementById("bomdiv").classList.add("split-horizontal");
- document.getElementById("canvasdiv").classList.add("split-horizontal");
- document.getElementById("frontcanvas").classList.remove("split-horizontal");
- document.getElementById("backcanvas").classList.remove("split-horizontal");
- if (bomsplit) {
- bomsplit.destroy();
- bomsplit = null;
- canvassplit.destroy();
- canvassplit = null;
- }
- bomsplit = Split(['#bomdiv', '#canvasdiv'], {
- sizes: [50, 50],
- onDragEnd: resizeAll,
- gutterSize: 5
- });
- canvassplit = Split(['#frontcanvas', '#backcanvas'], {
- sizes: [50, 50],
- gutterSize: 5,
- direction: "vertical",
- onDragEnd: resizeAll
- });
- }
- settings.bomlayout = layout;
- writeStorage("bomlayout", layout);
- changeCanvasLayout(settings.canvaslayout);
- }
- function changeBomMode(mode) {
- document.getElementById("bom-grouped-btn").classList.remove("depressed");
- document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
- document.getElementById("bom-netlist-btn").classList.remove("depressed");
- var chkbxs = document.getElementsByClassName("visibility_checkbox");
- switch (mode) {
- case 'grouped':
- document.getElementById("bom-grouped-btn").classList.add("depressed");
- for (var i = 0; i < chkbxs.length; i++) {
- chkbxs[i].disabled = false;
- }
- break;
- case 'ungrouped':
- document.getElementById("bom-ungrouped-btn").classList.add("depressed");
- for (var i = 0; i < chkbxs.length; i++) {
- chkbxs[i].disabled = false;
- }
- break;
- case 'netlist':
- document.getElementById("bom-netlist-btn").classList.add("depressed");
- for (var i = 0; i < chkbxs.length; i++) {
- chkbxs[i].disabled = true;
- }
- }
- writeStorage("bommode", mode);
- if (mode != settings.bommode) {
- settings.bommode = mode;
- bomSortFunction = null;
- currentSortColumn = null;
- currentSortOrder = null;
- clearHighlightedFootprints();
- }
- populateBomTable();
- }
- function focusFilterField() {
- focusInputField(document.getElementById("filter"));
- }
- function focusRefLookupField() {
- focusInputField(document.getElementById("reflookup"));
- }
- function toggleBomCheckbox(bomrowid, checkboxnum) {
- if (!bomrowid || checkboxnum > settings.checkboxes.length) {
- return;
- }
- var bomrow = document.getElementById(bomrowid);
- var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
- checkbox.checked = !checkbox.checked;
- checkbox.indeterminate = false;
- checkbox.onchange();
- }
- function checkBomCheckbox(bomrowid, checkboxname) {
- var checkboxnum = 0;
- while (checkboxnum < settings.checkboxes.length &&
- settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
- checkboxnum++;
- }
- if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
- return;
- }
- var bomrow = document.getElementById(bomrowid);
- var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
- checkbox.checked = true;
- checkbox.indeterminate = false;
- checkbox.onchange();
- }
- function setBomCheckboxes(value) {
- writeStorage("bomCheckboxes", value);
- settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
- prepCheckboxes();
- populateMarkWhenCheckedOptions();
- setMarkWhenChecked(settings.markWhenChecked);
- }
- function setMarkWhenChecked(value) {
- writeStorage("markWhenChecked", value);
- settings.markWhenChecked = value;
- markedFootprints.clear();
- for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
- markedFootprints.add(ref);
- }
- populateBomTable();
- drawHighlights();
- }
- function prepCheckboxes() {
- var table = document.getElementById("checkbox-stats");
- while (table.childElementCount > 1) {
- table.removeChild(table.lastChild);
- }
- if (settings.checkboxes.length) {
- table.style.display = "";
- } else {
- table.style.display = "none";
- }
- for (var checkbox of settings.checkboxes) {
- var tr = document.createElement("TR");
- var td = document.createElement("TD");
- td.innerHTML = checkbox;
- tr.appendChild(td);
- td = document.createElement("TD");
- td.id = "checkbox-stats-" + checkbox;
- var progressbar = document.createElement("div");
- progressbar.classList.add("bar");
- td.appendChild(progressbar);
- var text = document.createElement("div");
- text.classList.add("text");
- td.appendChild(text);
- tr.appendChild(td);
- table.appendChild(tr);
- updateCheckboxStats(checkbox);
- }
- }
- function populateMarkWhenCheckedOptions() {
- var container = document.getElementById("markWhenCheckedContainer");
- if (settings.checkboxes.length == 0) {
- container.parentElement.style.display = "none";
- return;
- }
- container.innerHTML = '';
- container.parentElement.style.display = "inline-block";
- function createOption(name, displayName) {
- var id = "markWhenChecked-" + name;
- var div = document.createElement("div");
- div.classList.add("radio-container");
- var input = document.createElement("input");
- input.type = "radio";
- input.name = "markWhenChecked";
- input.value = name;
- input.id = id;
- input.onchange = () => setMarkWhenChecked(name);
- div.appendChild(input);
- // Preserve the selected element when the checkboxes change
- if (name == settings.markWhenChecked) {
- input.checked = true;
- }
- var label = document.createElement("label");
- label.innerHTML = displayName;
- label.htmlFor = id;
- div.appendChild(label);
- container.appendChild(div);
- }
- createOption("", "None");
- for (var checkbox of settings.checkboxes) {
- createOption(checkbox, checkbox);
- }
- }
- function updateCheckboxStats(checkbox) {
- var checked = getStoredCheckboxRefs(checkbox).size;
- var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
- var percent = checked * 100.0 / total;
- var td = document.getElementById("checkbox-stats-" + checkbox);
- td.firstChild.style.width = percent + "%";
- td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
- }
- function constrain(number, min, max) {
- return Math.min(Math.max(parseInt(number), min), max);
- }
- document.onkeydown = function (e) {
- switch (e.key) {
- case "n":
- if (document.activeElement.type == "text") {
- return;
- }
- if (currentHighlightedRowId !== null) {
- checkBomCheckbox(currentHighlightedRowId, "placed");
- highlightNextRow();
- e.preventDefault();
- }
- break;
- case "ArrowUp":
- highlightPreviousRow();
- e.preventDefault();
- break;
- case "ArrowDown":
- highlightNextRow();
- e.preventDefault();
- break;
- case "ArrowLeft":
- case "ArrowRight":
- if (document.activeElement.type != "text") {
- e.preventDefault();
- let boardRotationElement = document.getElementById("boardRotation")
- settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
- if (e.key == "ArrowLeft") {
- settings.boardRotation += 3; // 15 degrees
- }
- else {
- settings.boardRotation -= 3;
- }
- settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
- boardRotationElement.value = settings.boardRotation
- setBoardRotation(settings.boardRotation);
- }
- break;
- default:
- break;
- }
- if (e.altKey) {
- switch (e.key) {
- case "f":
- focusFilterField();
- e.preventDefault();
- break;
- case "r":
- focusRefLookupField();
- e.preventDefault();
- break;
- case "z":
- changeBomLayout("bom-only");
- e.preventDefault();
- break;
- case "x":
- changeBomLayout("left-right");
- e.preventDefault();
- break;
- case "c":
- changeBomLayout("top-bottom");
- e.preventDefault();
- break;
- case "v":
- changeCanvasLayout("F");
- e.preventDefault();
- break;
- case "b":
- changeCanvasLayout("FB");
- e.preventDefault();
- break;
- case "n":
- changeCanvasLayout("B");
- e.preventDefault();
- break;
- default:
- break;
- }
- if (e.key >= '1' && e.key <= '9') {
- toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
- e.preventDefault();
- }
- }
- }
- function hideNetlistButton() {
- document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
- document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
- document.getElementById("bom-netlist-btn").style.display = "none";
- }
- function topToggle() {
- var top = document.getElementById("top");
- var toptoggle = document.getElementById("toptoggle");
- if (top.style.display === "none") {
- top.style.display = "flex";
- toptoggle.classList.remove("flipped");
- } else {
- top.style.display = "none";
- toptoggle.classList.add("flipped");
- }
- }
- window.onload = function (e) {
- initUtils();
- initRender();
- initStorage();
- initDefaults();
- cleanGutters();
- populateMetadata();
- dbgdiv = document.getElementById("dbg");
- bom = document.getElementById("bombody");
- bomhead = document.getElementById("bomhead");
- filter = "";
- reflookup = "";
- if (!("nets" in pcbdata)) {
- hideNetlistButton();
- }
- initDone = true;
- setBomCheckboxes(document.getElementById("bomCheckboxes").value);
- // Triggers render
- changeBomLayout(settings.bomlayout);
- // Users may leave fullscreen without touching the checkbox. Uncheck.
- document.addEventListener('fullscreenchange', () => {
- if (!document.fullscreenElement)
- document.getElementById('fullscreenCheckbox').checked = false;
- });
- }
- window.onresize = resizeAll;
- window.matchMedia("print").addListener(resizeAll);
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- // EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => {
- // for(var tr of bom.childNodes) {
- // tr.onclick = tr.onmousemove;
- // tr.onmousemove = null;
- // };
- // });
- ///////////////////////////////////////////////
- </script>
- </head>
- <body>
- <div id="topmostdiv" class="topmostdiv">
- <div id="top">
- <div id="fileinfodiv">
- <table class="fileinfo">
- <tbody>
- <tr>
- <td id="title" class="title" style="width: 70%">
- Title
- </td>
- <td id="revision" class="title" style="width: 30%">
- Revision
- </td>
- </tr>
- <tr>
- <td id="company">
- Company
- </td>
- <td id="filedate">
- Date
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="bomcontrols">
- <div class="hideonprint menu">
- <button class="menubtn"></button>
- <div class="menu-content">
- <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
- <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
- Dark mode
- </label><!-- This comment eats space! All of it!
- --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
- <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
- Full Screen
- </label>
- <label class="menu-label" style="width: calc(50% - 18px)">
- <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
- Fab layer
- </label><!-- This comment eats space! All of it!
- --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
- <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
- Silkscreen
- </label>
- <label class="menu-label" style="width: calc(50% - 18px)">
- <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
- References
- </label><!-- This comment eats space! All of it!
- --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
- <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
- Values
- </label>
- <div id="tracksAndZonesCheckboxes">
- <label class="menu-label" style="width: calc(50% - 18px)">
- <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
- Tracks
- </label><!-- This comment eats space! All of it!
- --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
- <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
- Zones
- </label>
- </div>
- <label class="menu-label" style="width: calc(50% - 18px)">
- <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
- Pads
- </label><!-- This comment eats space! All of it!
- --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
- <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
- DNP outlined
- </label>
- <label class="menu-label">
- <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
- Continuous redraw on drag
- </label>
- <label class="menu-label">
- Highlight first pin
- <form id="highlightpin1">
- <div class="flexbox">
- <label>
- <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')">
- None
- </label>
- <label>
- <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')">
- All
- </label>
- <label>
- <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')">
- Selected
- </label>
- </div>
- </form>
- </label>
- <label class="menu-label">
- <span>Board rotation</span>
- <span style="float: right"><span id="rotationDegree">0</span>°</span>
- <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
- </label>
- <label class="menu-label">
- <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
- Offset back rotation
- </label>
- <label class="menu-label">
- <div style="margin-left: 5px">Bom checkboxes</div>
- <input id="bomCheckboxes" class="menu-textbox" type=text
- oninput="setBomCheckboxes(this.value)">
- </label>
- <label class="menu-label">
- <div style="margin-left: 5px">Mark when checked</div>
- <div id="markWhenCheckedContainer"></div>
- </label>
- <label class="menu-label">
- <span class="shameless-plug">
- <span>Created using</span>
- <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
- <a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
- </span>
- </label>
- </div>
- </div>
- <div class="button-container hideonprint">
- <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
- title="Front only">F
- </button>
- <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
- title="Front and Back">FB
- </button>
- <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
- title="Back only">B
- </button>
- </div>
- <div class="button-container hideonprint">
- <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
- title="BOM only"></button>
- <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
- title="BOM left, drawings right"></button>
- <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
- title="BOM top, drawings bot"></button>
- </div>
- <div class="button-container hideonprint">
- <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
- title="Grouped BOM"></button>
- <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
- title="Ungrouped BOM"></button>
- <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
- title="Netlist"></button>
- </div>
- <div class="hideonprint menu">
- <button class="statsbtn"></button>
- <div class="menu-content">
- <table class="stats">
- <tbody>
- <tr>
- <td width="40%">Board stats</td>
- <td>Front</td>
- <td>Back</td>
- <td>Total</td>
- </tr>
- <tr>
- <td>Components</td>
- <td id="stats-components-front">~</td>
- <td id="stats-components-back">~</td>
- <td id="stats-components-total">~</td>
- </tr>
- <tr>
- <td>Groups</td>
- <td id="stats-groups-front">~</td>
- <td id="stats-groups-back">~</td>
- <td id="stats-groups-total">~</td>
- </tr>
- <tr>
- <td>SMD pads</td>
- <td id="stats-smd-pads-front">~</td>
- <td id="stats-smd-pads-back">~</td>
- <td id="stats-smd-pads-total">~</td>
- </tr>
- <tr>
- <td>TH pads</td>
- <td colspan=3 id="stats-th-pads">~</td>
- </tr>
- </tbody>
- </table>
- <table class="stats">
- <col width="40%"/><col />
- <tbody id="checkbox-stats">
- <tr>
- <td colspan=2 style="border-top: 0">Checkboxes</td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- <div class="hideonprint menu">
- <button class="iobtn"></button>
- <div class="menu-content">
- <div class="menu-label menu-label-top">
- <div style="margin-left: 5px;">Save board image</div>
- <div class="flexbox">
- <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
- style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
- <span>X</span>
- <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
- style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
- </div>
- <label>
- <input id="render-save-transparent" type="checkbox">
- Transparent background
- </label>
- <div class="flexbox">
- <button class="savebtn" onclick="saveImage('F')">Front</button>
- <button class="savebtn" onclick="saveImage('B')">Back</button>
- </div>
- </div>
- <div class="menu-label">
- <span style="margin-left: 5px;">Config and checkbox state</span>
- <div class="flexbox">
- <button class="savebtn" onclick="saveSettings()">Export</button>
- <button class="savebtn" onclick="loadSettings()">Import</button>
- <button class="savebtn" onclick="resetSettings()">Reset</button>
- </div>
- </div>
- <div class="menu-label">
- <span style="margin-left: 5px;">Save bom table as</span>
- <div class="flexbox">
- <button class="savebtn" onclick="saveBomTable('csv')">csv</button>
- <button class="savebtn" onclick="saveBomTable('txt')">txt</button>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div id="topdivider">
- <div class="hideonprint">
- <div id="toptoggle" onclick="topToggle()">︽</div>
- </div>
- </div>
- <div id="bot" class="split" style="flex: 1 1">
- <div id="bomdiv" class="split split-horizontal">
- <div style="width: 100%">
- <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
- oninput="updateRefLookup(this.value)">
- <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
- oninput="updateFilter(this.value)">
- <div class="button-container hideonprint" style="float: left; margin: 0;">
- <button id="copy" title="Copy bom table to clipboard"
- onclick="saveBomTable('clipboard')"></button>
- </div>
- </div>
- <div id="dbg"></div>
- <table class="bom" id="bomtable">
- <thead id="bomhead">
- </thead>
- <tbody id="bombody">
- </tbody>
- </table>
- </div>
- <div id="canvasdiv" class="split split-horizontal">
- <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
- <div style="position: relative; width: 100%; height: 100%;">
- <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
- <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
- <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
- <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
- </div>
- </div>
- <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
- <div style="position: relative; width: 100%; height: 100%;">
- <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
- <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
- <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
- <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
- </div>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
|