ibom.html 403 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Interactive BOM for KiCAD</title>
  7. <style type="text/css">
  8. :root {
  9. --pcb-edge-color: black;
  10. --pad-color: #878787;
  11. --pad-hole-color: #CCCCCC;
  12. --pad-color-highlight: #D04040;
  13. --pad-color-highlight-both: #D0D040;
  14. --pad-color-highlight-marked: #44a344;
  15. --pin1-outline-color: #ffb629;
  16. --pin1-outline-color-highlight: #ffb629;
  17. --pin1-outline-color-highlight-both: #fcbb39;
  18. --pin1-outline-color-highlight-marked: #fdbe41;
  19. --silkscreen-edge-color: #aa4;
  20. --silkscreen-polygon-color: #4aa;
  21. --silkscreen-text-color: #4aa;
  22. --fabrication-edge-color: #907651;
  23. --fabrication-polygon-color: #907651;
  24. --fabrication-text-color: #a27c24;
  25. --track-color: #def5f1;
  26. --track-color-highlight: #D04040;
  27. --zone-color: #def5f1;
  28. --zone-color-highlight: #d0404080;
  29. }
  30. html,
  31. body {
  32. margin: 0px;
  33. height: 100%;
  34. font-family: Verdana, sans-serif;
  35. }
  36. .dark.topmostdiv {
  37. --pcb-edge-color: #eee;
  38. --pad-color: #808080;
  39. --pin1-outline-color: #ffa800;
  40. --pin1-outline-color-highlight: #ccff00;
  41. --track-color: #42524f;
  42. --zone-color: #42524f;
  43. background-color: #252c30;
  44. color: #eee;
  45. }
  46. button {
  47. background-color: #eee;
  48. border: 1px solid #888;
  49. color: black;
  50. height: 44px;
  51. width: 44px;
  52. text-align: center;
  53. text-decoration: none;
  54. display: inline-block;
  55. font-size: 14px;
  56. font-weight: bolder;
  57. }
  58. .dark button {
  59. /* This will be inverted */
  60. background-color: #c3b7b5;
  61. }
  62. button.depressed {
  63. background-color: #0a0;
  64. color: white;
  65. }
  66. .dark button.depressed {
  67. /* This will be inverted */
  68. background-color: #b3b;
  69. }
  70. button:focus {
  71. outline: 0;
  72. }
  73. button#tb-btn {
  74. 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");
  75. }
  76. button#lr-btn {
  77. 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");
  78. }
  79. button#bom-btn {
  80. 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");
  81. }
  82. button#bom-grouped-btn {
  83. 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");
  84. }
  85. button#bom-ungrouped-btn {
  86. 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");
  87. }
  88. button#bom-netlist-btn {
  89. 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");
  90. }
  91. button#copy {
  92. 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");
  93. background-position: 6px 6px;
  94. background-repeat: no-repeat;
  95. background-size: 26px 26px;
  96. border-radius: 6px;
  97. height: 40px;
  98. width: 40px;
  99. margin: 10px 5px;
  100. }
  101. button#copy:active {
  102. box-shadow: inset 0px 0px 5px #6c6c6c;
  103. }
  104. textarea.clipboard-temp {
  105. position: fixed;
  106. top: 0;
  107. left: 0;
  108. width: 2em;
  109. height: 2em;
  110. padding: 0;
  111. border: None;
  112. outline: None;
  113. box-shadow: None;
  114. background: transparent;
  115. }
  116. .left-most-button {
  117. border-right: 0;
  118. border-top-left-radius: 6px;
  119. border-bottom-left-radius: 6px;
  120. }
  121. .middle-button {
  122. border-right: 0;
  123. }
  124. .right-most-button {
  125. border-top-right-radius: 6px;
  126. border-bottom-right-radius: 6px;
  127. }
  128. .button-container {
  129. font-size: 0;
  130. margin: 0.4rem 0.4rem 0.4rem 0;
  131. }
  132. .dark .button-container {
  133. filter: invert(1);
  134. }
  135. .button-container button {
  136. background-size: 32px 32px;
  137. background-position: 5px 5px;
  138. background-repeat: no-repeat;
  139. }
  140. @media print {
  141. .hideonprint {
  142. display: none;
  143. }
  144. }
  145. canvas {
  146. cursor: crosshair;
  147. }
  148. canvas:active {
  149. cursor: grabbing;
  150. }
  151. .fileinfo {
  152. width: 100%;
  153. max-width: 1000px;
  154. border: none;
  155. padding: 3px;
  156. }
  157. .fileinfo .title {
  158. font-size: 20pt;
  159. font-weight: bold;
  160. }
  161. .fileinfo td {
  162. overflow: hidden;
  163. white-space: nowrap;
  164. max-width: 1px;
  165. width: 50%;
  166. text-overflow: ellipsis;
  167. }
  168. .bom {
  169. border-collapse: collapse;
  170. font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  171. font-size: 10pt;
  172. table-layout: fixed;
  173. width: 100%;
  174. margin-top: 1px;
  175. position: relative;
  176. }
  177. .bom th,
  178. .bom td {
  179. border: 1px solid black;
  180. padding: 5px;
  181. word-wrap: break-word;
  182. text-align: center;
  183. position: relative;
  184. }
  185. .dark .bom th,
  186. .dark .bom td {
  187. border: 1px solid #777;
  188. }
  189. .bom th {
  190. background-color: #CCCCCC;
  191. background-clip: padding-box;
  192. }
  193. .dark .bom th {
  194. background-color: #3b4749;
  195. }
  196. .bom tr.highlighted:nth-child(n) {
  197. background-color: #cfc;
  198. }
  199. .dark .bom tr.highlighted:nth-child(n) {
  200. background-color: #226022;
  201. }
  202. .bom tr:nth-child(even) {
  203. background-color: #f2f2f2;
  204. }
  205. .dark .bom tr:nth-child(even) {
  206. background-color: #313b40;
  207. }
  208. .bom tr.checked {
  209. color: #1cb53d;
  210. }
  211. .dark .bom tr.checked {
  212. color: #2cce54;
  213. }
  214. .bom tr {
  215. transition: background-color 0.2s;
  216. }
  217. .bom .numCol {
  218. width: 30px;
  219. }
  220. .bom .value {
  221. width: 15%;
  222. }
  223. .bom .quantity {
  224. width: 65px;
  225. }
  226. .bom th .sortmark {
  227. position: absolute;
  228. right: 1px;
  229. top: 1px;
  230. margin-top: -5px;
  231. border-width: 5px;
  232. border-style: solid;
  233. border-color: transparent transparent #221 transparent;
  234. transform-origin: 50% 85%;
  235. transition: opacity 0.2s, transform 0.4s;
  236. }
  237. .dark .bom th .sortmark {
  238. filter: invert(1);
  239. }
  240. .bom th .sortmark.none {
  241. opacity: 0;
  242. }
  243. .bom th .sortmark.desc {
  244. transform: rotate(180deg);
  245. }
  246. .bom th:hover .sortmark.none {
  247. opacity: 0.5;
  248. }
  249. .bom .bom-checkbox {
  250. width: 30px;
  251. position: relative;
  252. user-select: none;
  253. -moz-user-select: none;
  254. }
  255. .bom .bom-checkbox:before {
  256. content: "";
  257. position: absolute;
  258. border-width: 15px;
  259. border-style: solid;
  260. border-color: #51829f transparent transparent transparent;
  261. visibility: hidden;
  262. top: -15px;
  263. }
  264. .bom .bom-checkbox:after {
  265. content: "Double click to set/unset all";
  266. position: absolute;
  267. color: white;
  268. top: -35px;
  269. left: -26px;
  270. background: #51829f;
  271. padding: 5px 15px;
  272. border-radius: 8px;
  273. white-space: nowrap;
  274. visibility: hidden;
  275. }
  276. .bom .bom-checkbox:hover:before,
  277. .bom .bom-checkbox:hover:after {
  278. visibility: visible;
  279. transition: visibility 0.2s linear 1s;
  280. }
  281. .split {
  282. -webkit-box-sizing: border-box;
  283. -moz-box-sizing: border-box;
  284. box-sizing: border-box;
  285. overflow-y: auto;
  286. overflow-x: hidden;
  287. background-color: inherit;
  288. }
  289. .split.split-horizontal,
  290. .gutter.gutter-horizontal {
  291. height: 100%;
  292. float: left;
  293. }
  294. .gutter {
  295. background-color: #ddd;
  296. background-repeat: no-repeat;
  297. background-position: 50%;
  298. transition: background-color 0.3s;
  299. }
  300. .dark .gutter {
  301. background-color: #777;
  302. }
  303. .gutter.gutter-horizontal {
  304. background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
  305. cursor: ew-resize;
  306. width: 5px;
  307. }
  308. .gutter.gutter-vertical {
  309. background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
  310. cursor: ns-resize;
  311. height: 5px;
  312. }
  313. .searchbox {
  314. float: left;
  315. height: 40px;
  316. margin: 10px 5px;
  317. padding: 12px 32px;
  318. font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  319. font-size: 18px;
  320. box-sizing: border-box;
  321. border: 1px solid #888;
  322. border-radius: 6px;
  323. outline: none;
  324. background-color: #eee;
  325. transition: background-color 0.2s, border 0.2s;
  326. 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==');
  327. background-position: 10px 10px;
  328. background-repeat: no-repeat;
  329. }
  330. .dark .searchbox {
  331. background-color: #111;
  332. color: #eee;
  333. }
  334. .searchbox::placeholder {
  335. color: #ccc;
  336. }
  337. .dark .searchbox::placeholder {
  338. color: #666;
  339. }
  340. .filter {
  341. width: calc(60% - 64px);
  342. }
  343. .reflookup {
  344. width: calc(40% - 10px);
  345. }
  346. input[type=text]:focus {
  347. background-color: white;
  348. border: 1px solid #333;
  349. }
  350. .dark input[type=text]:focus {
  351. background-color: #333;
  352. border: 1px solid #ccc;
  353. }
  354. mark.highlight {
  355. background-color: #5050ff;
  356. color: #fff;
  357. padding: 2px;
  358. border-radius: 6px;
  359. }
  360. .dark mark.highlight {
  361. background-color: #76a6da;
  362. color: #111;
  363. }
  364. .menubtn {
  365. background-color: white;
  366. border: none;
  367. 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");
  368. background-position: center;
  369. background-repeat: no-repeat;
  370. }
  371. .statsbtn {
  372. background-color: white;
  373. border: none;
  374. 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");
  375. background-position: center;
  376. background-repeat: no-repeat;
  377. }
  378. .iobtn {
  379. background-color: white;
  380. border: none;
  381. 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");
  382. background-position: center;
  383. background-repeat: no-repeat;
  384. }
  385. .visbtn {
  386. 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");
  387. background-position: center;
  388. background-repeat: no-repeat;
  389. padding: 15px;
  390. }
  391. #vismenu-content {
  392. left: 0px;
  393. font-family: Verdana, sans-serif;
  394. }
  395. .dark .statsbtn,
  396. .dark .savebtn,
  397. .dark .menubtn,
  398. .dark .iobtn,
  399. .dark .visbtn {
  400. filter: invert(1);
  401. }
  402. .flexbox {
  403. display: flex;
  404. align-items: center;
  405. justify-content: space-between;
  406. width: 100%;
  407. }
  408. .savebtn {
  409. background-color: #d6d6d6;
  410. width: auto;
  411. height: 30px;
  412. flex-grow: 1;
  413. margin: 5px;
  414. border-radius: 4px;
  415. }
  416. .savebtn:active {
  417. background-color: #0a0;
  418. color: white;
  419. }
  420. .dark .savebtn:active {
  421. /* This will be inverted */
  422. background-color: #b3b;
  423. }
  424. .stats {
  425. border-collapse: collapse;
  426. font-size: 12pt;
  427. table-layout: fixed;
  428. width: 100%;
  429. min-width: 450px;
  430. }
  431. .dark .stats td {
  432. border: 1px solid #bbb;
  433. }
  434. .stats td {
  435. border: 1px solid black;
  436. padding: 5px;
  437. word-wrap: break-word;
  438. text-align: center;
  439. position: relative;
  440. }
  441. #checkbox-stats div {
  442. position: absolute;
  443. left: 0;
  444. top: 0;
  445. height: 100%;
  446. width: 100%;
  447. display: flex;
  448. align-items: center;
  449. justify-content: center;
  450. }
  451. #checkbox-stats .bar {
  452. background-color: rgba(28, 251, 0, 0.6);
  453. }
  454. .menu {
  455. position: relative;
  456. display: inline-block;
  457. margin: 0.4rem 0.4rem 0.4rem 0;
  458. }
  459. .menu-content {
  460. font-size: 12pt !important;
  461. text-align: left !important;
  462. font-weight: normal !important;
  463. display: none;
  464. position: absolute;
  465. background-color: white;
  466. right: 0;
  467. min-width: 300px;
  468. box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  469. z-index: 100;
  470. padding: 8px;
  471. }
  472. .dark .menu-content {
  473. background-color: #111;
  474. }
  475. .menu:hover .menu-content {
  476. display: block;
  477. }
  478. .menu:hover .menubtn,
  479. .menu:hover .iobtn,
  480. .menu:hover .statsbtn {
  481. background-color: #eee;
  482. }
  483. .menu-label {
  484. display: inline-block;
  485. padding: 8px;
  486. border: 1px solid #ccc;
  487. border-top: 0;
  488. width: calc(100% - 18px);
  489. }
  490. .menu-label-top {
  491. border-top: 1px solid #ccc;
  492. }
  493. .menu-textbox {
  494. float: left;
  495. height: 24px;
  496. margin: 10px 5px;
  497. padding: 5px 5px;
  498. font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  499. font-size: 14px;
  500. box-sizing: border-box;
  501. border: 1px solid #888;
  502. border-radius: 4px;
  503. outline: none;
  504. background-color: #eee;
  505. transition: background-color 0.2s, border 0.2s;
  506. width: calc(100% - 10px);
  507. }
  508. .menu-textbox.invalid,
  509. .dark .menu-textbox.invalid {
  510. color: red;
  511. }
  512. .dark .menu-textbox {
  513. background-color: #222;
  514. color: #eee;
  515. }
  516. .radio-container {
  517. margin: 4px;
  518. }
  519. .topmostdiv {
  520. display: flex;
  521. flex-direction: column;
  522. width: 100%;
  523. background-color: white;
  524. transition: background-color 0.3s;
  525. min-height: 100%;
  526. }
  527. #top {
  528. display: flex;
  529. flex-wrap: wrap;
  530. justify-content: flex-end;
  531. align-items: center;
  532. }
  533. #topdivider {
  534. border-bottom: 2px solid black;
  535. display: flex;
  536. justify-content: center;
  537. align-items: center;
  538. }
  539. .dark #topdivider {
  540. border-bottom: 2px solid #ccc;
  541. }
  542. #topdivider>div {
  543. position: relative;
  544. }
  545. #toptoggle {
  546. cursor: pointer;
  547. user-select: none;
  548. position: absolute;
  549. padding: 0.1rem 0.3rem;
  550. top: -0.4rem;
  551. left: -1rem;
  552. font-size: 1.4rem;
  553. line-height: 60%;
  554. border: 1px solid black;
  555. border-radius: 1rem;
  556. background-color: #fff;
  557. z-index: 100;
  558. }
  559. .flipped {
  560. transform: rotate(0.5turn);
  561. }
  562. .dark #toptoggle {
  563. border: 1px solid #fff;
  564. background-color: #222;
  565. }
  566. #fileinfodiv {
  567. flex: 20rem 1 0;
  568. overflow: auto;
  569. }
  570. #bomcontrols {
  571. display: flex;
  572. flex-direction: row-reverse;
  573. }
  574. #bomcontrols>* {
  575. flex-shrink: 0;
  576. }
  577. #dbg {
  578. display: block;
  579. }
  580. ::-webkit-scrollbar {
  581. width: 8px;
  582. }
  583. ::-webkit-scrollbar-track {
  584. background: #aaa;
  585. }
  586. ::-webkit-scrollbar-thumb {
  587. background: #666;
  588. border-radius: 3px;
  589. }
  590. ::-webkit-scrollbar-thumb:hover {
  591. background: #555;
  592. }
  593. .slider {
  594. -webkit-appearance: none;
  595. width: 100%;
  596. margin: 3px 0;
  597. padding: 0;
  598. outline: none;
  599. opacity: 0.7;
  600. -webkit-transition: .2s;
  601. transition: opacity .2s;
  602. border-radius: 3px;
  603. }
  604. .slider:hover {
  605. opacity: 1;
  606. }
  607. .slider:focus {
  608. outline: none;
  609. }
  610. .slider::-webkit-slider-runnable-track {
  611. -webkit-appearance: none;
  612. width: 100%;
  613. height: 8px;
  614. background: #d3d3d3;
  615. border-radius: 3px;
  616. border: none;
  617. }
  618. .slider::-webkit-slider-thumb {
  619. -webkit-appearance: none;
  620. width: 15px;
  621. height: 15px;
  622. border-radius: 50%;
  623. background: #0a0;
  624. cursor: pointer;
  625. margin-top: -4px;
  626. }
  627. .dark .slider::-webkit-slider-thumb {
  628. background: #3d3;
  629. }
  630. .slider::-moz-range-thumb {
  631. width: 15px;
  632. height: 15px;
  633. border-radius: 50%;
  634. background: #0a0;
  635. cursor: pointer;
  636. }
  637. .slider::-moz-range-track {
  638. height: 8px;
  639. background: #d3d3d3;
  640. border-radius: 3px;
  641. }
  642. .dark .slider::-moz-range-thumb {
  643. background: #3d3;
  644. }
  645. .slider::-ms-track {
  646. width: 100%;
  647. height: 8px;
  648. border-width: 3px 0;
  649. background: transparent;
  650. border-color: transparent;
  651. color: transparent;
  652. transition: opacity .2s;
  653. }
  654. .slider::-ms-fill-lower {
  655. background: #d3d3d3;
  656. border: none;
  657. border-radius: 3px;
  658. }
  659. .slider::-ms-fill-upper {
  660. background: #d3d3d3;
  661. border: none;
  662. border-radius: 3px;
  663. }
  664. .slider::-ms-thumb {
  665. width: 15px;
  666. height: 15px;
  667. border-radius: 50%;
  668. background: #0a0;
  669. cursor: pointer;
  670. margin: 0;
  671. }
  672. .shameless-plug {
  673. font-size: 0.8em;
  674. text-align: center;
  675. display: block;
  676. }
  677. a {
  678. color: #0278a4;
  679. }
  680. .dark a {
  681. color: #00b9fd;
  682. }
  683. #frontcanvas,
  684. #backcanvas {
  685. touch-action: none;
  686. }
  687. .placeholder {
  688. border: 1px dashed #9f9fda !important;
  689. background-color: #edf2f7 !important;
  690. }
  691. .dragging {
  692. z-index: 999;
  693. }
  694. .dark .dragging>table>tbody>tr {
  695. background-color: #252c30;
  696. }
  697. .dark .placeholder {
  698. filter: invert(1);
  699. }
  700. .column-spacer {
  701. top: 0;
  702. left: 0;
  703. width: calc(100% - 4px);
  704. position: absolute;
  705. cursor: pointer;
  706. user-select: none;
  707. height: 100%;
  708. }
  709. .column-width-handle {
  710. top: 0;
  711. right: 0;
  712. width: 4px;
  713. position: absolute;
  714. cursor: col-resize;
  715. user-select: none;
  716. height: 100%;
  717. }
  718. .column-width-handle:hover {
  719. background-color: #4f99bd;
  720. }
  721. .help-link {
  722. border: 1px solid #0278a4;
  723. padding-inline: 0.3rem;
  724. border-radius: 3px;
  725. cursor: pointer;
  726. }
  727. .dark .help-link {
  728. border: 1px solid #00b9fd;
  729. }
  730. .bom-color {
  731. width: 20%;
  732. }
  733. .color-column input {
  734. width: 1.6rem;
  735. height: 1rem;
  736. border: 1px solid black;
  737. cursor: pointer;
  738. padding: 0;
  739. }
  740. /* removes default styling from input color element */
  741. ::-webkit-color-swatch {
  742. border: none;
  743. }
  744. ::-webkit-color-swatch-wrapper {
  745. padding: 0;
  746. }
  747. ::-moz-color-swatch,
  748. ::-moz-focus-inner {
  749. border: none;
  750. }
  751. ::-moz-focus-inner {
  752. padding: 0;
  753. }
  754. /* #bomhead {
  755. position: sticky;
  756. top: 0px;
  757. z-index: 1;
  758. } */
  759. </style>
  760. <script type="text/javascript" >
  761. ///////////////////////////////////////////////
  762. /*
  763. Split.js - v1.3.5
  764. MIT License
  765. https://github.com/nathancahill/Split.js
  766. */
  767. !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}}});
  768. ///////////////////////////////////////////////
  769. ///////////////////////////////////////////////
  770. // Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
  771. // This work is free. You can redistribute it and/or modify it
  772. // under the terms of the WTFPL, Version 2
  773. // For more information see LICENSE.txt or http://www.wtfpl.net/
  774. //
  775. // For more information, the home page:
  776. // http://pieroxy.net/blog/pages/lz-string/testing.html
  777. //
  778. // LZ-based compression algorithm, version 1.4.4
  779. 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});
  780. ///////////////////////////////////////////////
  781. ///////////////////////////////////////////////
  782. /*!
  783. * PEP v0.4.3 | https://github.com/jquery/PEP
  784. * Copyright jQuery Foundation and other contributors | http://jquery.org/license
  785. */
  786. !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);
  787. for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
  788. 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}})}
  789. 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++)
  790. b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
  791. 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){
  792. for(var b=a;b.parentNode;)b=b.parentNode;
  793. 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);
  794. 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){
  795. //
  796. 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))},
  797. 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){
  798. var b=x(a,this.findElements,this);
  799. 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){}
  800. 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:[],
  801. 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++){
  802. 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);
  803. 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];
  804. c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
  805. 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),
  806. 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),
  807. 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);
  808. 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){
  809. (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,
  810. c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
  811. 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))},
  812. shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
  813. b=!1;else if("XY"===c)
  814. 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]);
  815. 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},
  816. vacuumTouches:function(a){var b=a.touches;
  817. if(R.size>=b.length){var c=[];R.forEach(function(a,d){
  818. 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);
  819. if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
  820. d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
  821. 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)},
  822. dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
  823. if(this.isPrimaryTouch(c)){
  824. 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});
  825. ///////////////////////////////////////////////
  826. ///////////////////////////////////////////////
  827. var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": "none", "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
  828. ///////////////////////////////////////////////
  829. ///////////////////////////////////////////////
  830. var pcbdata = JSON.parse(LZString.decompressFromBase64("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"))
  831. ///////////////////////////////////////////////
  832. ///////////////////////////////////////////////
  833. /* Utility functions */
  834. var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
  835. pcbdata.metadata.revision + '__#';
  836. var storage;
  837. function initStorage(key) {
  838. try {
  839. window.localStorage.getItem("blank");
  840. storage = window.localStorage;
  841. } catch (e) {
  842. // localStorage not available
  843. }
  844. if (!storage) {
  845. try {
  846. window.sessionStorage.getItem("blank");
  847. storage = window.sessionStorage;
  848. } catch (e) {
  849. // sessionStorage also not available
  850. }
  851. }
  852. }
  853. function readStorage(key) {
  854. if (storage) {
  855. return storage.getItem(storagePrefix + key);
  856. } else {
  857. return null;
  858. }
  859. }
  860. function writeStorage(key, value) {
  861. if (storage) {
  862. storage.setItem(storagePrefix + key, value);
  863. }
  864. }
  865. function fancyDblClickHandler(el, onsingle, ondouble) {
  866. return function () {
  867. if (el.getAttribute("data-dblclick") == null) {
  868. el.setAttribute("data-dblclick", 1);
  869. setTimeout(function () {
  870. if (el.getAttribute("data-dblclick") == 1) {
  871. onsingle();
  872. }
  873. el.removeAttribute("data-dblclick");
  874. }, 200);
  875. } else {
  876. el.removeAttribute("data-dblclick");
  877. ondouble();
  878. }
  879. }
  880. }
  881. function smoothScrollToRow(rowid) {
  882. document.getElementById(rowid).scrollIntoView({
  883. behavior: "smooth",
  884. block: "center",
  885. inline: "nearest"
  886. });
  887. }
  888. function focusInputField(input) {
  889. input.scrollIntoView(false);
  890. input.focus();
  891. input.select();
  892. }
  893. function saveBomTable(output) {
  894. var text = '';
  895. for (var node of bomhead.childNodes[0].childNodes) {
  896. if (node.firstChild) {
  897. var name = node.firstChild.nodeValue ?? "";
  898. text += (output == 'csv' ? `"${name}"` : name);
  899. }
  900. if (node != bomhead.childNodes[0].lastChild) {
  901. text += (output == 'csv' ? ',' : '\t');
  902. }
  903. }
  904. text += '\n';
  905. for (var row of bombody.childNodes) {
  906. for (var cell of row.childNodes) {
  907. let val = '';
  908. for (var node of cell.childNodes) {
  909. if (node.nodeName == "INPUT") {
  910. if (node.checked) {
  911. val += '✓';
  912. }
  913. } else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
  914. val += node.firstChild.nodeValue;
  915. } else {
  916. val += node.nodeValue;
  917. }
  918. }
  919. if (output == 'csv') {
  920. val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
  921. if (isNumeric(val)) {
  922. val = +val; // use number
  923. } else {
  924. val = `"${val}"`; // enclosed within double-quote
  925. }
  926. }
  927. text += val;
  928. if (cell != row.lastChild) {
  929. text += (output == 'csv' ? ',' : '\t');
  930. }
  931. }
  932. text += '\n';
  933. }
  934. if (output != 'clipboard') {
  935. // To file: csv or txt
  936. var blob = new Blob([text], {
  937. type: `text/${output}`
  938. });
  939. saveFile(`${pcbdata.metadata.title}.${output}`, blob);
  940. } else {
  941. // To clipboard
  942. var textArea = document.createElement("textarea");
  943. textArea.classList.add('clipboard-temp');
  944. textArea.value = text;
  945. document.body.appendChild(textArea);
  946. textArea.focus();
  947. textArea.select();
  948. try {
  949. if (document.execCommand('copy')) {
  950. console.log('Bom copied to clipboard.');
  951. }
  952. } catch (err) {
  953. console.log('Can not copy to clipboard.');
  954. }
  955. document.body.removeChild(textArea);
  956. }
  957. }
  958. function isNumeric(str) {
  959. /* https://stackoverflow.com/a/175787 */
  960. return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
  961. }
  962. function removeGutterNode(node) {
  963. for (var i = 0; i < node.childNodes.length; i++) {
  964. if (node.childNodes[i].classList &&
  965. node.childNodes[i].classList.contains("gutter")) {
  966. node.removeChild(node.childNodes[i]);
  967. break;
  968. }
  969. }
  970. }
  971. function cleanGutters() {
  972. removeGutterNode(document.getElementById("bot"));
  973. removeGutterNode(document.getElementById("canvasdiv"));
  974. }
  975. var units = {
  976. prefixes: {
  977. giga: ["G", "g", "giga", "Giga", "GIGA"],
  978. mega: ["M", "mega", "Mega", "MEGA"],
  979. kilo: ["K", "k", "kilo", "Kilo", "KILO"],
  980. milli: ["m", "milli", "Milli", "MILLI"],
  981. micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
  982. nano: ["N", "n", "nano", "Nano", "NANO"],
  983. pico: ["P", "p", "pico", "Pico", "PICO"],
  984. },
  985. unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
  986. unitsLong: [
  987. "OHM", "Ohm", "ohm", "ohms",
  988. "FARAD", "Farad", "farad",
  989. "HENRY", "Henry", "henry"
  990. ],
  991. getMultiplier: function (s) {
  992. if (this.prefixes.giga.includes(s)) return 1e9;
  993. if (this.prefixes.mega.includes(s)) return 1e6;
  994. if (this.prefixes.kilo.includes(s)) return 1e3;
  995. if (this.prefixes.milli.includes(s)) return 1e-3;
  996. if (this.prefixes.micro.includes(s)) return 1e-6;
  997. if (this.prefixes.nano.includes(s)) return 1e-9;
  998. if (this.prefixes.pico.includes(s)) return 1e-12;
  999. return 1;
  1000. },
  1001. valueRegex: null,
  1002. valueAltRegex: null,
  1003. }
  1004. function initUtils() {
  1005. var allPrefixes = units.prefixes.giga
  1006. .concat(units.prefixes.mega)
  1007. .concat(units.prefixes.kilo)
  1008. .concat(units.prefixes.milli)
  1009. .concat(units.prefixes.micro)
  1010. .concat(units.prefixes.nano)
  1011. .concat(units.prefixes.pico);
  1012. var allUnits = units.unitsShort.concat(units.unitsLong);
  1013. units.valueRegex = new RegExp("^([0-9\.]+)" +
  1014. "\\s*(" + allPrefixes.join("|") + ")?" +
  1015. "(" + allUnits.join("|") + ")?" +
  1016. "(\\b.*)?$", "");
  1017. units.valueAltRegex = new RegExp("^([0-9]*)" +
  1018. "(" + units.unitsShort.join("|") + ")?" +
  1019. "([GgMmKkUuNnPp])?" +
  1020. "([0-9]*)" +
  1021. "(\\b.*)?$", "");
  1022. if (config.fields.includes("Value")) {
  1023. var index = config.fields.indexOf("Value");
  1024. pcbdata.bom["parsedValues"] = {};
  1025. var allList = getBomListByLayer('FB').flat();
  1026. for (var id in pcbdata.bom.fields) {
  1027. var ref_key = allList.find(item => item[1] == Number(id)) || [];
  1028. pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index], ref_key[0] || '');
  1029. }
  1030. }
  1031. }
  1032. function parseValue(val, ref) {
  1033. var inferUnit = (unit, ref) => {
  1034. if (unit) {
  1035. unit = unit.toLowerCase();
  1036. if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
  1037. unit = 'r';
  1038. }
  1039. return unit[0];
  1040. }
  1041. var resarr = /^([a-z]+)\d+$/i.exec(ref);
  1042. switch (Array.isArray(resarr) && resarr[1].toLowerCase()) {
  1043. case "c": return 'f';
  1044. case "l": return 'h';
  1045. case "r":
  1046. case "rv": return 'r';
  1047. }
  1048. return null;
  1049. };
  1050. val = val.replace(/,/g, "");
  1051. var match = units.valueRegex.exec(val);
  1052. if (Array.isArray(match)) {
  1053. var unit = inferUnit(match[3], ref);
  1054. var val_i = parseFloat(match[1]);
  1055. if (!unit) return null;
  1056. if (match[2]) {
  1057. val_i = val_i * units.getMultiplier(match[2]);
  1058. }
  1059. return {
  1060. val: val_i,
  1061. unit: unit,
  1062. extra: match[4],
  1063. }
  1064. }
  1065. match = units.valueAltRegex.exec(val);
  1066. if (Array.isArray(match) && (match[1] || match[4])) {
  1067. var unit = inferUnit(match[2], ref);
  1068. var val_i = parseFloat(match[1] + "." + match[4]);
  1069. if (!unit) return null;
  1070. if (match[3]) {
  1071. val_i = val_i * units.getMultiplier(match[3]);
  1072. }
  1073. return {
  1074. val: val_i,
  1075. unit: unit,
  1076. extra: match[5],
  1077. }
  1078. }
  1079. return null;
  1080. }
  1081. function valueCompare(a, b, stra, strb) {
  1082. if (a === null && b === null) {
  1083. // Failed to parse both values, compare them as strings.
  1084. if (stra != strb) return stra > strb ? 1 : -1;
  1085. else return 0;
  1086. } else if (a === null) {
  1087. return 1;
  1088. } else if (b === null) {
  1089. return -1;
  1090. } else {
  1091. if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
  1092. else if (a.val != b.val) return a.val > b.val ? 1 : -1;
  1093. else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
  1094. else return 0;
  1095. }
  1096. }
  1097. function validateSaveImgDimension(element) {
  1098. var valid = false;
  1099. var intValue = 0;
  1100. if (/^[1-9]\d*$/.test(element.value)) {
  1101. intValue = parseInt(element.value);
  1102. if (intValue <= 16000) {
  1103. valid = true;
  1104. }
  1105. }
  1106. if (valid) {
  1107. element.classList.remove("invalid");
  1108. } else {
  1109. element.classList.add("invalid");
  1110. }
  1111. return intValue;
  1112. }
  1113. function saveImage(layer) {
  1114. var width = validateSaveImgDimension(document.getElementById("render-save-width"));
  1115. var height = validateSaveImgDimension(document.getElementById("render-save-height"));
  1116. var bgcolor = null;
  1117. if (!document.getElementById("render-save-transparent").checked) {
  1118. var style = getComputedStyle(topmostdiv);
  1119. bgcolor = style.getPropertyValue("background-color");
  1120. }
  1121. if (!width || !height) return;
  1122. // Prepare image
  1123. var canvas = document.createElement("canvas");
  1124. var layerdict = {
  1125. transform: {
  1126. x: 0,
  1127. y: 0,
  1128. s: 1,
  1129. panx: 0,
  1130. pany: 0,
  1131. zoom: 1,
  1132. },
  1133. bg: canvas,
  1134. fab: canvas,
  1135. silk: canvas,
  1136. highlight: canvas,
  1137. layer: layer,
  1138. }
  1139. // Do the rendering
  1140. recalcLayerScale(layerdict, width, height);
  1141. prepareLayer(layerdict);
  1142. clearCanvas(canvas, bgcolor);
  1143. drawBackground(layerdict, false);
  1144. drawHighlightsOnLayer(layerdict, false);
  1145. // Save image
  1146. var imgdata = canvas.toDataURL("image/png");
  1147. var filename = pcbdata.metadata.title;
  1148. if (pcbdata.metadata.revision) {
  1149. filename += `.${pcbdata.metadata.revision}`;
  1150. }
  1151. filename += `.${layer}.png`;
  1152. saveFile(filename, dataURLtoBlob(imgdata));
  1153. }
  1154. function saveSettings() {
  1155. var data = {
  1156. type: "InteractiveHtmlBom settings",
  1157. version: 1,
  1158. pcbmetadata: pcbdata.metadata,
  1159. settings: settings,
  1160. }
  1161. var blob = new Blob([JSON.stringify(data, null, 4)], {
  1162. type: "application/json"
  1163. });
  1164. saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
  1165. }
  1166. function loadSettings() {
  1167. var input = document.createElement("input");
  1168. input.type = "file";
  1169. input.accept = ".settings.json";
  1170. input.onchange = function (e) {
  1171. var file = e.target.files[0];
  1172. var reader = new FileReader();
  1173. reader.onload = readerEvent => {
  1174. var content = readerEvent.target.result;
  1175. var newSettings;
  1176. try {
  1177. newSettings = JSON.parse(content);
  1178. } catch (e) {
  1179. alert("Selected file is not InteractiveHtmlBom settings file.");
  1180. return;
  1181. }
  1182. if (newSettings.type != "InteractiveHtmlBom settings") {
  1183. alert("Selected file is not InteractiveHtmlBom settings file.");
  1184. return;
  1185. }
  1186. var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
  1187. if (metadataMatches) {
  1188. for (var k in pcbdata.metadata) {
  1189. if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
  1190. metadataMatches = false;
  1191. }
  1192. }
  1193. }
  1194. if (!metadataMatches) {
  1195. var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
  1196. var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
  1197. if (!confirm(
  1198. `Settins file metadata does not match current metadata.\n\n` +
  1199. `Page metadata:\n${currentMetadata}\n\n` +
  1200. `Settings file metadata:\n${fileMetadata}\n\n` +
  1201. `Press OK if you would like to import settings anyway.`)) {
  1202. return;
  1203. }
  1204. }
  1205. overwriteSettings(newSettings.settings);
  1206. }
  1207. reader.readAsText(file, 'UTF-8');
  1208. }
  1209. input.click();
  1210. }
  1211. function resetSettings() {
  1212. if (!confirm(
  1213. `This will reset all checkbox states and other settings.\n\n` +
  1214. `Press OK if you want to continue.`)) {
  1215. return;
  1216. }
  1217. if (storage) {
  1218. var keys = [];
  1219. for (var i = 0; i < storage.length; i++) {
  1220. var key = storage.key(i);
  1221. if (key.startsWith(storagePrefix)) keys.push(key);
  1222. }
  1223. for (var key of keys) storage.removeItem(key);
  1224. }
  1225. location.reload();
  1226. }
  1227. function overwriteSettings(newSettings) {
  1228. initDone = false;
  1229. Object.assign(settings, newSettings);
  1230. writeStorage("bomlayout", settings.bomlayout);
  1231. writeStorage("bommode", settings.bommode);
  1232. writeStorage("canvaslayout", settings.canvaslayout);
  1233. writeStorage("bomCheckboxes", settings.checkboxes.join(","));
  1234. document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
  1235. for (var checkbox of settings.checkboxes) {
  1236. writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
  1237. }
  1238. writeStorage("markWhenChecked", settings.markWhenChecked);
  1239. padsVisible(settings.renderPads);
  1240. document.getElementById("padsCheckbox").checked = settings.renderPads;
  1241. fabricationVisible(settings.renderFabrication);
  1242. document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
  1243. silkscreenVisible(settings.renderSilkscreen);
  1244. document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
  1245. referencesVisible(settings.renderReferences);
  1246. document.getElementById("referencesCheckbox").checked = settings.renderReferences;
  1247. valuesVisible(settings.renderValues);
  1248. document.getElementById("valuesCheckbox").checked = settings.renderValues;
  1249. tracksVisible(settings.renderTracks);
  1250. document.getElementById("tracksCheckbox").checked = settings.renderTracks;
  1251. zonesVisible(settings.renderZones);
  1252. document.getElementById("zonesCheckbox").checked = settings.renderZones;
  1253. dnpOutline(settings.renderDnpOutline);
  1254. document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
  1255. setRedrawOnDrag(settings.redrawOnDrag);
  1256. document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
  1257. setHighlightRowOnClick(settings.highlightRowOnClick);
  1258. document.getElementById("highlightRowOnClickCheckbox").checked = settings.highlightRowOnClick;
  1259. setDarkMode(settings.darkMode);
  1260. document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
  1261. setHighlightPin1(settings.highlightpin1);
  1262. document.forms.highlightpin1.highlightpin1.value = settings.highlightpin1;
  1263. writeStorage("boardRotation", settings.boardRotation);
  1264. document.getElementById("boardRotation").value = settings.boardRotation / 5;
  1265. document.getElementById("rotationDegree").textContent = settings.boardRotation;
  1266. setOffsetBackRotation(settings.offsetBackRotation);
  1267. document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
  1268. initDone = true;
  1269. prepCheckboxes();
  1270. changeBomLayout(settings.bomlayout);
  1271. }
  1272. function saveFile(filename, blob) {
  1273. var link = document.createElement("a");
  1274. var objurl = URL.createObjectURL(blob);
  1275. link.download = filename;
  1276. link.href = objurl;
  1277. link.click();
  1278. }
  1279. function dataURLtoBlob(dataurl) {
  1280. var arr = dataurl.split(','),
  1281. mime = arr[0].match(/:(.*?);/)[1],
  1282. bstr = atob(arr[1]),
  1283. n = bstr.length,
  1284. u8arr = new Uint8Array(n);
  1285. while (n--) {
  1286. u8arr[n] = bstr.charCodeAt(n);
  1287. }
  1288. return new Blob([u8arr], {
  1289. type: mime
  1290. });
  1291. }
  1292. var settings = {
  1293. canvaslayout: "FB",
  1294. bomlayout: "left-right",
  1295. bommode: "grouped",
  1296. checkboxes: [],
  1297. checkboxStoredRefs: {},
  1298. darkMode: false,
  1299. highlightpin1: "none",
  1300. redrawOnDrag: true,
  1301. boardRotation: 0,
  1302. offsetBackRotation: false,
  1303. renderPads: true,
  1304. renderReferences: true,
  1305. renderValues: true,
  1306. renderSilkscreen: true,
  1307. renderFabrication: true,
  1308. renderDnpOutline: false,
  1309. renderTracks: true,
  1310. renderZones: true,
  1311. columnOrder: [],
  1312. hiddenColumns: [],
  1313. netColors: {},
  1314. }
  1315. function initDefaults() {
  1316. settings.bomlayout = readStorage("bomlayout");
  1317. if (settings.bomlayout === null) {
  1318. settings.bomlayout = config.bom_view;
  1319. }
  1320. if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
  1321. settings.bomlayout = config.bom_view;
  1322. }
  1323. settings.bommode = readStorage("bommode");
  1324. if (settings.bommode === null) {
  1325. settings.bommode = "grouped";
  1326. }
  1327. if (settings.bommode == "netlist" && !pcbdata.nets) {
  1328. settings.bommode = "grouped";
  1329. }
  1330. if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
  1331. settings.bommode = "grouped";
  1332. }
  1333. settings.canvaslayout = readStorage("canvaslayout");
  1334. if (settings.canvaslayout === null) {
  1335. settings.canvaslayout = config.layer_view;
  1336. }
  1337. var bomCheckboxes = readStorage("bomCheckboxes");
  1338. if (bomCheckboxes === null) {
  1339. bomCheckboxes = config.checkboxes;
  1340. }
  1341. settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
  1342. document.getElementById("bomCheckboxes").value = bomCheckboxes;
  1343. var highlightpin1 = readStorage("highlightpin1") || config.highlight_pin1;
  1344. if (highlightpin1 === "false") highlightpin1 = "none";
  1345. if (highlightpin1 === "true") highlightpin1 = "all";
  1346. setHighlightPin1(highlightpin1);
  1347. document.forms.highlightpin1.highlightpin1.value = highlightpin1;
  1348. settings.markWhenChecked = readStorage("markWhenChecked") || "";
  1349. populateMarkWhenCheckedOptions();
  1350. function initBooleanSetting(storageString, def, elementId, func) {
  1351. var b = readStorage(storageString);
  1352. if (b === null) {
  1353. b = def;
  1354. } else {
  1355. b = (b == "true");
  1356. }
  1357. document.getElementById(elementId).checked = b;
  1358. func(b);
  1359. }
  1360. initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
  1361. initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
  1362. initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
  1363. initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
  1364. initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
  1365. if ("tracks" in pcbdata) {
  1366. initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
  1367. initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
  1368. } else {
  1369. document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
  1370. tracksVisible(false);
  1371. zonesVisible(false);
  1372. }
  1373. initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
  1374. initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
  1375. initBooleanSetting("highlightRowOnClick", false, "highlightRowOnClickCheckbox", setHighlightRowOnClick);
  1376. initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
  1377. var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
  1378. var hcols = JSON.parse(readStorage("hiddenColumns"));
  1379. if (hcols === null) {
  1380. hcols = [];
  1381. }
  1382. settings.hiddenColumns = hcols.filter(e => fields.includes(e));
  1383. var cord = JSON.parse(readStorage("columnOrder"));
  1384. if (cord === null) {
  1385. cord = fields;
  1386. } else {
  1387. cord = cord.filter(e => fields.includes(e));
  1388. if (cord.length != fields.length)
  1389. cord = fields;
  1390. }
  1391. settings.columnOrder = cord;
  1392. settings.boardRotation = readStorage("boardRotation");
  1393. if (settings.boardRotation === null) {
  1394. settings.boardRotation = config.board_rotation * 5;
  1395. } else {
  1396. settings.boardRotation = parseInt(settings.boardRotation);
  1397. }
  1398. document.getElementById("boardRotation").value = settings.boardRotation / 5;
  1399. document.getElementById("rotationDegree").textContent = settings.boardRotation;
  1400. initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
  1401. settings.netColors = JSON.parse(readStorage("netColors")) || {};
  1402. }
  1403. // Helper classes for user js callbacks.
  1404. const IBOM_EVENT_TYPES = {
  1405. ALL: "all",
  1406. HIGHLIGHT_EVENT: "highlightEvent",
  1407. CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
  1408. BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
  1409. }
  1410. const EventHandler = {
  1411. callbacks: {},
  1412. init: function () {
  1413. for (eventType of Object.values(IBOM_EVENT_TYPES))
  1414. this.callbacks[eventType] = [];
  1415. },
  1416. registerCallback: function (eventType, callback) {
  1417. this.callbacks[eventType].push(callback);
  1418. },
  1419. emitEvent: function (eventType, eventArgs) {
  1420. event = {
  1421. eventType: eventType,
  1422. args: eventArgs,
  1423. }
  1424. var callback;
  1425. for (callback of this.callbacks[eventType])
  1426. callback(event);
  1427. for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
  1428. callback(event);
  1429. }
  1430. }
  1431. EventHandler.init();
  1432. ///////////////////////////////////////////////
  1433. ///////////////////////////////////////////////
  1434. /* PCB rendering code */
  1435. var emptyContext2d = document.createElement("canvas").getContext("2d");
  1436. function deg2rad(deg) {
  1437. return deg * Math.PI / 180;
  1438. }
  1439. function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
  1440. var point = [
  1441. linepoint[0] * text.width + offsetx,
  1442. linepoint[1] * text.height + offsety
  1443. ];
  1444. // This approximates pcbnew behavior with how text tilts depending on horizontal justification
  1445. point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
  1446. return point;
  1447. }
  1448. function drawText(ctx, text, color) {
  1449. if ("ref" in text && !settings.renderReferences) return;
  1450. if ("val" in text && !settings.renderValues) return;
  1451. ctx.save();
  1452. ctx.fillStyle = color;
  1453. ctx.strokeStyle = color;
  1454. ctx.lineCap = "round";
  1455. ctx.lineJoin = "round";
  1456. ctx.lineWidth = text.thickness;
  1457. if ("svgpath" in text) {
  1458. ctx.stroke(new Path2D(text.svgpath));
  1459. ctx.restore();
  1460. return;
  1461. }
  1462. if ("polygons" in text) {
  1463. ctx.fill(getPolygonsPath(text));
  1464. ctx.restore();
  1465. return;
  1466. }
  1467. ctx.translate(...text.pos);
  1468. ctx.translate(text.thickness * 0.5, 0);
  1469. var angle = -text.angle;
  1470. if (text.attr.includes("mirrored")) {
  1471. ctx.scale(-1, 1);
  1472. angle = -angle;
  1473. }
  1474. var tilt = 0;
  1475. if (text.attr.includes("italic")) {
  1476. tilt = 0.125;
  1477. }
  1478. var interline = text.height * 1.5 + text.thickness;
  1479. var txt = text.text.split("\n");
  1480. // KiCad ignores last empty line.
  1481. if (txt[txt.length - 1] == '') txt.pop();
  1482. ctx.rotate(deg2rad(angle));
  1483. var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
  1484. offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
  1485. for (var i in txt) {
  1486. var lineWidth = text.thickness + interline / 2 * tilt;
  1487. for (var j = 0; j < txt[i].length; j++) {
  1488. if (txt[i][j] == '\t') {
  1489. var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
  1490. lineWidth += fourSpaces - lineWidth % fourSpaces;
  1491. } else {
  1492. if (txt[i][j] == '~') {
  1493. j++;
  1494. if (j == txt[i].length)
  1495. break;
  1496. }
  1497. lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
  1498. }
  1499. }
  1500. var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
  1501. var inOverbar = false;
  1502. for (var j = 0; j < txt[i].length; j++) {
  1503. if (config.kicad_text_formatting) {
  1504. if (txt[i][j] == '\t') {
  1505. var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
  1506. offsetx += fourSpaces - offsetx % fourSpaces;
  1507. continue;
  1508. } else if (txt[i][j] == '~') {
  1509. j++;
  1510. if (j == txt[i].length)
  1511. break;
  1512. if (txt[i][j] != '~') {
  1513. inOverbar = !inOverbar;
  1514. }
  1515. }
  1516. }
  1517. var glyph = pcbdata.font_data[txt[i][j]];
  1518. if (inOverbar) {
  1519. var overbarStart = [offsetx, -text.height * 1.4 + offsety];
  1520. var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
  1521. if (!lastHadOverbar) {
  1522. overbarStart[0] += text.height * 1.4 * tilt;
  1523. lastHadOverbar = true;
  1524. }
  1525. ctx.beginPath();
  1526. ctx.moveTo(...overbarStart);
  1527. ctx.lineTo(...overbarEnd);
  1528. ctx.stroke();
  1529. } else {
  1530. lastHadOverbar = false;
  1531. }
  1532. for (var line of glyph.l) {
  1533. ctx.beginPath();
  1534. ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
  1535. for (var k = 1; k < line.length; k++) {
  1536. ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
  1537. }
  1538. ctx.stroke();
  1539. }
  1540. offsetx += glyph.w * text.width;
  1541. }
  1542. offsety += interline;
  1543. }
  1544. ctx.restore();
  1545. }
  1546. function drawedge(ctx, scalefactor, edge, color) {
  1547. ctx.strokeStyle = color;
  1548. ctx.fillStyle = color;
  1549. ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
  1550. ctx.lineCap = "round";
  1551. ctx.lineJoin = "round";
  1552. if ("svgpath" in edge) {
  1553. ctx.stroke(new Path2D(edge.svgpath));
  1554. } else {
  1555. ctx.beginPath();
  1556. if (edge.type == "segment") {
  1557. ctx.moveTo(...edge.start);
  1558. ctx.lineTo(...edge.end);
  1559. }
  1560. if (edge.type == "rect") {
  1561. ctx.moveTo(...edge.start);
  1562. ctx.lineTo(edge.start[0], edge.end[1]);
  1563. ctx.lineTo(...edge.end);
  1564. ctx.lineTo(edge.end[0], edge.start[1]);
  1565. ctx.lineTo(...edge.start);
  1566. }
  1567. if (edge.type == "arc") {
  1568. ctx.arc(
  1569. ...edge.start,
  1570. edge.radius,
  1571. deg2rad(edge.startangle),
  1572. deg2rad(edge.endangle));
  1573. }
  1574. if (edge.type == "circle") {
  1575. ctx.arc(
  1576. ...edge.start,
  1577. edge.radius,
  1578. 0, 2 * Math.PI);
  1579. ctx.closePath();
  1580. }
  1581. if (edge.type == "curve") {
  1582. ctx.moveTo(...edge.start);
  1583. ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
  1584. }
  1585. if("filled" in edge && edge.filled)
  1586. ctx.fill();
  1587. else
  1588. ctx.stroke();
  1589. }
  1590. }
  1591. function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
  1592. // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
  1593. var path = new Path2D();
  1594. var width = size[0];
  1595. var height = size[1];
  1596. var x = width * -0.5;
  1597. var y = height * -0.5;
  1598. var chamfOffset = Math.min(width, height) * chamfratio;
  1599. path.moveTo(x, 0);
  1600. if (chamfpos & 4) {
  1601. path.lineTo(x, y + height - chamfOffset);
  1602. path.lineTo(x + chamfOffset, y + height);
  1603. path.lineTo(0, y + height);
  1604. } else {
  1605. path.arcTo(x, y + height, x + width, y + height, radius);
  1606. }
  1607. if (chamfpos & 8) {
  1608. path.lineTo(x + width - chamfOffset, y + height);
  1609. path.lineTo(x + width, y + height - chamfOffset);
  1610. path.lineTo(x + width, 0);
  1611. } else {
  1612. path.arcTo(x + width, y + height, x + width, y, radius);
  1613. }
  1614. if (chamfpos & 2) {
  1615. path.lineTo(x + width, y + chamfOffset);
  1616. path.lineTo(x + width - chamfOffset, y);
  1617. path.lineTo(0, y);
  1618. } else {
  1619. path.arcTo(x + width, y, x, y, radius);
  1620. }
  1621. if (chamfpos & 1) {
  1622. path.lineTo(x + chamfOffset, y);
  1623. path.lineTo(x, y + chamfOffset);
  1624. path.lineTo(x, 0);
  1625. } else {
  1626. path.arcTo(x, y, x, y + height, radius);
  1627. }
  1628. path.closePath();
  1629. return path;
  1630. }
  1631. function getOblongPath(size) {
  1632. return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
  1633. }
  1634. function getPolygonsPath(shape) {
  1635. if (shape.path2d) {
  1636. return shape.path2d;
  1637. }
  1638. if ("svgpath" in shape) {
  1639. shape.path2d = new Path2D(shape.svgpath);
  1640. } else {
  1641. var path = new Path2D();
  1642. for (var polygon of shape.polygons) {
  1643. path.moveTo(...polygon[0]);
  1644. for (var i = 1; i < polygon.length; i++) {
  1645. path.lineTo(...polygon[i]);
  1646. }
  1647. path.closePath();
  1648. }
  1649. shape.path2d = path;
  1650. }
  1651. return shape.path2d;
  1652. }
  1653. function drawPolygonShape(ctx, scalefactor, shape, color) {
  1654. ctx.save();
  1655. if (!("svgpath" in shape)) {
  1656. ctx.translate(...shape.pos);
  1657. ctx.rotate(deg2rad(-shape.angle));
  1658. }
  1659. if("filled" in shape && !shape.filled) {
  1660. ctx.strokeStyle = color;
  1661. ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
  1662. ctx.lineCap = "round";
  1663. ctx.lineJoin = "round";
  1664. ctx.stroke(getPolygonsPath(shape));
  1665. } else {
  1666. ctx.fillStyle = color;
  1667. ctx.fill(getPolygonsPath(shape));
  1668. }
  1669. ctx.restore();
  1670. }
  1671. function drawDrawing(ctx, scalefactor, drawing, color) {
  1672. if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
  1673. drawedge(ctx, scalefactor, drawing, color);
  1674. } else if (drawing.type == "polygon") {
  1675. drawPolygonShape(ctx, scalefactor, drawing, color);
  1676. } else {
  1677. drawText(ctx, drawing, color);
  1678. }
  1679. }
  1680. function getCirclePath(radius) {
  1681. var path = new Path2D();
  1682. path.arc(0, 0, radius, 0, 2 * Math.PI);
  1683. path.closePath();
  1684. return path;
  1685. }
  1686. function getCachedPadPath(pad) {
  1687. if (!pad.path2d) {
  1688. // if path2d is not set, build one and cache it on pad object
  1689. if (pad.shape == "rect") {
  1690. pad.path2d = new Path2D();
  1691. pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
  1692. } else if (pad.shape == "oval") {
  1693. pad.path2d = getOblongPath(pad.size);
  1694. } else if (pad.shape == "circle") {
  1695. pad.path2d = getCirclePath(pad.size[0] / 2);
  1696. } else if (pad.shape == "roundrect") {
  1697. pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
  1698. } else if (pad.shape == "chamfrect") {
  1699. pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
  1700. } else if (pad.shape == "custom") {
  1701. pad.path2d = getPolygonsPath(pad);
  1702. }
  1703. }
  1704. return pad.path2d;
  1705. }
  1706. function drawPad(ctx, pad, color, outline) {
  1707. ctx.save();
  1708. ctx.translate(...pad.pos);
  1709. ctx.rotate(-deg2rad(pad.angle));
  1710. if (pad.offset) {
  1711. ctx.translate(...pad.offset);
  1712. }
  1713. ctx.fillStyle = color;
  1714. ctx.strokeStyle = color;
  1715. var path = getCachedPadPath(pad);
  1716. if (outline) {
  1717. ctx.stroke(path);
  1718. } else {
  1719. ctx.fill(path);
  1720. }
  1721. ctx.restore();
  1722. }
  1723. function drawPadHole(ctx, pad, padHoleColor) {
  1724. if (pad.type != "th") return;
  1725. ctx.save();
  1726. ctx.translate(...pad.pos);
  1727. ctx.rotate(-deg2rad(pad.angle));
  1728. ctx.fillStyle = padHoleColor;
  1729. if (pad.drillshape == "oblong") {
  1730. ctx.fill(getOblongPath(pad.drillsize));
  1731. } else if (pad.drillshape == "rect") {
  1732. ctx.fill(getChamferedRectPath(pad.drillsize, 0, 0, 0));
  1733. } else {
  1734. ctx.fill(getCirclePath(pad.drillsize[0] / 2));
  1735. }
  1736. ctx.restore();
  1737. }
  1738. function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
  1739. if (highlight) {
  1740. // draw bounding box
  1741. if (footprint.layer == layer) {
  1742. ctx.save();
  1743. ctx.globalAlpha = 0.2;
  1744. ctx.translate(...footprint.bbox.pos);
  1745. ctx.rotate(deg2rad(-footprint.bbox.angle));
  1746. ctx.translate(...footprint.bbox.relpos);
  1747. ctx.fillStyle = colors.pad;
  1748. ctx.fillRect(0, 0, ...footprint.bbox.size);
  1749. ctx.globalAlpha = 1;
  1750. ctx.strokeStyle = colors.pad;
  1751. ctx.lineWidth = 3 / scalefactor;
  1752. ctx.strokeRect(0, 0, ...footprint.bbox.size);
  1753. ctx.restore();
  1754. }
  1755. }
  1756. // draw drawings
  1757. for (var drawing of footprint.drawings) {
  1758. if (drawing.layer == layer) {
  1759. drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
  1760. }
  1761. }
  1762. ctx.lineWidth = 3 / scalefactor;
  1763. // draw pads
  1764. if (settings.renderPads) {
  1765. for (var pad of footprint.pads) {
  1766. if (pad.layers.includes(layer)) {
  1767. drawPad(ctx, pad, colors.pad, outline);
  1768. if (pad.pin1 &&
  1769. (settings.highlightpin1 == "all" ||
  1770. settings.highlightpin1 == "selected" && highlight)) {
  1771. drawPad(ctx, pad, colors.outline, true);
  1772. }
  1773. }
  1774. }
  1775. for (var pad of footprint.pads) {
  1776. drawPadHole(ctx, pad, colors.padHole);
  1777. }
  1778. }
  1779. }
  1780. function drawEdgeCuts(canvas, scalefactor) {
  1781. var ctx = canvas.getContext("2d");
  1782. var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
  1783. for (var edge of pcbdata.edges) {
  1784. drawDrawing(ctx, scalefactor, edge, edgecolor);
  1785. }
  1786. }
  1787. function drawFootprints(canvas, layer, scalefactor, highlight) {
  1788. var ctx = canvas.getContext("2d");
  1789. ctx.lineWidth = 3 / scalefactor;
  1790. var style = getComputedStyle(topmostdiv);
  1791. var colors = {
  1792. pad: style.getPropertyValue('--pad-color'),
  1793. padHole: style.getPropertyValue('--pad-hole-color'),
  1794. outline: style.getPropertyValue('--pin1-outline-color'),
  1795. }
  1796. for (var i = 0; i < pcbdata.footprints.length; i++) {
  1797. var mod = pcbdata.footprints[i];
  1798. var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
  1799. var h = highlightedFootprints.includes(i);
  1800. var d = markedFootprints.has(i);
  1801. if (highlight) {
  1802. if(h && d) {
  1803. colors.pad = style.getPropertyValue('--pad-color-highlight-both');
  1804. colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
  1805. } else if (h) {
  1806. colors.pad = style.getPropertyValue('--pad-color-highlight');
  1807. colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
  1808. } else if (d) {
  1809. colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
  1810. colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
  1811. }
  1812. }
  1813. if( h || d || !highlight) {
  1814. drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
  1815. }
  1816. }
  1817. }
  1818. function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
  1819. var ctx = canvas.getContext("2d");
  1820. for (var d of pcbdata.drawings[layername][layer]) {
  1821. if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
  1822. drawedge(ctx, scalefactor, d, edgeColor);
  1823. } else if (d.type == "polygon") {
  1824. drawPolygonShape(ctx, scalefactor, d, polygonColor);
  1825. } else {
  1826. drawText(ctx, d, textColor);
  1827. }
  1828. }
  1829. }
  1830. function drawTracks(canvas, layer, defaultColor, highlight) {
  1831. ctx = canvas.getContext("2d");
  1832. ctx.lineCap = "round";
  1833. var hasHole = (track) => (
  1834. 'drillsize' in track &&
  1835. track.start[0] == track.end[0] &&
  1836. track.start[1] == track.end[1]);
  1837. // First draw tracks and tented vias
  1838. for (var track of pcbdata.tracks[layer]) {
  1839. if (highlight && highlightedNet != track.net) continue;
  1840. if (!hasHole(track)) {
  1841. ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
  1842. ctx.lineWidth = track.width;
  1843. ctx.beginPath();
  1844. if ('radius' in track) {
  1845. ctx.arc(
  1846. ...track.center,
  1847. track.radius,
  1848. deg2rad(track.startangle),
  1849. deg2rad(track.endangle));
  1850. } else {
  1851. ctx.moveTo(...track.start);
  1852. ctx.lineTo(...track.end);
  1853. }
  1854. ctx.stroke();
  1855. }
  1856. }
  1857. // Second pass to draw untented vias
  1858. var style = getComputedStyle(topmostdiv);
  1859. var holeColor = style.getPropertyValue('--pad-hole-color')
  1860. for (var track of pcbdata.tracks[layer]) {
  1861. if (highlight && highlightedNet != track.net) continue;
  1862. if (hasHole(track)) {
  1863. ctx.strokeStyle = highlight ? defaultColor : settings.netColors[track.net] || defaultColor;
  1864. ctx.lineWidth = track.width;
  1865. ctx.beginPath();
  1866. ctx.moveTo(...track.start);
  1867. ctx.lineTo(...track.end);
  1868. ctx.stroke();
  1869. ctx.strokeStyle = holeColor;
  1870. ctx.lineWidth = track.drillsize;
  1871. ctx.lineTo(...track.end);
  1872. ctx.stroke();
  1873. }
  1874. }
  1875. }
  1876. function drawZones(canvas, layer, defaultColor, highlight) {
  1877. ctx = canvas.getContext("2d");
  1878. ctx.lineJoin = "round";
  1879. for (var zone of pcbdata.zones[layer]) {
  1880. if (highlight && highlightedNet != zone.net) continue;
  1881. ctx.strokeStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
  1882. ctx.fillStyle = highlight ? defaultColor : settings.netColors[zone.net] || defaultColor;
  1883. if (!zone.path2d) {
  1884. zone.path2d = getPolygonsPath(zone);
  1885. }
  1886. ctx.fill(zone.path2d, zone.fillrule || "nonzero");
  1887. if (zone.width > 0) {
  1888. ctx.lineWidth = zone.width;
  1889. ctx.stroke(zone.path2d);
  1890. }
  1891. }
  1892. }
  1893. function clearCanvas(canvas, color = null) {
  1894. var ctx = canvas.getContext("2d");
  1895. ctx.save();
  1896. ctx.setTransform(1, 0, 0, 1, 0, 0);
  1897. if (color) {
  1898. ctx.fillStyle = color;
  1899. ctx.fillRect(0, 0, canvas.width, canvas.height);
  1900. } else {
  1901. if (!window.matchMedia("print").matches)
  1902. ctx.clearRect(0, 0, canvas.width, canvas.height);
  1903. }
  1904. ctx.restore();
  1905. }
  1906. function drawNets(canvas, layer, highlight) {
  1907. var style = getComputedStyle(topmostdiv);
  1908. if (settings.renderZones) {
  1909. var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
  1910. drawZones(canvas, layer, zoneColor, highlight);
  1911. }
  1912. if (settings.renderTracks) {
  1913. var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
  1914. drawTracks(canvas, layer, trackColor, highlight);
  1915. }
  1916. if (highlight && settings.renderPads) {
  1917. var padColor = style.getPropertyValue('--pad-color-highlight');
  1918. var padHoleColor = style.getPropertyValue('--pad-hole-color');
  1919. var ctx = canvas.getContext("2d");
  1920. for (var footprint of pcbdata.footprints) {
  1921. // draw pads
  1922. var padDrawn = false;
  1923. for (var pad of footprint.pads) {
  1924. if (highlightedNet != pad.net) continue;
  1925. if (pad.layers.includes(layer)) {
  1926. drawPad(ctx, pad, padColor, false);
  1927. padDrawn = true;
  1928. }
  1929. }
  1930. if (padDrawn) {
  1931. // redraw all pad holes because some pads may overlap
  1932. for (var pad of footprint.pads) {
  1933. drawPadHole(ctx, pad, padHoleColor);
  1934. }
  1935. }
  1936. }
  1937. }
  1938. }
  1939. function drawHighlightsOnLayer(canvasdict, clear = true) {
  1940. if (clear) {
  1941. clearCanvas(canvasdict.highlight);
  1942. }
  1943. if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
  1944. drawFootprints(canvasdict.highlight, canvasdict.layer,
  1945. canvasdict.transform.s * canvasdict.transform.zoom, true);
  1946. }
  1947. if (highlightedNet !== null) {
  1948. drawNets(canvasdict.highlight, canvasdict.layer, true);
  1949. }
  1950. }
  1951. function drawHighlights() {
  1952. drawHighlightsOnLayer(allcanvas.front);
  1953. drawHighlightsOnLayer(allcanvas.back);
  1954. }
  1955. function drawBackground(canvasdict, clear = true) {
  1956. if (clear) {
  1957. clearCanvas(canvasdict.bg);
  1958. clearCanvas(canvasdict.fab);
  1959. clearCanvas(canvasdict.silk);
  1960. }
  1961. drawNets(canvasdict.bg, canvasdict.layer, false);
  1962. drawFootprints(canvasdict.bg, canvasdict.layer,
  1963. canvasdict.transform.s * canvasdict.transform.zoom, false);
  1964. drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
  1965. var style = getComputedStyle(topmostdiv);
  1966. var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
  1967. var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
  1968. var textColor = style.getPropertyValue('--silkscreen-text-color');
  1969. if (settings.renderSilkscreen) {
  1970. drawBgLayer(
  1971. "silkscreen", canvasdict.silk, canvasdict.layer,
  1972. canvasdict.transform.s * canvasdict.transform.zoom,
  1973. edgeColor, polygonColor, textColor);
  1974. }
  1975. edgeColor = style.getPropertyValue('--fabrication-edge-color');
  1976. polygonColor = style.getPropertyValue('--fabrication-polygon-color');
  1977. textColor = style.getPropertyValue('--fabrication-text-color');
  1978. if (settings.renderFabrication) {
  1979. drawBgLayer(
  1980. "fabrication", canvasdict.fab, canvasdict.layer,
  1981. canvasdict.transform.s * canvasdict.transform.zoom,
  1982. edgeColor, polygonColor, textColor);
  1983. }
  1984. }
  1985. function prepareCanvas(canvas, flip, transform) {
  1986. var ctx = canvas.getContext("2d");
  1987. ctx.setTransform(1, 0, 0, 1, 0, 0);
  1988. ctx.scale(transform.zoom, transform.zoom);
  1989. ctx.translate(transform.panx, transform.pany);
  1990. if (flip) {
  1991. ctx.scale(-1, 1);
  1992. }
  1993. ctx.translate(transform.x, transform.y);
  1994. ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
  1995. ctx.scale(transform.s, transform.s);
  1996. }
  1997. function prepareLayer(canvasdict) {
  1998. var flip = (canvasdict.layer === "B");
  1999. for (var c of ["bg", "fab", "silk", "highlight"]) {
  2000. prepareCanvas(canvasdict[c], flip, canvasdict.transform);
  2001. }
  2002. }
  2003. function rotateVector(v, angle) {
  2004. angle = deg2rad(angle);
  2005. return [
  2006. v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
  2007. v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
  2008. ];
  2009. }
  2010. function applyRotation(bbox, flip) {
  2011. var corners = [
  2012. [bbox.minx, bbox.miny],
  2013. [bbox.minx, bbox.maxy],
  2014. [bbox.maxx, bbox.miny],
  2015. [bbox.maxx, bbox.maxy],
  2016. ];
  2017. corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
  2018. return {
  2019. minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
  2020. miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
  2021. maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
  2022. maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
  2023. }
  2024. }
  2025. function recalcLayerScale(layerdict, width, height) {
  2026. var flip = (layerdict.layer === "B");
  2027. var bbox = applyRotation(pcbdata.edges_bbox, flip);
  2028. var scalefactor = 0.98 * Math.min(
  2029. width / (bbox.maxx - bbox.minx),
  2030. height / (bbox.maxy - bbox.miny)
  2031. );
  2032. if (scalefactor < 0.1) {
  2033. scalefactor = 1;
  2034. }
  2035. layerdict.transform.s = scalefactor;
  2036. if (flip) {
  2037. layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
  2038. } else {
  2039. layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
  2040. }
  2041. layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
  2042. for (var c of ["bg", "fab", "silk", "highlight"]) {
  2043. canvas = layerdict[c];
  2044. canvas.width = width;
  2045. canvas.height = height;
  2046. canvas.style.width = (width / devicePixelRatio) + "px";
  2047. canvas.style.height = (height / devicePixelRatio) + "px";
  2048. }
  2049. }
  2050. function redrawCanvas(layerdict) {
  2051. prepareLayer(layerdict);
  2052. drawBackground(layerdict);
  2053. drawHighlightsOnLayer(layerdict);
  2054. }
  2055. function resizeCanvas(layerdict) {
  2056. var canvasdivid = {
  2057. "F": "frontcanvas",
  2058. "B": "backcanvas"
  2059. } [layerdict.layer];
  2060. var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
  2061. var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
  2062. recalcLayerScale(layerdict, width, height);
  2063. redrawCanvas(layerdict);
  2064. }
  2065. function resizeAll() {
  2066. resizeCanvas(allcanvas.front);
  2067. resizeCanvas(allcanvas.back);
  2068. }
  2069. function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
  2070. var A = x - x1;
  2071. var B = y - y1;
  2072. var C = x2 - x1;
  2073. var D = y2 - y1;
  2074. var dot = A * C + B * D;
  2075. var len_sq = C * C + D * D;
  2076. var dx, dy;
  2077. if (len_sq == 0) {
  2078. // start and end of the segment coincide
  2079. dx = x - x1;
  2080. dy = y - y1;
  2081. } else {
  2082. var param = dot / len_sq;
  2083. var xx, yy;
  2084. if (param < 0) {
  2085. xx = x1;
  2086. yy = y1;
  2087. } else if (param > 1) {
  2088. xx = x2;
  2089. yy = y2;
  2090. } else {
  2091. xx = x1 + param * C;
  2092. yy = y1 + param * D;
  2093. }
  2094. dx = x - xx;
  2095. dy = y - yy;
  2096. }
  2097. return dx * dx + dy * dy <= d * d;
  2098. }
  2099. function modulo(n, mod) {
  2100. return ((n % mod) + mod) % mod;
  2101. }
  2102. function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
  2103. var dx = x - xc;
  2104. var dy = y - yc;
  2105. var r_sq = dx * dx + dy * dy;
  2106. var rmin = Math.max(0, radius - d);
  2107. var rmax = radius + d;
  2108. if (r_sq < rmin * rmin || r_sq > rmax * rmax)
  2109. return false;
  2110. var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
  2111. var dx1 = xc + radius * Math.cos(angle1) - x;
  2112. var dy1 = yc + radius * Math.sin(angle1) - y;
  2113. if (dx1 * dx1 + dy1 * dy1 <= d * d)
  2114. return true;
  2115. var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
  2116. var dx2 = xc + radius * Math.cos(angle2) - x;
  2117. var dy2 = yc + radius * Math.sin(angle2) - y;
  2118. if (dx2 * dx2 + dy2 * dy2 <= d * d)
  2119. return true;
  2120. var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
  2121. if (angle1 > angle2)
  2122. return (angle >= angle2 || angle <= angle1);
  2123. else
  2124. return (angle >= angle1 && angle <= angle2);
  2125. }
  2126. function pointWithinPad(x, y, pad) {
  2127. var v = [x - pad.pos[0], y - pad.pos[1]];
  2128. v = rotateVector(v, pad.angle);
  2129. if (pad.offset) {
  2130. v[0] -= pad.offset[0];
  2131. v[1] -= pad.offset[1];
  2132. }
  2133. return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
  2134. }
  2135. function netHitScan(layer, x, y) {
  2136. // Check track segments
  2137. if (settings.renderTracks && pcbdata.tracks) {
  2138. for (var track of pcbdata.tracks[layer]) {
  2139. if ('radius' in track) {
  2140. if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
  2141. return track.net;
  2142. }
  2143. } else {
  2144. if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
  2145. return track.net;
  2146. }
  2147. }
  2148. }
  2149. }
  2150. // Check pads
  2151. if (settings.renderPads) {
  2152. for (var footprint of pcbdata.footprints) {
  2153. for (var pad of footprint.pads) {
  2154. if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
  2155. return pad.net;
  2156. }
  2157. }
  2158. }
  2159. }
  2160. return null;
  2161. }
  2162. function pointWithinFootprintBbox(x, y, bbox) {
  2163. var v = [x - bbox.pos[0], y - bbox.pos[1]];
  2164. v = rotateVector(v, bbox.angle);
  2165. return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
  2166. bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
  2167. }
  2168. function bboxHitScan(layer, x, y) {
  2169. var result = [];
  2170. for (var i = 0; i < pcbdata.footprints.length; i++) {
  2171. var footprint = pcbdata.footprints[i];
  2172. if (footprint.layer == layer) {
  2173. if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
  2174. result.push(i);
  2175. }
  2176. }
  2177. }
  2178. return result;
  2179. }
  2180. function handlePointerDown(e, layerdict) {
  2181. if (e.button != 0 && e.button != 1) {
  2182. return;
  2183. }
  2184. e.preventDefault();
  2185. e.stopPropagation();
  2186. if (!e.hasOwnProperty("offsetX")) {
  2187. // The polyfill doesn't set this properly
  2188. e.offsetX = e.pageX - e.currentTarget.offsetLeft;
  2189. e.offsetY = e.pageY - e.currentTarget.offsetTop;
  2190. }
  2191. layerdict.pointerStates[e.pointerId] = {
  2192. distanceTravelled: 0,
  2193. lastX: e.offsetX,
  2194. lastY: e.offsetY,
  2195. downTime: Date.now(),
  2196. };
  2197. }
  2198. function handleMouseClick(e, layerdict) {
  2199. if (!e.hasOwnProperty("offsetX")) {
  2200. // The polyfill doesn't set this properly
  2201. e.offsetX = e.pageX - e.currentTarget.offsetLeft;
  2202. e.offsetY = e.pageY - e.currentTarget.offsetTop;
  2203. }
  2204. var x = e.offsetX;
  2205. var y = e.offsetY;
  2206. var t = layerdict.transform;
  2207. var flip = layerdict.layer === "B";
  2208. if (flip) {
  2209. x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
  2210. } else {
  2211. x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
  2212. }
  2213. y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
  2214. var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
  2215. if ("nets" in pcbdata) {
  2216. var net = netHitScan(layerdict.layer, ...v);
  2217. if (net !== highlightedNet) {
  2218. netClicked(net);
  2219. }
  2220. }
  2221. if (highlightedNet === null) {
  2222. var footprints = bboxHitScan(layerdict.layer, ...v);
  2223. if (footprints.length > 0) {
  2224. footprintsClicked(footprints);
  2225. }
  2226. }
  2227. }
  2228. function handlePointerLeave(e, layerdict) {
  2229. e.preventDefault();
  2230. e.stopPropagation();
  2231. if (!settings.redrawOnDrag) {
  2232. redrawCanvas(layerdict);
  2233. }
  2234. delete layerdict.pointerStates[e.pointerId];
  2235. }
  2236. function resetTransform(layerdict) {
  2237. layerdict.transform.panx = 0;
  2238. layerdict.transform.pany = 0;
  2239. layerdict.transform.zoom = 1;
  2240. redrawCanvas(layerdict);
  2241. }
  2242. function handlePointerUp(e, layerdict) {
  2243. if (!e.hasOwnProperty("offsetX")) {
  2244. // The polyfill doesn't set this properly
  2245. e.offsetX = e.pageX - e.currentTarget.offsetLeft;
  2246. e.offsetY = e.pageY - e.currentTarget.offsetTop;
  2247. }
  2248. e.preventDefault();
  2249. e.stopPropagation();
  2250. if (e.button == 2) {
  2251. // Reset pan and zoom on right click.
  2252. resetTransform(layerdict);
  2253. layerdict.anotherPointerTapped = false;
  2254. return;
  2255. }
  2256. // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
  2257. var ptr = layerdict.pointerStates[e.pointerId];
  2258. ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
  2259. if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
  2260. if (Object.keys(layerdict.pointerStates).length == 1) {
  2261. if (layerdict.anotherPointerTapped) {
  2262. // This is the second pointer coming off of a two-finger tap
  2263. resetTransform(layerdict);
  2264. } else {
  2265. // This is just a regular tap
  2266. handleMouseClick(e, layerdict);
  2267. }
  2268. layerdict.anotherPointerTapped = false;
  2269. } else {
  2270. // This is the first finger coming off of what could become a two-finger tap
  2271. layerdict.anotherPointerTapped = true;
  2272. }
  2273. } else {
  2274. if (!settings.redrawOnDrag) {
  2275. redrawCanvas(layerdict);
  2276. }
  2277. layerdict.anotherPointerTapped = false;
  2278. }
  2279. delete layerdict.pointerStates[e.pointerId];
  2280. }
  2281. function handlePointerMove(e, layerdict) {
  2282. if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
  2283. return;
  2284. }
  2285. e.preventDefault();
  2286. e.stopPropagation();
  2287. if (!e.hasOwnProperty("offsetX")) {
  2288. // The polyfill doesn't set this properly
  2289. e.offsetX = e.pageX - e.currentTarget.offsetLeft;
  2290. e.offsetY = e.pageY - e.currentTarget.offsetTop;
  2291. }
  2292. var thisPtr = layerdict.pointerStates[e.pointerId];
  2293. var dx = e.offsetX - thisPtr.lastX;
  2294. var dy = e.offsetY - thisPtr.lastY;
  2295. // If this number is low on pointer up, we count the action as a click
  2296. thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
  2297. if (Object.keys(layerdict.pointerStates).length == 1) {
  2298. // This is a simple drag
  2299. layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
  2300. layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
  2301. } else if (Object.keys(layerdict.pointerStates).length == 2) {
  2302. var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
  2303. var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
  2304. var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
  2305. var scaleFactor = newDist / oldDist;
  2306. if (scaleFactor != NaN) {
  2307. layerdict.transform.zoom *= scaleFactor;
  2308. var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
  2309. layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
  2310. layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
  2311. }
  2312. }
  2313. thisPtr.lastX = e.offsetX;
  2314. thisPtr.lastY = e.offsetY;
  2315. if (settings.redrawOnDrag) {
  2316. redrawCanvas(layerdict);
  2317. }
  2318. }
  2319. function handleMouseWheel(e, layerdict) {
  2320. e.preventDefault();
  2321. e.stopPropagation();
  2322. var t = layerdict.transform;
  2323. var wheeldelta = e.deltaY;
  2324. if (e.deltaMode == 1) {
  2325. // FF only, scroll by lines
  2326. wheeldelta *= 30;
  2327. } else if (e.deltaMode == 2) {
  2328. wheeldelta *= 300;
  2329. }
  2330. var m = Math.pow(1.1, -wheeldelta / 40);
  2331. // Limit amount of zoom per tick.
  2332. if (m > 2) {
  2333. m = 2;
  2334. } else if (m < 0.5) {
  2335. m = 0.5;
  2336. }
  2337. t.zoom *= m;
  2338. var zoomd = (1 - m) / t.zoom;
  2339. t.panx += devicePixelRatio * e.offsetX * zoomd;
  2340. t.pany += devicePixelRatio * e.offsetY * zoomd;
  2341. redrawCanvas(layerdict);
  2342. }
  2343. function addMouseHandlers(div, layerdict) {
  2344. div.addEventListener("pointerdown", function(e) {
  2345. handlePointerDown(e, layerdict);
  2346. });
  2347. div.addEventListener("pointermove", function(e) {
  2348. handlePointerMove(e, layerdict);
  2349. });
  2350. div.addEventListener("pointerup", function(e) {
  2351. handlePointerUp(e, layerdict);
  2352. });
  2353. var pointerleave = function(e) {
  2354. handlePointerLeave(e, layerdict);
  2355. }
  2356. div.addEventListener("pointercancel", pointerleave);
  2357. div.addEventListener("pointerleave", pointerleave);
  2358. div.addEventListener("pointerout", pointerleave);
  2359. div.onwheel = function(e) {
  2360. handleMouseWheel(e, layerdict);
  2361. }
  2362. for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
  2363. element.addEventListener("contextmenu", function(e) {
  2364. e.preventDefault();
  2365. }, false);
  2366. }
  2367. }
  2368. function setRedrawOnDrag(value) {
  2369. settings.redrawOnDrag = value;
  2370. writeStorage("redrawOnDrag", value);
  2371. }
  2372. function setBoardRotation(value) {
  2373. settings.boardRotation = value * 5;
  2374. writeStorage("boardRotation", settings.boardRotation);
  2375. document.getElementById("rotationDegree").textContent = settings.boardRotation;
  2376. resizeAll();
  2377. }
  2378. function setOffsetBackRotation(value) {
  2379. settings.offsetBackRotation = value;
  2380. writeStorage("offsetBackRotation", value);
  2381. resizeAll();
  2382. }
  2383. function initRender() {
  2384. allcanvas = {
  2385. front: {
  2386. transform: {
  2387. x: 0,
  2388. y: 0,
  2389. s: 1,
  2390. panx: 0,
  2391. pany: 0,
  2392. zoom: 1,
  2393. },
  2394. pointerStates: {},
  2395. anotherPointerTapped: false,
  2396. bg: document.getElementById("F_bg"),
  2397. fab: document.getElementById("F_fab"),
  2398. silk: document.getElementById("F_slk"),
  2399. highlight: document.getElementById("F_hl"),
  2400. layer: "F",
  2401. },
  2402. back: {
  2403. transform: {
  2404. x: 0,
  2405. y: 0,
  2406. s: 1,
  2407. panx: 0,
  2408. pany: 0,
  2409. zoom: 1,
  2410. },
  2411. pointerStates: {},
  2412. anotherPointerTapped: false,
  2413. bg: document.getElementById("B_bg"),
  2414. fab: document.getElementById("B_fab"),
  2415. silk: document.getElementById("B_slk"),
  2416. highlight: document.getElementById("B_hl"),
  2417. layer: "B",
  2418. }
  2419. };
  2420. addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
  2421. addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
  2422. }
  2423. ///////////////////////////////////////////////
  2424. ///////////////////////////////////////////////
  2425. /*
  2426. * Table reordering via Drag'n'Drop
  2427. * Inspired by: https://htmldom.dev/drag-and-drop-table-column
  2428. */
  2429. function setBomHandlers() {
  2430. const bom = document.getElementById('bomtable');
  2431. let dragName;
  2432. let placeHolderElements;
  2433. let draggingElement;
  2434. let forcePopulation;
  2435. let xOffset;
  2436. let yOffset;
  2437. let wasDragged;
  2438. const mouseUpHandler = function(e) {
  2439. // Delete dragging element
  2440. draggingElement.remove();
  2441. // Make BOM selectable again
  2442. bom.style.removeProperty("userSelect");
  2443. // Remove listeners
  2444. document.removeEventListener('mousemove', mouseMoveHandler);
  2445. document.removeEventListener('mouseup', mouseUpHandler);
  2446. if (wasDragged) {
  2447. // Redraw whole BOM
  2448. populateBomTable();
  2449. }
  2450. }
  2451. const mouseMoveHandler = function(e) {
  2452. // Notice the dragging
  2453. wasDragged = true;
  2454. // Make the dragged element visible
  2455. draggingElement.style.removeProperty("display");
  2456. // Set elements position to mouse position
  2457. draggingElement.style.left = `${e.screenX - xOffset}px`;
  2458. draggingElement.style.top = `${e.screenY - yOffset}px`;
  2459. // Forced redrawing of BOM table
  2460. if (forcePopulation) {
  2461. forcePopulation = false;
  2462. // Copy array
  2463. phe = Array.from(placeHolderElements);
  2464. // populate BOM table again
  2465. populateBomHeader(dragName, phe);
  2466. populateBomBody(dragName, phe);
  2467. }
  2468. // Set up array of hidden columns
  2469. var hiddenColumns = Array.from(settings.hiddenColumns);
  2470. // In the ungrouped mode, quantity don't exist
  2471. if (settings.bommode === "ungrouped")
  2472. hiddenColumns.push("Quantity");
  2473. // If no checkbox fields can be found, we consider them hidden
  2474. if (settings.checkboxes.length == 0)
  2475. hiddenColumns.push("checkboxes");
  2476. // Get table headers and group them into checkboxes, extrafields and normal headers
  2477. const bh = document.getElementById("bomhead");
  2478. headers = Array.from(bh.querySelectorAll("th"))
  2479. headers.shift() // numCol is not part of the columnOrder
  2480. headerGroups = []
  2481. lastCompoundClass = null;
  2482. for (i = 0; i < settings.columnOrder.length; i++) {
  2483. cElem = settings.columnOrder[i];
  2484. if (hiddenColumns.includes(cElem)) {
  2485. // Hidden columns appear as a dummy element
  2486. headerGroups.push([]);
  2487. continue;
  2488. }
  2489. elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
  2490. if (elem.classList.contains("bom-checkbox")) {
  2491. if (lastCompoundClass === "bom-checkbox") {
  2492. cbGroup = headerGroups.pop();
  2493. cbGroup.push(elem);
  2494. headerGroups.push(cbGroup);
  2495. } else {
  2496. lastCompoundClass = "bom-checkbox";
  2497. headerGroups.push([elem])
  2498. }
  2499. } else {
  2500. headerGroups.push([elem])
  2501. }
  2502. }
  2503. // Copy settings.columnOrder
  2504. var columns = Array.from(settings.columnOrder)
  2505. // Set up array with indices of hidden columns
  2506. var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
  2507. var dragIndex = columns.indexOf(dragName);
  2508. var swapIndex = dragIndex;
  2509. var swapDone = false;
  2510. // Check if the current dragged element is swapable with the left or right element
  2511. if (dragIndex > 0) {
  2512. // Get left headers boundingbox
  2513. swapIndex = dragIndex - 1;
  2514. while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
  2515. swapIndex--;
  2516. if (!hiddenIndices.includes(swapIndex)) {
  2517. box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
  2518. if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
  2519. swapElement = columns[dragIndex];
  2520. columns.splice(dragIndex, 1);
  2521. columns.splice(swapIndex, 0, swapElement);
  2522. forcePopulation = true;
  2523. swapDone = true;
  2524. }
  2525. }
  2526. }
  2527. if ((!swapDone) && dragIndex < headerGroups.length - 1) {
  2528. // Get right headers boundingbox
  2529. swapIndex = dragIndex + 1;
  2530. while (hiddenIndices.includes(swapIndex))
  2531. swapIndex++;
  2532. if (swapIndex < headerGroups.length) {
  2533. box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
  2534. if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
  2535. swapElement = columns[dragIndex];
  2536. columns.splice(dragIndex, 1);
  2537. columns.splice(swapIndex, 0, swapElement);
  2538. forcePopulation = true;
  2539. swapDone = true;
  2540. }
  2541. }
  2542. }
  2543. // Write back change to storage
  2544. if (swapDone) {
  2545. settings.columnOrder = columns
  2546. writeStorage("columnOrder", JSON.stringify(columns));
  2547. }
  2548. }
  2549. const mouseDownHandler = function(e) {
  2550. var target = e.target;
  2551. if (target.tagName.toLowerCase() != "td")
  2552. target = target.parentElement;
  2553. // Used to check if a dragging has ever happened
  2554. wasDragged = false;
  2555. // Create new element which will be displayed as the dragged column
  2556. draggingElement = document.createElement("div")
  2557. draggingElement.classList.add("dragging");
  2558. draggingElement.style.display = "none";
  2559. draggingElement.style.position = "absolute";
  2560. draggingElement.style.overflow = "hidden";
  2561. // Get bomhead and bombody elements
  2562. const bh = document.getElementById("bomhead");
  2563. const bb = document.getElementById("bombody");
  2564. // Get all compound headers for the current column
  2565. var compoundHeaders;
  2566. if (target.classList.contains("bom-checkbox")) {
  2567. compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
  2568. } else {
  2569. compoundHeaders = [target];
  2570. }
  2571. // Create new table which will display the column
  2572. var newTable = document.createElement("table");
  2573. newTable.classList.add("bom");
  2574. newTable.style.background = "white";
  2575. draggingElement.append(newTable);
  2576. // Create new header element
  2577. var newHeader = document.createElement("thead");
  2578. newTable.append(newHeader);
  2579. // Set up array for storing all placeholder elements
  2580. placeHolderElements = [];
  2581. // Add all compound headers to the new thead element and placeholders
  2582. compoundHeaders.forEach(function(h) {
  2583. clone = cloneElementWithDimensions(h);
  2584. newHeader.append(clone);
  2585. placeHolderElements.push(clone);
  2586. });
  2587. // Create new body element
  2588. var newBody = document.createElement("tbody");
  2589. newTable.append(newBody);
  2590. // Get indices for compound headers
  2591. var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
  2592. // For each row in the BOM body...
  2593. var rows = bb.querySelectorAll("tr");
  2594. rows.forEach(function(row) {
  2595. // ..get the cells for the compound column
  2596. const tds = row.querySelectorAll("td");
  2597. var copytds = idxs.map(i => tds[i]);
  2598. // Add them to the new element and the placeholders
  2599. var newRow = document.createElement("tr");
  2600. copytds.forEach(function(td) {
  2601. clone = cloneElementWithDimensions(td);
  2602. newRow.append(clone);
  2603. placeHolderElements.push(clone);
  2604. });
  2605. newBody.append(newRow);
  2606. });
  2607. // Compute width for compound header
  2608. var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
  2609. draggingElement.style.width = `${width}px`;
  2610. // Insert the new dragging element and disable selection on BOM
  2611. bom.insertBefore(draggingElement, null);
  2612. bom.style.userSelect = "none";
  2613. // Determine the mouse position offset
  2614. xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
  2615. yOffset = e.screenY - compoundHeaders[0].offsetTop;
  2616. // Get name for the column in settings.columnOrder
  2617. dragName = getColumnOrderName(target);
  2618. // Change text and class for placeholder elements
  2619. placeHolderElements = placeHolderElements.map(function(e) {
  2620. newElem = cloneElementWithDimensions(e);
  2621. newElem.textContent = "";
  2622. newElem.classList.add("placeholder");
  2623. return newElem;
  2624. });
  2625. // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
  2626. forcePopulation = true;
  2627. // Add listeners for move and up on mouse
  2628. document.addEventListener('mousemove', mouseMoveHandler);
  2629. document.addEventListener('mouseup', mouseUpHandler);
  2630. }
  2631. // In netlist mode, there is nothing to reorder
  2632. if (settings.bommode === "netlist")
  2633. return;
  2634. // Add mouseDownHandler to every column except the numCol
  2635. bom.querySelectorAll("th")
  2636. .forEach(function(head) {
  2637. if (!head.classList.contains("numCol")) {
  2638. head.onmousedown = mouseDownHandler;
  2639. }
  2640. });
  2641. }
  2642. function getBoundingClientRectFromMultiple(elements) {
  2643. var elems = Array.from(elements);
  2644. if (elems.length == 0)
  2645. return null;
  2646. var box = elems.shift()
  2647. .getBoundingClientRect();
  2648. elems.forEach(function(elem) {
  2649. var elembox = elem.getBoundingClientRect();
  2650. box.left = Math.min(elembox.left, box.left);
  2651. box.top = Math.min(elembox.top, box.top);
  2652. box.width += elembox.width;
  2653. box.height = Math.max(elembox.height, box.height);
  2654. });
  2655. return box;
  2656. }
  2657. function cloneElementWithDimensions(elem) {
  2658. var newElem = elem.cloneNode(true);
  2659. newElem.style.height = window.getComputedStyle(elem).height;
  2660. newElem.style.width = window.getComputedStyle(elem).width;
  2661. return newElem;
  2662. }
  2663. function getBomTableHeaderIndex(elem) {
  2664. const bh = document.getElementById('bomhead');
  2665. const ths = Array.from(bh.querySelectorAll("th"));
  2666. return ths.indexOf(elem);
  2667. }
  2668. function getColumnOrderName(elem) {
  2669. var cname = elem.getAttribute("col_name");
  2670. if (cname === "bom-checkbox")
  2671. return "checkboxes";
  2672. else
  2673. return cname;
  2674. }
  2675. function resizableGrid(tablehead) {
  2676. var cols = tablehead.firstElementChild.children;
  2677. var rowWidth = tablehead.offsetWidth;
  2678. for (var i = 1; i < cols.length; i++) {
  2679. if (cols[i].classList.contains("bom-checkbox"))
  2680. continue;
  2681. cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
  2682. }
  2683. for (var i = 1; i < cols.length - 1; i++) {
  2684. var div = document.createElement('div');
  2685. div.className = "column-width-handle";
  2686. cols[i].appendChild(div);
  2687. setListeners(div);
  2688. }
  2689. function setListeners(div) {
  2690. var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
  2691. div.addEventListener('mousedown', function(e) {
  2692. e.preventDefault();
  2693. e.stopPropagation();
  2694. curCol = e.target.parentElement;
  2695. nxtCol = curCol.nextElementSibling;
  2696. startX = e.pageX;
  2697. var padding = paddingDiff(curCol);
  2698. rowWidth = curCol.parentElement.offsetWidth;
  2699. curColWidth = curCol.clientWidth - padding;
  2700. nxtColWidth = nxtCol.clientWidth - padding;
  2701. });
  2702. document.addEventListener('mousemove', function(e) {
  2703. if (startX) {
  2704. var diffX = e.pageX - startX;
  2705. diffX = -Math.min(-diffX, curColWidth - 20);
  2706. diffX = Math.min(diffX, nxtColWidth - 20);
  2707. curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
  2708. nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
  2709. console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
  2710. }
  2711. });
  2712. document.addEventListener('mouseup', function(e) {
  2713. curCol = undefined;
  2714. nxtCol = undefined;
  2715. startX = undefined;
  2716. nxtColWidth = undefined;
  2717. curColWidth = undefined
  2718. });
  2719. }
  2720. function paddingDiff(col) {
  2721. if (getStyleVal(col, 'box-sizing') == 'border-box') {
  2722. return 0;
  2723. }
  2724. var padLeft = getStyleVal(col, 'padding-left');
  2725. var padRight = getStyleVal(col, 'padding-right');
  2726. return (parseInt(padLeft) + parseInt(padRight));
  2727. }
  2728. function getStyleVal(elm, css) {
  2729. return (window.getComputedStyle(elm, null).getPropertyValue(css))
  2730. }
  2731. }
  2732. ///////////////////////////////////////////////
  2733. ///////////////////////////////////////////////
  2734. /* DOM manipulation and misc code */
  2735. var bomsplit;
  2736. var canvassplit;
  2737. var initDone = false;
  2738. var bomSortFunction = null;
  2739. var currentSortColumn = null;
  2740. var currentSortOrder = null;
  2741. var currentHighlightedRowId;
  2742. var highlightHandlers = [];
  2743. var footprintIndexToHandler = {};
  2744. var netsToHandler = {};
  2745. var markedFootprints = new Set();
  2746. var highlightedFootprints = [];
  2747. var highlightedNet = null;
  2748. var lastClicked;
  2749. function dbg(html) {
  2750. dbgdiv.innerHTML = html;
  2751. }
  2752. function redrawIfInitDone() {
  2753. if (initDone) {
  2754. redrawCanvas(allcanvas.front);
  2755. redrawCanvas(allcanvas.back);
  2756. }
  2757. }
  2758. function padsVisible(value) {
  2759. writeStorage("padsVisible", value);
  2760. settings.renderPads = value;
  2761. redrawIfInitDone();
  2762. }
  2763. function referencesVisible(value) {
  2764. writeStorage("referencesVisible", value);
  2765. settings.renderReferences = value;
  2766. redrawIfInitDone();
  2767. }
  2768. function valuesVisible(value) {
  2769. writeStorage("valuesVisible", value);
  2770. settings.renderValues = value;
  2771. redrawIfInitDone();
  2772. }
  2773. function tracksVisible(value) {
  2774. writeStorage("tracksVisible", value);
  2775. settings.renderTracks = value;
  2776. redrawIfInitDone();
  2777. }
  2778. function zonesVisible(value) {
  2779. writeStorage("zonesVisible", value);
  2780. settings.renderZones = value;
  2781. redrawIfInitDone();
  2782. }
  2783. function dnpOutline(value) {
  2784. writeStorage("dnpOutline", value);
  2785. settings.renderDnpOutline = value;
  2786. redrawIfInitDone();
  2787. }
  2788. function setDarkMode(value) {
  2789. if (value) {
  2790. topmostdiv.classList.add("dark");
  2791. } else {
  2792. topmostdiv.classList.remove("dark");
  2793. }
  2794. writeStorage("darkmode", value);
  2795. settings.darkMode = value;
  2796. redrawIfInitDone();
  2797. if (initDone) {
  2798. populateBomTable();
  2799. }
  2800. }
  2801. function setShowBOMColumn(field, value) {
  2802. if (field === "references") {
  2803. var rl = document.getElementById("reflookup");
  2804. rl.disabled = !value;
  2805. if (!value) {
  2806. rl.value = "";
  2807. updateRefLookup("");
  2808. }
  2809. }
  2810. var n = settings.hiddenColumns.indexOf(field);
  2811. if (value) {
  2812. if (n != -1) {
  2813. settings.hiddenColumns.splice(n, 1);
  2814. }
  2815. } else {
  2816. if (n == -1) {
  2817. settings.hiddenColumns.push(field);
  2818. }
  2819. }
  2820. writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
  2821. if (initDone) {
  2822. populateBomTable();
  2823. }
  2824. redrawIfInitDone();
  2825. }
  2826. function setFullscreen(value) {
  2827. if (value) {
  2828. document.documentElement.requestFullscreen();
  2829. } else {
  2830. document.exitFullscreen();
  2831. }
  2832. }
  2833. function fabricationVisible(value) {
  2834. writeStorage("fabricationVisible", value);
  2835. settings.renderFabrication = value;
  2836. redrawIfInitDone();
  2837. }
  2838. function silkscreenVisible(value) {
  2839. writeStorage("silkscreenVisible", value);
  2840. settings.renderSilkscreen = value;
  2841. redrawIfInitDone();
  2842. }
  2843. function setHighlightPin1(value) {
  2844. writeStorage("highlightpin1", value);
  2845. settings.highlightpin1 = value;
  2846. redrawIfInitDone();
  2847. }
  2848. function setHighlightRowOnClick(value) {
  2849. settings.highlightRowOnClick = value;
  2850. writeStorage("highlightRowOnClick", value);
  2851. if (initDone) {
  2852. populateBomTable();
  2853. }
  2854. }
  2855. function getStoredCheckboxRefs(checkbox) {
  2856. function convert(ref) {
  2857. var intref = parseInt(ref);
  2858. if (isNaN(intref)) {
  2859. for (var i = 0; i < pcbdata.footprints.length; i++) {
  2860. if (pcbdata.footprints[i].ref == ref) {
  2861. return i;
  2862. }
  2863. }
  2864. return -1;
  2865. } else {
  2866. return intref;
  2867. }
  2868. }
  2869. if (!(checkbox in settings.checkboxStoredRefs)) {
  2870. var val = readStorage("checkbox_" + checkbox);
  2871. settings.checkboxStoredRefs[checkbox] = val ? val : "";
  2872. }
  2873. if (!settings.checkboxStoredRefs[checkbox]) {
  2874. return new Set();
  2875. } else {
  2876. return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
  2877. }
  2878. }
  2879. function getCheckboxState(checkbox, references) {
  2880. var storedRefsSet = getStoredCheckboxRefs(checkbox);
  2881. var currentRefsSet = new Set(references.map(r => r[1]));
  2882. // Get difference of current - stored
  2883. var difference = new Set(currentRefsSet);
  2884. for (ref of storedRefsSet) {
  2885. difference.delete(ref);
  2886. }
  2887. if (difference.size == 0) {
  2888. // All the current refs are stored
  2889. return "checked";
  2890. } else if (difference.size == currentRefsSet.size) {
  2891. // None of the current refs are stored
  2892. return "unchecked";
  2893. } else {
  2894. // Some of the refs are stored
  2895. return "indeterminate";
  2896. }
  2897. }
  2898. function setBomCheckboxState(checkbox, element, references) {
  2899. var state = getCheckboxState(checkbox, references);
  2900. element.checked = (state == "checked");
  2901. element.indeterminate = (state == "indeterminate");
  2902. }
  2903. function createCheckboxHandlers(input, checkbox, references, row) {
  2904. var clickHandler = () => {
  2905. refsSet = getStoredCheckboxRefs(checkbox);
  2906. var markWhenChecked = settings.markWhenChecked == checkbox;
  2907. eventArgs = {
  2908. checkbox: checkbox,
  2909. refs: references,
  2910. }
  2911. if (input.checked) {
  2912. // checkbox ticked
  2913. for (var ref of references) {
  2914. refsSet.add(ref[1]);
  2915. }
  2916. if (markWhenChecked) {
  2917. row.classList.add("checked");
  2918. for (var ref of references) {
  2919. markedFootprints.add(ref[1]);
  2920. }
  2921. drawHighlights();
  2922. }
  2923. eventArgs.state = 'checked';
  2924. } else {
  2925. // checkbox unticked
  2926. for (var ref of references) {
  2927. refsSet.delete(ref[1]);
  2928. }
  2929. if (markWhenChecked) {
  2930. row.classList.remove("checked");
  2931. for (var ref of references) {
  2932. markedFootprints.delete(ref[1]);
  2933. }
  2934. drawHighlights();
  2935. }
  2936. eventArgs.state = 'unchecked';
  2937. }
  2938. settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
  2939. writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
  2940. updateCheckboxStats(checkbox);
  2941. EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
  2942. }
  2943. return [
  2944. (e) => {
  2945. clickHandler();
  2946. },
  2947. (e) => {
  2948. e.preventDefault();
  2949. if (row.onmousemove) row.onmousemove();
  2950. },
  2951. (e) => {
  2952. e.preventDefault();
  2953. input.checked = !input.checked;
  2954. input.indeterminate = false;
  2955. clickHandler();
  2956. }
  2957. ];
  2958. }
  2959. function clearHighlightedFootprints() {
  2960. if (currentHighlightedRowId) {
  2961. document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
  2962. currentHighlightedRowId = null;
  2963. highlightedFootprints = [];
  2964. highlightedNet = null;
  2965. }
  2966. }
  2967. function createRowHighlightHandler(rowid, refs, net) {
  2968. return function () {
  2969. if (currentHighlightedRowId) {
  2970. if (currentHighlightedRowId == rowid) {
  2971. return;
  2972. }
  2973. document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
  2974. }
  2975. document.getElementById(rowid).classList.add("highlighted");
  2976. currentHighlightedRowId = rowid;
  2977. highlightedFootprints = refs ? refs.map(r => r[1]) : [];
  2978. highlightedNet = net;
  2979. drawHighlights();
  2980. EventHandler.emitEvent(
  2981. IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
  2982. rowid: rowid,
  2983. refs: refs,
  2984. net: net
  2985. });
  2986. }
  2987. }
  2988. function updateNetColors() {
  2989. writeStorage("netColors", JSON.stringify(settings.netColors));
  2990. redrawIfInitDone();
  2991. }
  2992. function netColorChangeHandler(net) {
  2993. return (event) => {
  2994. settings.netColors[net] = event.target.value;
  2995. updateNetColors();
  2996. }
  2997. }
  2998. function netColorRightClick(net) {
  2999. return (event) => {
  3000. if (event.button == 2) {
  3001. event.preventDefault();
  3002. event.stopPropagation();
  3003. var style = getComputedStyle(topmostdiv);
  3004. var defaultNetColor = style.getPropertyValue('--track-color').trim();
  3005. event.target.value = defaultNetColor;
  3006. delete settings.netColors[net];
  3007. updateNetColors();
  3008. }
  3009. }
  3010. }
  3011. function entryMatches(entry) {
  3012. if (settings.bommode == "netlist") {
  3013. // entry is just a net name
  3014. return entry.toLowerCase().indexOf(filter) >= 0;
  3015. }
  3016. // check refs
  3017. if (!settings.hiddenColumns.includes("References")) {
  3018. for (var ref of entry) {
  3019. if (ref[0].toLowerCase().indexOf(filter) >= 0) {
  3020. return true;
  3021. }
  3022. }
  3023. }
  3024. // check fields
  3025. for (var i in config.fields) {
  3026. var f = config.fields[i];
  3027. if (!settings.hiddenColumns.includes(f)) {
  3028. for (var ref of entry) {
  3029. if (String(pcbdata.bom.fields[ref[1]][i]).toLowerCase().indexOf(filter) >= 0) {
  3030. return true;
  3031. }
  3032. }
  3033. }
  3034. }
  3035. return false;
  3036. }
  3037. function findRefInEntry(entry) {
  3038. return entry.filter(r => r[0].toLowerCase() == reflookup);
  3039. }
  3040. function highlightFilter(s) {
  3041. if (!filter) {
  3042. return s;
  3043. }
  3044. var parts = s.toLowerCase().split(filter);
  3045. if (parts.length == 1) {
  3046. return s;
  3047. }
  3048. var r = "";
  3049. var pos = 0;
  3050. for (var i in parts) {
  3051. if (i > 0) {
  3052. r += '<mark class="highlight">' +
  3053. s.substring(pos, pos + filter.length) +
  3054. '</mark>';
  3055. pos += filter.length;
  3056. }
  3057. r += s.substring(pos, pos + parts[i].length);
  3058. pos += parts[i].length;
  3059. }
  3060. return r;
  3061. }
  3062. function getBomListByLayer(layer) {
  3063. switch (layer) {
  3064. case 'F': return pcbdata.bom.F.slice();
  3065. case 'B': return pcbdata.bom.B.slice();
  3066. case 'FB': return pcbdata.bom.both.slice();
  3067. }
  3068. return [];
  3069. }
  3070. function getSelectedBomList() {
  3071. if (settings.bommode == "netlist") {
  3072. return pcbdata.nets.slice();
  3073. }
  3074. var out = getBomListByLayer(settings.canvaslayout);
  3075. if (settings.bommode == "ungrouped") {
  3076. // expand bom table
  3077. var expandedTable = [];
  3078. for (var bomentry of out) {
  3079. for (var ref of bomentry) {
  3080. expandedTable.push([ref]);
  3081. }
  3082. }
  3083. return expandedTable;
  3084. }
  3085. return out;
  3086. }
  3087. function checkboxSetUnsetAllHandler(checkboxname) {
  3088. return function () {
  3089. var checkboxnum = 0;
  3090. while (checkboxnum < settings.checkboxes.length &&
  3091. settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
  3092. checkboxnum++;
  3093. }
  3094. if (checkboxnum >= settings.checkboxes.length) {
  3095. return;
  3096. }
  3097. var allset = true;
  3098. var checkbox;
  3099. var row;
  3100. for (row of bombody.childNodes) {
  3101. checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
  3102. if (!checkbox.checked || checkbox.indeterminate) {
  3103. allset = false;
  3104. break;
  3105. }
  3106. }
  3107. for (row of bombody.childNodes) {
  3108. checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
  3109. checkbox.checked = !allset;
  3110. checkbox.indeterminate = false;
  3111. checkbox.onchange();
  3112. }
  3113. }
  3114. }
  3115. function createColumnHeader(name, cls, comparator, is_checkbox = false) {
  3116. var th = document.createElement("TH");
  3117. th.innerHTML = name;
  3118. th.classList.add(cls);
  3119. if (is_checkbox)
  3120. th.setAttribute("col_name", "bom-checkbox");
  3121. else
  3122. th.setAttribute("col_name", name);
  3123. var span = document.createElement("SPAN");
  3124. span.classList.add("sortmark");
  3125. span.classList.add("none");
  3126. th.appendChild(span);
  3127. var spacer = document.createElement("div");
  3128. spacer.className = "column-spacer";
  3129. th.appendChild(spacer);
  3130. spacer.onclick = function () {
  3131. if (currentSortColumn && th !== currentSortColumn) {
  3132. // Currently sorted by another column
  3133. currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
  3134. currentSortColumn.childNodes[1].classList.add("none");
  3135. currentSortColumn = null;
  3136. currentSortOrder = null;
  3137. }
  3138. if (currentSortColumn && th === currentSortColumn) {
  3139. // Already sorted by this column
  3140. if (currentSortOrder == "asc") {
  3141. // Sort by this column, descending order
  3142. bomSortFunction = function (a, b) {
  3143. return -comparator(a, b);
  3144. }
  3145. currentSortColumn.childNodes[1].classList.remove("asc");
  3146. currentSortColumn.childNodes[1].classList.add("desc");
  3147. currentSortOrder = "desc";
  3148. } else {
  3149. // Unsort
  3150. bomSortFunction = null;
  3151. currentSortColumn.childNodes[1].classList.remove("desc");
  3152. currentSortColumn.childNodes[1].classList.add("none");
  3153. currentSortColumn = null;
  3154. currentSortOrder = null;
  3155. }
  3156. } else {
  3157. // Sort by this column, ascending order
  3158. bomSortFunction = comparator;
  3159. currentSortColumn = th;
  3160. currentSortColumn.childNodes[1].classList.remove("none");
  3161. currentSortColumn.childNodes[1].classList.add("asc");
  3162. currentSortOrder = "asc";
  3163. }
  3164. populateBomBody();
  3165. }
  3166. if (is_checkbox) {
  3167. spacer.onclick = fancyDblClickHandler(
  3168. spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
  3169. }
  3170. return th;
  3171. }
  3172. function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
  3173. while (bomhead.firstChild) {
  3174. bomhead.removeChild(bomhead.firstChild);
  3175. }
  3176. var tr = document.createElement("TR");
  3177. var th = document.createElement("TH");
  3178. th.classList.add("numCol");
  3179. var vismenu = document.createElement("div");
  3180. vismenu.id = "vismenu";
  3181. vismenu.classList.add("menu");
  3182. var visbutton = document.createElement("div");
  3183. visbutton.classList.add("visbtn");
  3184. visbutton.classList.add("hideonprint");
  3185. var viscontent = document.createElement("div");
  3186. viscontent.classList.add("menu-content");
  3187. viscontent.id = "vismenu-content";
  3188. settings.columnOrder.forEach(column => {
  3189. if (typeof column !== "string")
  3190. return;
  3191. // Skip empty columns
  3192. if (column === "checkboxes" && settings.checkboxes.length == 0)
  3193. return;
  3194. else if (column === "Quantity" && settings.bommode == "ungrouped")
  3195. return;
  3196. var label = document.createElement("label");
  3197. label.classList.add("menu-label");
  3198. var input = document.createElement("input");
  3199. input.classList.add("visibility_checkbox");
  3200. input.type = "checkbox";
  3201. input.onchange = function (e) {
  3202. setShowBOMColumn(column, e.target.checked)
  3203. };
  3204. input.checked = !(settings.hiddenColumns.includes(column));
  3205. label.appendChild(input);
  3206. if (column.length > 0)
  3207. label.append(column[0].toUpperCase() + column.slice(1));
  3208. viscontent.appendChild(label);
  3209. });
  3210. viscontent.childNodes[0].classList.add("menu-label-top");
  3211. vismenu.appendChild(visbutton);
  3212. if (settings.bommode != "netlist") {
  3213. vismenu.appendChild(viscontent);
  3214. th.appendChild(vismenu);
  3215. }
  3216. tr.appendChild(th);
  3217. var checkboxCompareClosure = function (checkbox) {
  3218. return (a, b) => {
  3219. var stateA = getCheckboxState(checkbox, a);
  3220. var stateB = getCheckboxState(checkbox, b);
  3221. if (stateA > stateB) return -1;
  3222. if (stateA < stateB) return 1;
  3223. return 0;
  3224. }
  3225. }
  3226. var stringFieldCompareClosure = function (fieldIndex) {
  3227. return (a, b) => {
  3228. var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
  3229. var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
  3230. if (fa != fb) return fa > fb ? 1 : -1;
  3231. else return 0;
  3232. }
  3233. }
  3234. var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
  3235. var compareRefs = (a, b) => {
  3236. var ra = referenceRegex.exec(a);
  3237. var rb = referenceRegex.exec(b);
  3238. if (ra === null || rb === null) {
  3239. if (a != b) return a > b ? 1 : -1;
  3240. return 0;
  3241. } else {
  3242. if (ra.groups.prefix != rb.groups.prefix) {
  3243. return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
  3244. }
  3245. if (ra.groups.number != rb.groups.number) {
  3246. return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
  3247. }
  3248. return 0;
  3249. }
  3250. }
  3251. if (settings.bommode == "netlist") {
  3252. tr.appendChild(createColumnHeader("Net name", "bom-netname", (a, b) => {
  3253. if (a > b) return -1;
  3254. if (a < b) return 1;
  3255. return 0;
  3256. }));
  3257. tr.appendChild(createColumnHeader("Color", "bom-color", (a, b) => {
  3258. return 0;
  3259. }));
  3260. } else {
  3261. // Filter hidden columns
  3262. var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
  3263. var valueIndex = config.fields.indexOf("Value");
  3264. var footprintIndex = config.fields.indexOf("Footprint");
  3265. columns.forEach((column) => {
  3266. if (column === placeHolderColumn) {
  3267. var n = 1;
  3268. if (column === "checkboxes")
  3269. n = settings.checkboxes.length;
  3270. for (i = 0; i < n; i++) {
  3271. td = placeHolderElements.shift();
  3272. tr.appendChild(td);
  3273. }
  3274. return;
  3275. } else if (column === "checkboxes") {
  3276. for (var checkbox of settings.checkboxes) {
  3277. th = createColumnHeader(
  3278. checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
  3279. tr.appendChild(th);
  3280. }
  3281. } else if (column === "References") {
  3282. tr.appendChild(createColumnHeader("References", "references", (a, b) => {
  3283. var i = 0;
  3284. while (i < a.length && i < b.length) {
  3285. if (a[i][0] != b[i][0]) return compareRefs(a[i][0], b[i][0]);
  3286. i++;
  3287. }
  3288. return a.length - b.length;
  3289. }));
  3290. } else if (column === "Value") {
  3291. tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
  3292. var ra = a[0][1], rb = b[0][1];
  3293. return valueCompare(
  3294. pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
  3295. pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
  3296. }));
  3297. return;
  3298. } else if (column === "Footprint") {
  3299. tr.appendChild(createColumnHeader(
  3300. "Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
  3301. } else if (column === "Quantity" && settings.bommode == "grouped") {
  3302. tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
  3303. return a.length - b.length;
  3304. }));
  3305. } else {
  3306. // Other fields
  3307. var i = config.fields.indexOf(column);
  3308. if (i < 0)
  3309. return;
  3310. tr.appendChild(createColumnHeader(
  3311. column, `field${i + 1}`, stringFieldCompareClosure(i)));
  3312. }
  3313. });
  3314. }
  3315. bomhead.appendChild(tr);
  3316. }
  3317. function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
  3318. const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
  3319. while (bom.firstChild) {
  3320. bom.removeChild(bom.firstChild);
  3321. }
  3322. highlightHandlers = [];
  3323. footprintIndexToHandler = {};
  3324. netsToHandler = {};
  3325. currentHighlightedRowId = null;
  3326. var first = true;
  3327. var style = getComputedStyle(topmostdiv);
  3328. var defaultNetColor = style.getPropertyValue('--track-color').trim();
  3329. bomtable = getSelectedBomList();
  3330. if (bomSortFunction) {
  3331. bomtable = bomtable.sort(bomSortFunction);
  3332. }
  3333. for (var i in bomtable) {
  3334. var bomentry = bomtable[i];
  3335. if (filter && !entryMatches(bomentry)) {
  3336. continue;
  3337. }
  3338. var references = null;
  3339. var netname = null;
  3340. var tr = document.createElement("TR");
  3341. var td = document.createElement("TD");
  3342. var rownum = +i + 1;
  3343. tr.id = "bomrow" + rownum;
  3344. td.textContent = rownum;
  3345. tr.appendChild(td);
  3346. if (settings.bommode == "netlist") {
  3347. netname = bomentry;
  3348. td = document.createElement("TD");
  3349. td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
  3350. tr.appendChild(td);
  3351. var color = settings.netColors[netname] || defaultNetColor;
  3352. td = document.createElement("TD");
  3353. var colorBox = document.createElement("INPUT");
  3354. colorBox.type = "color";
  3355. colorBox.value = color;
  3356. colorBox.onchange = netColorChangeHandler(netname);
  3357. colorBox.onmouseup = netColorRightClick(netname);
  3358. colorBox.oncontextmenu = (e) => e.preventDefault();
  3359. td.appendChild(colorBox);
  3360. td.classList.add("color-column");
  3361. tr.appendChild(td);
  3362. } else {
  3363. if (reflookup) {
  3364. references = findRefInEntry(bomentry);
  3365. if (references.length == 0) {
  3366. continue;
  3367. }
  3368. } else {
  3369. references = bomentry;
  3370. }
  3371. // Filter hidden columns
  3372. var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
  3373. columns.forEach((column) => {
  3374. if (column === placeholderColumn) {
  3375. var n = 1;
  3376. if (column === "checkboxes")
  3377. n = settings.checkboxes.length;
  3378. for (i = 0; i < n; i++) {
  3379. td = placeHolderElements.shift();
  3380. tr.appendChild(td);
  3381. }
  3382. return;
  3383. } else if (column === "checkboxes") {
  3384. for (var checkbox of settings.checkboxes) {
  3385. if (checkbox) {
  3386. td = document.createElement("TD");
  3387. var input = document.createElement("input");
  3388. input.type = "checkbox";
  3389. [input.onchange, td.ontouchstart, td.ontouchend] = createCheckboxHandlers(input, checkbox, references, tr);
  3390. setBomCheckboxState(checkbox, input, references);
  3391. if (input.checked && settings.markWhenChecked == checkbox) {
  3392. tr.classList.add("checked");
  3393. }
  3394. td.appendChild(input);
  3395. tr.appendChild(td);
  3396. }
  3397. }
  3398. } else if (column === "References") {
  3399. td = document.createElement("TD");
  3400. td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
  3401. tr.appendChild(td);
  3402. } else if (column === "Quantity" && settings.bommode == "grouped") {
  3403. // Quantity
  3404. td = document.createElement("TD");
  3405. td.textContent = references.length;
  3406. tr.appendChild(td);
  3407. } else {
  3408. // All the other fields
  3409. var field_index = config.fields.indexOf(column)
  3410. if (field_index < 0)
  3411. return;
  3412. var valueSet = new Set();
  3413. references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
  3414. td = document.createElement("TD");
  3415. var output = new Array();
  3416. for (let item of valueSet) {
  3417. const visible = highlightFilter(String(item));
  3418. if (typeof item === 'string' && item.match(urlRegex)) {
  3419. output.push(`<a href="${item}" target="_blank">${visible}</a>`);
  3420. } else {
  3421. output.push(visible);
  3422. }
  3423. }
  3424. td.innerHTML = output.join(", ");
  3425. tr.appendChild(td);
  3426. }
  3427. });
  3428. }
  3429. bom.appendChild(tr);
  3430. var handler = createRowHighlightHandler(tr.id, references, netname);
  3431. if (settings.highlightRowOnClick) {
  3432. tr.onmousedown = handler;
  3433. } else {
  3434. tr.onmousemove = handler;
  3435. }
  3436. highlightHandlers.push({
  3437. id: tr.id,
  3438. handler: handler,
  3439. });
  3440. if (references !== null) {
  3441. for (var refIndex of references.map(r => r[1])) {
  3442. footprintIndexToHandler[refIndex] = handler;
  3443. }
  3444. }
  3445. if (netname !== null) {
  3446. netsToHandler[netname] = handler;
  3447. }
  3448. if ((filter || reflookup) && first) {
  3449. handler();
  3450. first = false;
  3451. }
  3452. }
  3453. EventHandler.emitEvent(
  3454. IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
  3455. filter: filter,
  3456. reflookup: reflookup,
  3457. checkboxes: settings.checkboxes,
  3458. bommode: settings.bommode,
  3459. });
  3460. }
  3461. function highlightPreviousRow() {
  3462. if (!currentHighlightedRowId) {
  3463. highlightHandlers[highlightHandlers.length - 1].handler();
  3464. } else {
  3465. if (highlightHandlers.length > 1 &&
  3466. highlightHandlers[0].id == currentHighlightedRowId) {
  3467. highlightHandlers[highlightHandlers.length - 1].handler();
  3468. } else {
  3469. for (var i = 0; i < highlightHandlers.length - 1; i++) {
  3470. if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
  3471. highlightHandlers[i].handler();
  3472. break;
  3473. }
  3474. }
  3475. }
  3476. }
  3477. smoothScrollToRow(currentHighlightedRowId);
  3478. }
  3479. function highlightNextRow() {
  3480. if (!currentHighlightedRowId) {
  3481. highlightHandlers[0].handler();
  3482. } else {
  3483. if (highlightHandlers.length > 1 &&
  3484. highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
  3485. highlightHandlers[0].handler();
  3486. } else {
  3487. for (var i = 1; i < highlightHandlers.length; i++) {
  3488. if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
  3489. highlightHandlers[i].handler();
  3490. break;
  3491. }
  3492. }
  3493. }
  3494. }
  3495. smoothScrollToRow(currentHighlightedRowId);
  3496. }
  3497. function populateBomTable() {
  3498. populateBomHeader();
  3499. populateBomBody();
  3500. setBomHandlers();
  3501. resizableGrid(bomhead);
  3502. }
  3503. function footprintsClicked(footprintIndexes) {
  3504. var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
  3505. for (var i = 1; i <= footprintIndexes.length; i++) {
  3506. var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
  3507. if (refIndex in footprintIndexToHandler) {
  3508. lastClicked = refIndex;
  3509. footprintIndexToHandler[refIndex]();
  3510. smoothScrollToRow(currentHighlightedRowId);
  3511. break;
  3512. }
  3513. }
  3514. }
  3515. function netClicked(net) {
  3516. if (net in netsToHandler) {
  3517. netsToHandler[net]();
  3518. smoothScrollToRow(currentHighlightedRowId);
  3519. } else {
  3520. clearHighlightedFootprints();
  3521. highlightedNet = net;
  3522. drawHighlights();
  3523. }
  3524. }
  3525. function updateFilter(input) {
  3526. filter = input.toLowerCase();
  3527. populateBomTable();
  3528. }
  3529. function updateRefLookup(input) {
  3530. reflookup = input.toLowerCase();
  3531. populateBomTable();
  3532. }
  3533. function changeCanvasLayout(layout) {
  3534. document.getElementById("fl-btn").classList.remove("depressed");
  3535. document.getElementById("fb-btn").classList.remove("depressed");
  3536. document.getElementById("bl-btn").classList.remove("depressed");
  3537. switch (layout) {
  3538. case 'F':
  3539. document.getElementById("fl-btn").classList.add("depressed");
  3540. if (settings.bomlayout != "bom-only") {
  3541. canvassplit.collapse(1);
  3542. }
  3543. break;
  3544. case 'B':
  3545. document.getElementById("bl-btn").classList.add("depressed");
  3546. if (settings.bomlayout != "bom-only") {
  3547. canvassplit.collapse(0);
  3548. }
  3549. break;
  3550. default:
  3551. document.getElementById("fb-btn").classList.add("depressed");
  3552. if (settings.bomlayout != "bom-only") {
  3553. canvassplit.setSizes([50, 50]);
  3554. }
  3555. }
  3556. settings.canvaslayout = layout;
  3557. writeStorage("canvaslayout", layout);
  3558. resizeAll();
  3559. changeBomMode(settings.bommode);
  3560. }
  3561. function populateMetadata() {
  3562. document.getElementById("title").innerHTML = pcbdata.metadata.title;
  3563. document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
  3564. document.getElementById("company").innerHTML = pcbdata.metadata.company;
  3565. document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
  3566. if (pcbdata.metadata.title != "") {
  3567. document.title = pcbdata.metadata.title + " BOM";
  3568. }
  3569. // Calculate board stats
  3570. var fp_f = 0,
  3571. fp_b = 0,
  3572. pads_f = 0,
  3573. pads_b = 0,
  3574. pads_th = 0;
  3575. for (var i = 0; i < pcbdata.footprints.length; i++) {
  3576. if (pcbdata.bom.skipped.includes(i)) continue;
  3577. var mod = pcbdata.footprints[i];
  3578. if (mod.layer == "F") {
  3579. fp_f++;
  3580. } else {
  3581. fp_b++;
  3582. }
  3583. for (var pad of mod.pads) {
  3584. if (pad.type == "th") {
  3585. pads_th++;
  3586. } else {
  3587. if (pad.layers.includes("F")) {
  3588. pads_f++;
  3589. }
  3590. if (pad.layers.includes("B")) {
  3591. pads_b++;
  3592. }
  3593. }
  3594. }
  3595. }
  3596. document.getElementById("stats-components-front").innerHTML = fp_f;
  3597. document.getElementById("stats-components-back").innerHTML = fp_b;
  3598. document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
  3599. document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
  3600. document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
  3601. document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
  3602. document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
  3603. document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
  3604. document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
  3605. document.getElementById("stats-th-pads").innerHTML = pads_th;
  3606. // Update version string
  3607. document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&nbsp;" +
  3608. /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
  3609. }
  3610. function changeBomLayout(layout) {
  3611. document.getElementById("bom-btn").classList.remove("depressed");
  3612. document.getElementById("lr-btn").classList.remove("depressed");
  3613. document.getElementById("tb-btn").classList.remove("depressed");
  3614. switch (layout) {
  3615. case 'bom-only':
  3616. document.getElementById("bom-btn").classList.add("depressed");
  3617. if (bomsplit) {
  3618. bomsplit.destroy();
  3619. bomsplit = null;
  3620. canvassplit.destroy();
  3621. canvassplit = null;
  3622. }
  3623. document.getElementById("frontcanvas").style.display = "none";
  3624. document.getElementById("backcanvas").style.display = "none";
  3625. document.getElementById("topmostdiv").style.height = "";
  3626. document.getElementById("topmostdiv").style.display = "block";
  3627. break;
  3628. case 'top-bottom':
  3629. document.getElementById("tb-btn").classList.add("depressed");
  3630. document.getElementById("frontcanvas").style.display = "";
  3631. document.getElementById("backcanvas").style.display = "";
  3632. document.getElementById("topmostdiv").style.height = "100%";
  3633. document.getElementById("topmostdiv").style.display = "flex";
  3634. document.getElementById("bomdiv").classList.remove("split-horizontal");
  3635. document.getElementById("canvasdiv").classList.remove("split-horizontal");
  3636. document.getElementById("frontcanvas").classList.add("split-horizontal");
  3637. document.getElementById("backcanvas").classList.add("split-horizontal");
  3638. if (bomsplit) {
  3639. bomsplit.destroy();
  3640. bomsplit = null;
  3641. canvassplit.destroy();
  3642. canvassplit = null;
  3643. }
  3644. bomsplit = Split(['#bomdiv', '#canvasdiv'], {
  3645. sizes: [50, 50],
  3646. onDragEnd: resizeAll,
  3647. direction: "vertical",
  3648. gutterSize: 5
  3649. });
  3650. canvassplit = Split(['#frontcanvas', '#backcanvas'], {
  3651. sizes: [50, 50],
  3652. gutterSize: 5,
  3653. onDragEnd: resizeAll
  3654. });
  3655. break;
  3656. case 'left-right':
  3657. document.getElementById("lr-btn").classList.add("depressed");
  3658. document.getElementById("frontcanvas").style.display = "";
  3659. document.getElementById("backcanvas").style.display = "";
  3660. document.getElementById("topmostdiv").style.height = "100%";
  3661. document.getElementById("topmostdiv").style.display = "flex";
  3662. document.getElementById("bomdiv").classList.add("split-horizontal");
  3663. document.getElementById("canvasdiv").classList.add("split-horizontal");
  3664. document.getElementById("frontcanvas").classList.remove("split-horizontal");
  3665. document.getElementById("backcanvas").classList.remove("split-horizontal");
  3666. if (bomsplit) {
  3667. bomsplit.destroy();
  3668. bomsplit = null;
  3669. canvassplit.destroy();
  3670. canvassplit = null;
  3671. }
  3672. bomsplit = Split(['#bomdiv', '#canvasdiv'], {
  3673. sizes: [50, 50],
  3674. onDragEnd: resizeAll,
  3675. gutterSize: 5
  3676. });
  3677. canvassplit = Split(['#frontcanvas', '#backcanvas'], {
  3678. sizes: [50, 50],
  3679. gutterSize: 5,
  3680. direction: "vertical",
  3681. onDragEnd: resizeAll
  3682. });
  3683. }
  3684. settings.bomlayout = layout;
  3685. writeStorage("bomlayout", layout);
  3686. changeCanvasLayout(settings.canvaslayout);
  3687. }
  3688. function changeBomMode(mode) {
  3689. document.getElementById("bom-grouped-btn").classList.remove("depressed");
  3690. document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
  3691. document.getElementById("bom-netlist-btn").classList.remove("depressed");
  3692. var chkbxs = document.getElementsByClassName("visibility_checkbox");
  3693. switch (mode) {
  3694. case 'grouped':
  3695. document.getElementById("bom-grouped-btn").classList.add("depressed");
  3696. for (var i = 0; i < chkbxs.length; i++) {
  3697. chkbxs[i].disabled = false;
  3698. }
  3699. break;
  3700. case 'ungrouped':
  3701. document.getElementById("bom-ungrouped-btn").classList.add("depressed");
  3702. for (var i = 0; i < chkbxs.length; i++) {
  3703. chkbxs[i].disabled = false;
  3704. }
  3705. break;
  3706. case 'netlist':
  3707. document.getElementById("bom-netlist-btn").classList.add("depressed");
  3708. for (var i = 0; i < chkbxs.length; i++) {
  3709. chkbxs[i].disabled = true;
  3710. }
  3711. }
  3712. writeStorage("bommode", mode);
  3713. if (mode != settings.bommode) {
  3714. settings.bommode = mode;
  3715. bomSortFunction = null;
  3716. currentSortColumn = null;
  3717. currentSortOrder = null;
  3718. clearHighlightedFootprints();
  3719. }
  3720. populateBomTable();
  3721. }
  3722. function focusFilterField() {
  3723. focusInputField(document.getElementById("filter"));
  3724. }
  3725. function focusRefLookupField() {
  3726. focusInputField(document.getElementById("reflookup"));
  3727. }
  3728. function toggleBomCheckbox(bomrowid, checkboxnum) {
  3729. if (!bomrowid || checkboxnum > settings.checkboxes.length) {
  3730. return;
  3731. }
  3732. var bomrow = document.getElementById(bomrowid);
  3733. var childNum = checkboxnum + settings.columnOrder.indexOf("checkboxes");
  3734. var checkbox = bomrow.childNodes[childNum].childNodes[0];
  3735. checkbox.checked = !checkbox.checked;
  3736. checkbox.indeterminate = false;
  3737. checkbox.onchange();
  3738. }
  3739. function checkBomCheckbox(bomrowid, checkboxname) {
  3740. var checkboxnum = 0;
  3741. while (checkboxnum < settings.checkboxes.length &&
  3742. settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
  3743. checkboxnum++;
  3744. }
  3745. if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
  3746. return;
  3747. }
  3748. var bomrow = document.getElementById(bomrowid);
  3749. var childNum = checkboxnum + 1 + settings.columnOrder.indexOf("checkboxes");
  3750. var checkbox = bomrow.childNodes[childNum].childNodes[0];
  3751. checkbox.checked = true;
  3752. checkbox.indeterminate = false;
  3753. checkbox.onchange();
  3754. }
  3755. function setBomCheckboxes(value) {
  3756. writeStorage("bomCheckboxes", value);
  3757. settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
  3758. prepCheckboxes();
  3759. populateMarkWhenCheckedOptions();
  3760. setMarkWhenChecked(settings.markWhenChecked);
  3761. }
  3762. function setMarkWhenChecked(value) {
  3763. writeStorage("markWhenChecked", value);
  3764. settings.markWhenChecked = value;
  3765. markedFootprints.clear();
  3766. for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
  3767. markedFootprints.add(ref);
  3768. }
  3769. populateBomTable();
  3770. drawHighlights();
  3771. }
  3772. function prepCheckboxes() {
  3773. var table = document.getElementById("checkbox-stats");
  3774. while (table.childElementCount > 1) {
  3775. table.removeChild(table.lastChild);
  3776. }
  3777. if (settings.checkboxes.length) {
  3778. table.style.display = "";
  3779. } else {
  3780. table.style.display = "none";
  3781. }
  3782. for (var checkbox of settings.checkboxes) {
  3783. var tr = document.createElement("TR");
  3784. var td = document.createElement("TD");
  3785. td.innerHTML = checkbox;
  3786. tr.appendChild(td);
  3787. td = document.createElement("TD");
  3788. td.id = "checkbox-stats-" + checkbox;
  3789. var progressbar = document.createElement("div");
  3790. progressbar.classList.add("bar");
  3791. td.appendChild(progressbar);
  3792. var text = document.createElement("div");
  3793. text.classList.add("text");
  3794. td.appendChild(text);
  3795. tr.appendChild(td);
  3796. table.appendChild(tr);
  3797. updateCheckboxStats(checkbox);
  3798. }
  3799. }
  3800. function populateMarkWhenCheckedOptions() {
  3801. var container = document.getElementById("markWhenCheckedContainer");
  3802. if (settings.checkboxes.length == 0) {
  3803. container.parentElement.style.display = "none";
  3804. return;
  3805. }
  3806. container.innerHTML = '';
  3807. container.parentElement.style.display = "inline-block";
  3808. function createOption(name, displayName) {
  3809. var id = "markWhenChecked-" + name;
  3810. var div = document.createElement("div");
  3811. div.classList.add("radio-container");
  3812. var input = document.createElement("input");
  3813. input.type = "radio";
  3814. input.name = "markWhenChecked";
  3815. input.value = name;
  3816. input.id = id;
  3817. input.onchange = () => setMarkWhenChecked(name);
  3818. div.appendChild(input);
  3819. // Preserve the selected element when the checkboxes change
  3820. if (name == settings.markWhenChecked) {
  3821. input.checked = true;
  3822. }
  3823. var label = document.createElement("label");
  3824. label.innerHTML = displayName;
  3825. label.htmlFor = id;
  3826. div.appendChild(label);
  3827. container.appendChild(div);
  3828. }
  3829. createOption("", "None");
  3830. for (var checkbox of settings.checkboxes) {
  3831. createOption(checkbox, checkbox);
  3832. }
  3833. }
  3834. function updateCheckboxStats(checkbox) {
  3835. var checked = getStoredCheckboxRefs(checkbox).size;
  3836. var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
  3837. var percent = checked * 100.0 / total;
  3838. var td = document.getElementById("checkbox-stats-" + checkbox);
  3839. td.firstChild.style.width = percent + "%";
  3840. td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
  3841. }
  3842. function constrain(number, min, max) {
  3843. return Math.min(Math.max(parseInt(number), min), max);
  3844. }
  3845. document.onkeydown = function (e) {
  3846. switch (e.key) {
  3847. case "n":
  3848. if (document.activeElement.type == "text") {
  3849. return;
  3850. }
  3851. if (currentHighlightedRowId !== null) {
  3852. checkBomCheckbox(currentHighlightedRowId, "placed");
  3853. highlightNextRow();
  3854. e.preventDefault();
  3855. }
  3856. break;
  3857. case "ArrowUp":
  3858. highlightPreviousRow();
  3859. e.preventDefault();
  3860. break;
  3861. case "ArrowDown":
  3862. highlightNextRow();
  3863. e.preventDefault();
  3864. break;
  3865. case "ArrowLeft":
  3866. case "ArrowRight":
  3867. if (document.activeElement.type != "text") {
  3868. e.preventDefault();
  3869. let boardRotationElement = document.getElementById("boardRotation")
  3870. settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
  3871. if (e.key == "ArrowLeft") {
  3872. settings.boardRotation += 3; // 15 degrees
  3873. }
  3874. else {
  3875. settings.boardRotation -= 3;
  3876. }
  3877. settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
  3878. boardRotationElement.value = settings.boardRotation
  3879. setBoardRotation(settings.boardRotation);
  3880. }
  3881. break;
  3882. default:
  3883. break;
  3884. }
  3885. if (e.altKey) {
  3886. switch (e.key) {
  3887. case "f":
  3888. focusFilterField();
  3889. e.preventDefault();
  3890. break;
  3891. case "r":
  3892. focusRefLookupField();
  3893. e.preventDefault();
  3894. break;
  3895. case "z":
  3896. changeBomLayout("bom-only");
  3897. e.preventDefault();
  3898. break;
  3899. case "x":
  3900. changeBomLayout("left-right");
  3901. e.preventDefault();
  3902. break;
  3903. case "c":
  3904. changeBomLayout("top-bottom");
  3905. e.preventDefault();
  3906. break;
  3907. case "v":
  3908. changeCanvasLayout("F");
  3909. e.preventDefault();
  3910. break;
  3911. case "b":
  3912. changeCanvasLayout("FB");
  3913. e.preventDefault();
  3914. break;
  3915. case "n":
  3916. changeCanvasLayout("B");
  3917. e.preventDefault();
  3918. break;
  3919. default:
  3920. break;
  3921. }
  3922. if (e.key >= '1' && e.key <= '9') {
  3923. toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
  3924. e.preventDefault();
  3925. }
  3926. }
  3927. }
  3928. function hideNetlistButton() {
  3929. document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
  3930. document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
  3931. document.getElementById("bom-netlist-btn").style.display = "none";
  3932. }
  3933. function topToggle() {
  3934. var top = document.getElementById("top");
  3935. var toptoggle = document.getElementById("toptoggle");
  3936. if (top.style.display === "none") {
  3937. top.style.display = "flex";
  3938. toptoggle.classList.remove("flipped");
  3939. } else {
  3940. top.style.display = "none";
  3941. toptoggle.classList.add("flipped");
  3942. }
  3943. }
  3944. window.onload = function (e) {
  3945. initRender();
  3946. initStorage();
  3947. initDefaults();
  3948. initUtils();
  3949. cleanGutters();
  3950. populateMetadata();
  3951. dbgdiv = document.getElementById("dbg");
  3952. bom = document.getElementById("bombody");
  3953. bomhead = document.getElementById("bomhead");
  3954. filter = "";
  3955. reflookup = "";
  3956. if (!("nets" in pcbdata)) {
  3957. hideNetlistButton();
  3958. }
  3959. initDone = true;
  3960. setBomCheckboxes(document.getElementById("bomCheckboxes").value);
  3961. // Triggers render
  3962. changeBomLayout(settings.bomlayout);
  3963. // Users may leave fullscreen without touching the checkbox. Uncheck.
  3964. document.addEventListener('fullscreenchange', () => {
  3965. if (!document.fullscreenElement)
  3966. document.getElementById('fullscreenCheckbox').checked = false;
  3967. });
  3968. }
  3969. window.onresize = resizeAll;
  3970. window.matchMedia("print").addListener(resizeAll);
  3971. ///////////////////////////////////////////////
  3972. ///////////////////////////////////////////////
  3973. // EventHandler.registerCallback(IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, () => {
  3974. // for(var tr of bom.childNodes) {
  3975. // tr.onclick = tr.onmousemove;
  3976. // tr.onmousemove = null;
  3977. // };
  3978. // });
  3979. ///////////////////////////////////////////////
  3980. </script>
  3981. </head>
  3982. <body>
  3983. <div id="topmostdiv" class="topmostdiv">
  3984. <div id="top">
  3985. <div id="fileinfodiv">
  3986. <table class="fileinfo">
  3987. <tbody>
  3988. <tr>
  3989. <td id="title" class="title" style="width: 70%">
  3990. Title
  3991. </td>
  3992. <td id="revision" class="title" style="width: 30%">
  3993. Revision
  3994. </td>
  3995. </tr>
  3996. <tr>
  3997. <td id="company">
  3998. Company
  3999. </td>
  4000. <td id="filedate">
  4001. Date
  4002. </td>
  4003. </tr>
  4004. </tbody>
  4005. </table>
  4006. </div>
  4007. <div id="bomcontrols">
  4008. <div class="hideonprint menu">
  4009. <button class="menubtn"></button>
  4010. <div class="menu-content">
  4011. <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
  4012. <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
  4013. Dark mode
  4014. </label><!-- This comment eats space! All of it!
  4015. --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
  4016. <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
  4017. Full Screen
  4018. </label>
  4019. <label class="menu-label" style="width: calc(50% - 18px)">
  4020. <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
  4021. Fab layer
  4022. </label><!-- This comment eats space! All of it!
  4023. --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
  4024. <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
  4025. Silkscreen
  4026. </label>
  4027. <label class="menu-label" style="width: calc(50% - 18px)">
  4028. <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
  4029. References
  4030. </label><!-- This comment eats space! All of it!
  4031. --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
  4032. <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
  4033. Values
  4034. </label>
  4035. <div id="tracksAndZonesCheckboxes">
  4036. <label class="menu-label" style="width: calc(50% - 18px)">
  4037. <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
  4038. Tracks
  4039. </label><!-- This comment eats space! All of it!
  4040. --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
  4041. <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
  4042. Zones
  4043. </label>
  4044. </div>
  4045. <label class="menu-label" style="width: calc(50% - 18px)">
  4046. <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
  4047. Pads
  4048. </label><!-- This comment eats space! All of it!
  4049. --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
  4050. <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
  4051. DNP outlined
  4052. </label>
  4053. <label class="menu-label">
  4054. <input id="highlightRowOnClickCheckbox" type="checkbox" checked onchange="setHighlightRowOnClick(this.checked)">
  4055. Highlight row on click
  4056. </label>
  4057. <label class="menu-label">
  4058. <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
  4059. Continuous redraw on drag
  4060. </label>
  4061. <label class="menu-label">
  4062. Highlight first pin
  4063. <form id="highlightpin1">
  4064. <div class="flexbox">
  4065. <label>
  4066. <input type="radio" name="highlightpin1" value="none" onchange="setHighlightPin1('none')">
  4067. None
  4068. </label>
  4069. <label>
  4070. <input type="radio" name="highlightpin1" value="all" onchange="setHighlightPin1('all')">
  4071. All
  4072. </label>
  4073. <label>
  4074. <input type="radio" name="highlightpin1" value="selected" onchange="setHighlightPin1('selected')">
  4075. Selected
  4076. </label>
  4077. </div>
  4078. </form>
  4079. </label>
  4080. <label class="menu-label">
  4081. <span>Board rotation</span>
  4082. <span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
  4083. <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
  4084. </label>
  4085. <label class="menu-label">
  4086. <input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
  4087. Offset back rotation
  4088. </label>
  4089. <label class="menu-label">
  4090. <div style="margin-left: 5px">Bom checkboxes</div>
  4091. <input id="bomCheckboxes" class="menu-textbox" type=text
  4092. oninput="setBomCheckboxes(this.value)">
  4093. </label>
  4094. <label class="menu-label">
  4095. <div style="margin-left: 5px">Mark when checked</div>
  4096. <div id="markWhenCheckedContainer"></div>
  4097. </label>
  4098. <label class="menu-label">
  4099. <span class="shameless-plug">
  4100. <span>Created using</span>
  4101. <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
  4102. <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>
  4103. </span>
  4104. </label>
  4105. </div>
  4106. </div>
  4107. <div class="button-container hideonprint">
  4108. <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
  4109. title="Front only">F
  4110. </button>
  4111. <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
  4112. title="Front and Back">FB
  4113. </button>
  4114. <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
  4115. title="Back only">B
  4116. </button>
  4117. </div>
  4118. <div class="button-container hideonprint">
  4119. <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
  4120. title="BOM only"></button>
  4121. <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
  4122. title="BOM left, drawings right"></button>
  4123. <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
  4124. title="BOM top, drawings bot"></button>
  4125. </div>
  4126. <div class="button-container hideonprint">
  4127. <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
  4128. title="Grouped BOM"></button>
  4129. <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
  4130. title="Ungrouped BOM"></button>
  4131. <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
  4132. title="Netlist"></button>
  4133. </div>
  4134. <div class="hideonprint menu">
  4135. <button class="statsbtn"></button>
  4136. <div class="menu-content">
  4137. <table class="stats">
  4138. <tbody>
  4139. <tr>
  4140. <td width="40%">Board stats</td>
  4141. <td>Front</td>
  4142. <td>Back</td>
  4143. <td>Total</td>
  4144. </tr>
  4145. <tr>
  4146. <td>Components</td>
  4147. <td id="stats-components-front">~</td>
  4148. <td id="stats-components-back">~</td>
  4149. <td id="stats-components-total">~</td>
  4150. </tr>
  4151. <tr>
  4152. <td>Groups</td>
  4153. <td id="stats-groups-front">~</td>
  4154. <td id="stats-groups-back">~</td>
  4155. <td id="stats-groups-total">~</td>
  4156. </tr>
  4157. <tr>
  4158. <td>SMD pads</td>
  4159. <td id="stats-smd-pads-front">~</td>
  4160. <td id="stats-smd-pads-back">~</td>
  4161. <td id="stats-smd-pads-total">~</td>
  4162. </tr>
  4163. <tr>
  4164. <td>TH pads</td>
  4165. <td colspan=3 id="stats-th-pads">~</td>
  4166. </tr>
  4167. </tbody>
  4168. </table>
  4169. <table class="stats">
  4170. <col width="40%"/><col />
  4171. <tbody id="checkbox-stats">
  4172. <tr>
  4173. <td colspan=2 style="border-top: 0">Checkboxes</td>
  4174. </tr>
  4175. </tbody>
  4176. </table>
  4177. </div>
  4178. </div>
  4179. <div class="hideonprint menu">
  4180. <button class="iobtn"></button>
  4181. <div class="menu-content">
  4182. <div class="menu-label menu-label-top">
  4183. <div style="margin-left: 5px;">Save board image</div>
  4184. <div class="flexbox">
  4185. <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
  4186. style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
  4187. <span>X</span>
  4188. <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
  4189. style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
  4190. </div>
  4191. <label>
  4192. <input id="render-save-transparent" type="checkbox">
  4193. Transparent background
  4194. </label>
  4195. <div class="flexbox">
  4196. <button class="savebtn" onclick="saveImage('F')">Front</button>
  4197. <button class="savebtn" onclick="saveImage('B')">Back</button>
  4198. </div>
  4199. </div>
  4200. <div class="menu-label">
  4201. <span style="margin-left: 5px;">Config and checkbox state</span>
  4202. <div class="flexbox">
  4203. <button class="savebtn" onclick="saveSettings()">Export</button>
  4204. <button class="savebtn" onclick="loadSettings()">Import</button>
  4205. <button class="savebtn" onclick="resetSettings()">Reset</button>
  4206. </div>
  4207. </div>
  4208. <div class="menu-label">
  4209. <span style="margin-left: 5px;">Save bom table as</span>
  4210. <div class="flexbox">
  4211. <button class="savebtn" onclick="saveBomTable('csv')">csv</button>
  4212. <button class="savebtn" onclick="saveBomTable('txt')">txt</button>
  4213. </div>
  4214. </div>
  4215. </div>
  4216. </div>
  4217. </div>
  4218. </div>
  4219. <div id="topdivider">
  4220. <div class="hideonprint">
  4221. <div id="toptoggle" onclick="topToggle()">︽</div>
  4222. </div>
  4223. </div>
  4224. <div id="bot" class="split" style="flex: 1 1">
  4225. <div id="bomdiv" class="split split-horizontal">
  4226. <div style="width: 100%">
  4227. <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
  4228. oninput="updateRefLookup(this.value)">
  4229. <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
  4230. oninput="updateFilter(this.value)">
  4231. <div class="button-container hideonprint" style="float: left; margin: 0;">
  4232. <button id="copy" title="Copy bom table to clipboard"
  4233. onclick="saveBomTable('clipboard')"></button>
  4234. </div>
  4235. </div>
  4236. <div id="dbg"></div>
  4237. <table class="bom" id="bomtable">
  4238. <thead id="bomhead">
  4239. </thead>
  4240. <tbody id="bombody">
  4241. </tbody>
  4242. </table>
  4243. </div>
  4244. <div id="canvasdiv" class="split split-horizontal">
  4245. <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
  4246. <div style="position: relative; width: 100%; height: 100%;">
  4247. <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
  4248. <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
  4249. <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
  4250. <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
  4251. </div>
  4252. </div>
  4253. <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
  4254. <div style="position: relative; width: 100%; height: 100%;">
  4255. <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
  4256. <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
  4257. <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
  4258. <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
  4259. </div>
  4260. </div>
  4261. </div>
  4262. </div>
  4263. </div>
  4264. </body>
  4265. </html>