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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hXyF2yXb6QKl9yUhkEDppqWmuJnFbYVHJeMllYW5hWal44XTRTnFjqWlhegmYSXyPD6lQVhspVUsdYVbJWKlhfwiqNqFIKWirPxg7YV8pdGlMqXIJXPFfYUjhXkltYXaRUFYPcV2PAGlI5jlJSysK4VXJZalh9z5pcj6UqXLhZclJaUH1pjFm4XwpTYQO4UThakl8SX06cmUSjIIJRLpTIVRpXmlFwUfhfmY28WIgo8l+VjbxY+FAgUdGKrAHPzvhYW4+8Vw/DWBmcEbsO88dAWEmLOlq9wUavDgI6X42X2lxQUpPr2lgCyYhavF3TzrpeClFz6I2dulpEXAJXC8GEWmxYClS6XApYWlcCyrcN5F3MlbpSOCJ6UPpWUYFEVVSqTFqaXwPLRFokUGJQAlC9yFlBmltjysRa0lwTLeZDqOC9zBOFy4dcX/pQJFGiWAvNUszAUFxY6lEkWZwVyl0kVixZel59wYZYulWGWPRU/GgrxWRftF9jhrpT4siGW2Jq+ljEUAZbul4Xz6RY9E3RbLfAhljTjgJY2lhGVgyaqllEUfpZwu+SWlyczFn6VuRfDFN6XxLAJlSThCpaw8vGUapag8LjALRaelK/w5JZbFMKV2/JFFF6WlpSCsGkYdpelFnUiYZRhCiUXqZQlFGUX4Ze882UU3ZNfFzPzlRSomFGVYrGM4rtjO4KZlVUUGZTL8ZmW3Iq+lbUVUZYJlRTztRefF3KV1Ra5lSdKOpZMlYMloZY1Fw6XupTVsNwXuJZ1FqYhRxQCYVcVTbDDFoJjQZZslRAoSZQb8LQUO2LWla0VhZYmldvxbRYnSKmXtPJdFImX9Jd5lsGUKZZdw5MVEZXllF0UUxXZYzDw3RUfYXVh9EA9F9kWnWBzZL0XBZQkmraWfRfJlD3FFZbVWikUJmK1lgMUFZSslYqzNZYFl4MUipZFk42XQxdJlDqVlxVjF96WG2DFlIIWawDolikK4wORoyWVwxeJl3uQr/BCFFTBZZdpCk2Utpb1lCsWFZR9F48WUpS4l1MVqZXNldMUxxQCy02VMxYtlT2VCxYTANqXqxdzFAJg3JXzFX2V8Zcy8ApSbmBAlosXCZZVlaKWoWFSl7/yxRWGl8sV4ZSMy0SXTrHDlOlhAZZ9lZbj/GpE8CrwPZbIl7zwmxQCyOGVDQljlH2W/rKllIWX7EMLFbmVw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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>
|