12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562 |
- <!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: 10px 10px 10px 0px;
- }
- .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: 5px;
- }
- .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: 10px 10px 10px 0px;
- }
- .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 {
- width: 100%;
- height: 100%;
- background-color: white;
- transition: background-color 0.3s;
- }
- #top {
- height: 78px;
- border-bottom: 2px solid black;
- }
- .dark #top {
- border-bottom: 2px solid #ccc;
- }
- #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;
- }
- </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": true, "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", "Hersteller-Nr.", "Mouser-Nr."]}
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- var pcbdata = JSON.parse(LZString.decompressFromBase64("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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";
- for (var track of pcbdata.tracks[layer]) {
- if (highlight && highlightedNet != track.net) continue;
- 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();
- }
- }
- 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.renderTracks) {
- var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
- drawTracks(canvas, layer, trackColor, highlight);
- }
- if (settings.renderZones) {
- var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
- drawZones(canvas, layer, zoneColor, 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("bot").style.height = "";
- break;
- case 'top-bottom':
- document.getElementById("tb-btn").classList.add("depressed");
- document.getElementById("frontcanvas").style.display = "";
- document.getElementById("backcanvas").style.display = "";
- document.getElementById("bot").style.height = "calc(100% - 80px)";
- 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("bot").style.height = "calc(100% - 80px)";
- 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";
- }
- 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);
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- ///////////////////////////////////////////////
- </script>
- </head>
- <body>
- <div id="topmostdiv" class="topmostdiv">
- <div id="top">
- <div style="float: right; height: 100%;">
- <div class="hideonprint menu" style="float: right; top: 8px;">
- <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"
- style="float: right; position: relative; top: 8px">
- <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"
- style="float: right; position: relative; top: 8px">
- <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"
- style="float: right; position: relative; top: 8px">
- <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" style="float: right; top: 8px;">
- <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" style="float: right; top: 8px;">
- <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 id="fileinfodiv" style="overflow: auto;">
- <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>
- <div id="bot" class="split" style="height: calc(100% - 80px)">
- <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>
|