diff --git a/50000 Records.csv b/ex1/50000 Records.csv similarity index 100% rename from 50000 Records.csv rename to ex1/50000 Records.csv diff --git a/README.md b/ex1/README.md similarity index 100% rename from README.md rename to ex1/README.md diff --git a/Records.proto b/ex1/Records.proto similarity index 100% rename from Records.proto rename to ex1/Records.proto diff --git a/app.go b/ex1/app.go similarity index 100% rename from app.go rename to ex1/app.go diff --git a/build/README.md b/ex1/build/README.md similarity index 100% rename from build/README.md rename to ex1/build/README.md diff --git a/build/appicon.png b/ex1/build/appicon.png similarity index 100% rename from build/appicon.png rename to ex1/build/appicon.png diff --git a/build/darwin/Info.dev.plist b/ex1/build/darwin/Info.dev.plist similarity index 100% rename from build/darwin/Info.dev.plist rename to ex1/build/darwin/Info.dev.plist diff --git a/build/darwin/Info.plist b/ex1/build/darwin/Info.plist similarity index 100% rename from build/darwin/Info.plist rename to ex1/build/darwin/Info.plist diff --git a/build/windows/icon.ico b/ex1/build/windows/icon.ico similarity index 100% rename from build/windows/icon.ico rename to ex1/build/windows/icon.ico diff --git a/build/windows/info.json b/ex1/build/windows/info.json similarity index 100% rename from build/windows/info.json rename to ex1/build/windows/info.json diff --git a/build/windows/installer/project.nsi b/ex1/build/windows/installer/project.nsi similarity index 100% rename from build/windows/installer/project.nsi rename to ex1/build/windows/installer/project.nsi diff --git a/build/windows/installer/wails_tools.nsh b/ex1/build/windows/installer/wails_tools.nsh similarity index 100% rename from build/windows/installer/wails_tools.nsh rename to ex1/build/windows/installer/wails_tools.nsh diff --git a/build/windows/wails.exe.manifest b/ex1/build/windows/wails.exe.manifest similarity index 100% rename from build/windows/wails.exe.manifest rename to ex1/build/windows/wails.exe.manifest diff --git a/employee_data.bin b/ex1/employee_data.bin similarity index 100% rename from employee_data.bin rename to ex1/employee_data.bin diff --git a/employee_data.json b/ex1/employee_data.json similarity index 100% rename from employee_data.json rename to ex1/employee_data.json diff --git a/frontend/.vscode/extensions.json b/ex1/frontend/.vscode/extensions.json similarity index 100% rename from frontend/.vscode/extensions.json rename to ex1/frontend/.vscode/extensions.json diff --git a/frontend/README.md b/ex1/frontend/README.md similarity index 100% rename from frontend/README.md rename to ex1/frontend/README.md diff --git a/ex1/frontend/dist/assets/index.9b35c904.css b/ex1/frontend/dist/assets/index.9b35c904.css new file mode 100644 index 0000000..1761893 --- /dev/null +++ b/ex1/frontend/dist/assets/index.9b35c904.css @@ -0,0 +1 @@ +html{background-color:#1b2636;text-align:center;color:#fff}body{margin:0;color:#fff;font-family:Nunito,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}@font-face{font-family:Nunito;font-style:normal;font-weight:400;src:local(""),url(/assets/nunito-v16-latin-regular.06f3af3f.woff2) format("woff2")}#app{height:100vh;text-align:center}table.svelte-1bs0eb4{width:100%;border-collapse:collapse;margin-bottom:20px}th.svelte-1bs0eb4,td.svelte-1bs0eb4{border:1px solid #ddd;padding:12px;text-align:left}th.svelte-1bs0eb4{background-color:#000}tr.svelte-1bs0eb4:nth-child(even){background-color:#343434}tr.svelte-1bs0eb4:hover{background-color:#110909}.backdrop.svelte-rr3arx{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center}.dialog.svelte-rr3arx{background-color:#fff;padding:20px;border-radius:8px;max-height:300px;overflow-y:auto}table.svelte-xmvjp8{width:100%;border-collapse:collapse;margin-bottom:20px}th.svelte-xmvjp8,td.svelte-xmvjp8{border:1px solid #ddd;padding:12px;text-align:left}th.svelte-xmvjp8{background-color:#fff}tr.svelte-xmvjp8:nth-child(even){background-color:#343434;color:#fff}tr.svelte-xmvjp8:hover{background-color:#110909;color:#fff} diff --git a/ex1/frontend/dist/assets/index.b19f2494.js b/ex1/frontend/dist/assets/index.b19f2494.js new file mode 100644 index 0000000..c6eb498 --- /dev/null +++ b/ex1/frontend/dist/assets/index.b19f2494.js @@ -0,0 +1 @@ +var We=Object.defineProperty;var Xe=(t,e,l)=>e in t?We(t,e,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[e]=l;var y=(t,e,l)=>(Xe(t,typeof e!="symbol"?e+"":e,l),l);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function l(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=l(i);fetch(i.href,o)}})();function V(){}function Ye(t,e){for(const l in e)t[l]=e[l];return t}function Ze(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function Je(t){return t()}function we(){return Object.create(null)}function J(t){t.forEach(Je)}function Ke(t){return typeof t=="function"}function oe(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function xe(t){return Object.keys(t).length===0}function et(t,e,l,n){if(t){const i=Qe(t,e,l,n);return t[0](i)}}function Qe(t,e,l,n){return t[1]&&n?Ye(l.ctx.slice(),t[1](n(e))):l.ctx}function tt(t,e,l,n){if(t[2]&&n){const i=t[2](n(l));if(e.dirty===void 0)return i;if(typeof i=="object"){const o=[],r=Math.max(e.dirty.length,i.length);for(let c=0;c32){const e=[],l=t.ctx.length/32;for(let n=0;nt.removeEventListener(e,l,n)}function A(t,e,l){l==null?t.removeAttribute(e):t.getAttribute(e)!==l&&t.setAttribute(e,l)}function it(t){return Array.from(t.childNodes)}function P(t,e){e=""+e,t.data!==e&&(t.data=e)}function Oe(t,e){t.value=e==null?"":e}function W(t,e,l){for(let n=0;nt.indexOf(n)===-1?e.push(n):l.push(n)),l.forEach(n=>n()),Z=e}const le=new Set;let K;function ve(){K={r:0,c:[],p:K}}function ke(){K.r||J(K.c),K=K.p}function $(t,e){t&&t.i&&(le.delete(t),t.i(e))}function T(t,e,l,n){if(t&&t.o){if(le.has(t))return;le.add(t),K.c.push(()=>{le.delete(t),n&&(l&&t.d(1),n())}),t.o(e)}else n&&n()}function ie(t,e){const l=e.token={};function n(i,o,r,c){if(e.token!==l)return;e.resolved=c;let a=e.ctx;r!==void 0&&(a=a.slice(),a[r]=c);const u=i&&(e.current=i)(a);let h=!1;e.block&&(e.blocks?e.blocks.forEach((g,p)=>{p!==o&&g&&(ve(),T(g,1,1,()=>{e.blocks[p]===g&&(e.blocks[p]=null)}),ke())}):e.block.d(1),u.c(),$(u,1),u.m(e.mount(),e.anchor),h=!0),e.block=u,e.blocks&&(e.blocks[o]=u),h&&be()}if(Ze(t)){const i=De();if(t.then(o=>{I(i),n(e.then,1,e.value,o),I(null)},o=>{if(I(i),n(e.catch,2,e.error,o),I(null),!e.hasCatch)throw o}),e.current!==e.pending)return n(e.pending,0),!0}else{if(e.current!==e.then)return n(e.then,1,e.value,t),!0;e.resolved=t}}function He(t,e,l){const n=e.slice(),{resolved:i}=t;t.current===t.then&&(n[t.value]=i),t.current===t.catch&&(n[t.error]=i),t.block.p(n,l)}function me(t,e,l){const n=t.$$.props[e];n!==void 0&&(t.$$.bound[n]=l,l(t.$$.ctx[n]))}function ye(t){t&&t.c()}function re(t,e,l,n){const{fragment:i,after_update:o}=t.$$;i&&i.m(e,l),n||x(()=>{const r=t.$$.on_mount.map(Je).filter(Ke);t.$$.on_destroy?t.$$.on_destroy.push(...r):J(r),t.$$.on_mount=[]}),o.forEach(x)}function se(t,e){const l=t.$$;l.fragment!==null&&(ct(l.after_update),J(l.on_destroy),l.fragment&&l.fragment.d(e),l.on_destroy=l.fragment=null,l.ctx=[])}function at(t,e){t.$$.dirty[0]===-1&&(Y.push(t),st(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const m=d.length?d[0]:p;return u.ctx&&i(u.ctx[g],u.ctx[g]=m)&&(!u.skip_bound&&u.bound[g]&&u.bound[g](m),h&&at(t,g)),p}):[],u.update(),h=!0,J(u.before_update),u.fragment=n?n(u.ctx):!1,e.target){if(e.hydrate){const g=it(e.target);u.fragment&&u.fragment.l(g),g.forEach(O)}else u.fragment&&u.fragment.c();e.intro&&$(t.$$.fragment),re(t,e.target,e.anchor,e.customElement),be()}I(a)}class ce{$destroy(){se(this,1),this.$destroy=V}$on(e,l){if(!Ke(l))return V;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(l),()=>{const i=n.indexOf(l);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!xe(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function ft(t,e,l){return window.runtime.EventsOnMultiple(t,e,l)}function _e(t,e){return ft(t,e,-1)}function _t(t,e,l){return window.go.main.App.AggregateByColumn(t,e,l)}function ht(t,e,l,n,i){return window.go.main.App.GetEmployees(t,e,l,n,i)}function Ce(t,e,l){const n=t.slice();return n[12]=e[l],n}function Ee(t,e,l){const n=t.slice();return n[15]=e[l],n}function Ae(t,e,l){const n=t.slice();return n[18]=e[l],n}function Ne(t,e,l){const n=t.slice();return n[18]=e[l],n}function dt(t){let e,l=t[23]+"",n;return{c(){e=v("p"),n=S(l)},m(i,o){E(i,e,o),_(e,n)},p(i,o){o&51&&l!==(l=i[23]+"")&&P(n,l)},d(i){i&&O(e)}}}function gt(t){let e,l,n,i,o,r,c,a,u,h,g,p,d=Object.keys(t[11][0]),m=[];for(let f=0;fe,n.anchor=null},p(i,[o]){t=i,n.ctx=t,o&51&&l!==(l=t[6](t[1],qe,t[0],t[4],t[5]))&&ie(l,n)||He(n,t,o)},i:V,o:V,d(i){i&&O(e),n.block.d(),n.token=null,n=null}}}let qe=10;function bt(t,e,l){let{path:n}=e,{page:i}=e,{limitReached:o}=e,r=null,c=null,a=null,u=null;async function h(m,b,j,L,N){try{const f=await ht(m,b,j,L,N);return l(7,o=f.lengthl(2,r=m.value);function p(){c=this.value,l(3,c)}const d=()=>{l(0,i=0),l(4,a=r),l(5,u=c)};return t.$$set=m=>{"path"in m&&l(1,n=m.path),"page"in m&&l(0,i=m.page),"limitReached"in m&&l(7,o=m.limitReached)},[i,n,r,c,a,u,h,o,g,p,d]}class vt extends ce{constructor(e){super(),ue(this,e,bt,pt,oe,{path:1,page:0,limitReached:7})}}function ze(t){let e,l,n,i,o,r,c;const a=t[3].default,u=et(a,t,t[2],null);return{c(){e=v("dialog"),l=v("div"),u&&u.c(),n=R(),i=v("button"),i.textContent="Close",A(l,"class","dialog svelte-rr3arx"),A(e,"class","backdrop svelte-rr3arx"),e.open=t[0]},m(h,g){E(h,e,g),_(e,l),u&&u.m(l,null),_(l,n),_(l,i),o=!0,r||(c=F(i,"click",t[4]),r=!0)},p(h,g){u&&u.p&&(!o||g&4)&&nt(u,a,h,h[2],o?tt(a,h[2],g,null):lt(h[2]),null),(!o||g&1)&&(e.open=h[0])},i(h){o||($(u,h),o=!0)},o(h){T(u,h),o=!1},d(h){h&&O(e),u&&u.d(h),r=!1,c()}}}function kt(t){let e,l,n=t[0]&&ze(t);return{c(){n&&n.c(),e=Ve()},m(i,o){n&&n.m(i,o),E(i,e,o),l=!0},p(i,[o]){i[0]?n?(n.p(i,o),o&1&&$(n,1)):(n=ze(i),n.c(),$(n,1),n.m(e.parentNode,e)):n&&(ve(),T(n,1,1,()=>{n=null}),ke())},i(i){l||($(n),l=!0)},o(i){T(n),l=!1},d(i){n&&n.d(i),i&&O(e)}}}function yt(t,e,l){let{$$slots:n={},$$scope:i}=e,{isOpen:o}=e,{onClose:r}=e;const c=()=>r();return t.$$set=a=>{"isOpen"in a&&l(0,o=a.isOpen),"onClose"in a&&l(1,r=a.onClose),"$$scope"in a&&l(2,i=a.$$scope)},[o,r,i,n,c]}class jt extends ce{constructor(e){super(),ue(this,e,yt,kt,oe,{isOpen:0,onClose:1})}}var pe;(t=>{class e{constructor(n={}){y(this,"emp_id");y(this,"name_prefix");y(this,"first_name");y(this,"middle_initial");y(this,"last_name");y(this,"gender");y(this,"email");y(this,"fathers_name");y(this,"mothers_name");y(this,"mothers_maiden_name");y(this,"birthdate");y(this,"birth_time");y(this,"weight_kg");y(this,"joining_date");y(this,"joining_quarter");y(this,"joining_half");y(this,"joining_year");y(this,"joining_month");y(this,"joining_month_name");y(this,"joining_month_name_short");y(this,"joining_month_day");y(this,"joining_week_day");y(this,"joining_week_day_short");y(this,"years_of_service");y(this,"salary");y(this,"latest_hike_percentage");y(this,"ssn");y(this,"phone_number");y(this,"place_name");y(this,"county");y(this,"city");y(this,"state");y(this,"zip");y(this,"region");y(this,"username");y(this,"password");typeof n=="string"&&(n=JSON.parse(n)),this.emp_id=n.emp_id,this.name_prefix=n.name_prefix,this.first_name=n.first_name,this.middle_initial=n.middle_initial,this.last_name=n.last_name,this.gender=n.gender,this.email=n.email,this.fathers_name=n.fathers_name,this.mothers_name=n.mothers_name,this.mothers_maiden_name=n.mothers_maiden_name,this.birthdate=n.birthdate,this.birth_time=n.birth_time,this.weight_kg=n.weight_kg,this.joining_date=n.joining_date,this.joining_quarter=n.joining_quarter,this.joining_half=n.joining_half,this.joining_year=n.joining_year,this.joining_month=n.joining_month,this.joining_month_name=n.joining_month_name,this.joining_month_name_short=n.joining_month_name_short,this.joining_month_day=n.joining_month_day,this.joining_week_day=n.joining_week_day,this.joining_week_day_short=n.joining_week_day_short,this.years_of_service=n.years_of_service,this.salary=n.salary,this.latest_hike_percentage=n.latest_hike_percentage,this.ssn=n.ssn,this.phone_number=n.phone_number,this.place_name=n.place_name,this.county=n.county,this.city=n.city,this.state=n.state,this.zip=n.zip,this.region=n.region,this.username=n.username,this.password=n.password}static createFrom(n={}){return new e(n)}}t.Employee=e})(pe||(pe={}));function Be(t,e,l){const n=t.slice();return n[13]=e[l][0],n[14]=e[l][1],n}function Ge(t,e,l){const n=t.slice();return n[13]=e[l],n}function Pe(t,e,l){const n=t.slice();return n[13]=e[l],n}function $e(t){let e,l=t[13]+"",n,i;return{c(){e=v("option"),n=S(l),e.__value=i=t[13],e.value=e.__value},m(o,r){E(o,e,r),_(e,n)},p(o,r){r&2&&l!==(l=o[13]+"")&&P(n,l),r&2&&i!==(i=o[13])&&(e.__value=i,e.value=e.__value)},d(o){o&&O(e)}}}function Fe(t){let e,l=t[13]+"",n,i;return{c(){e=v("option"),n=S(l),e.__value=i=t[13],e.value=e.__value},m(o,r){E(o,e,r),_(e,n)},p(o,r){r&2&&l!==(l=o[13]+"")&&P(n,l),r&2&&i!==(i=o[13])&&(e.__value=i,e.value=e.__value)},d(o){o&&O(e)}}}function Ie(t){let e,l,n={ctx:t,current:null,token:null,hasCatch:!0,pending:Ct,then:Ot,catch:wt,value:12,error:17};return ie(l=t[5],n),{c(){e=v("section"),n.block.c()},m(i,o){E(i,e,o),n.block.m(e,n.anchor=null),n.mount=()=>e,n.anchor=null},p(i,o){t=i,n.ctx=t,o&32&&l!==(l=t[5])&&ie(l,n)||He(n,t,o)},d(i){i&&O(e),n.block.d(),n.token=null,n=null}}}function wt(t){let e,l=t[17]+"",n;return{c(){e=v("p"),n=S(l)},m(i,o){E(i,e,o),_(e,n)},p(i,o){o&32&&l!==(l=i[17]+"")&&P(n,l)},d(i){i&&O(e)}}}function Ot(t){let e,l,n,i,o,r,c,a,u,h,g=Object.entries(t[12]),p=[];for(let d=0;dt[7].call(c)),A(h,"for","on-column"),A(p,"name","on-column"),A(p,"id",""),t[3]===void 0&&x(()=>t[8].call(p)),A(m,"for","function"),L.__value="AVG",L.value=L.__value,N.__value="SUM",N.value=N.__value,A(j,"name","function"),A(j,"id",""),t[4]===void 0&&x(()=>t[9].call(j)),A(M,"type","button")},m(k,G){E(k,e,G),_(e,l),_(e,n),_(e,i),_(i,o),_(i,r),_(i,c);for(let w=0;wl(5,a=u()),m=()=>{l(0,n=!1)};return t.$$set=b=>{"isOpen"in b&&l(0,n=b.isOpen),"keys"in b&&l(1,i=b.keys)},[n,i,o,r,c,a,u,h,g,p,d,m]}class Rt extends ce{constructor(e){super(),ue(this,e,Nt,At,oe,{isOpen:0,keys:1})}}function Ue(t){let e,l,n,i,o,r,c,a,u,h=t[2]+1+"",g,p,d,m,b,j,L;function N(s){t[5](s)}function f(s){t[6](s)}let M={path:t[1]};return t[2]!==void 0&&(M.page=t[2]),t[0]!==void 0&&(M.limitReached=t[0]),e=new vt({props:M}),ne.push(()=>me(e,"page",N)),ne.push(()=>me(e,"limitReached",f)),{c(){ye(e.$$.fragment),i=R(),o=v("button"),r=S("Prev"),a=R(),u=v("span"),g=S(h),p=R(),d=v("button"),m=S("Next"),o.disabled=c=t[2]<1,d.disabled=t[0]},m(s,C){re(e,s,C),E(s,i,C),E(s,o,C),_(o,r),E(s,a,C),E(s,u,C),_(u,g),E(s,p,C),E(s,d,C),_(d,m),b=!0,j||(L=[F(o,"click",t[7]),F(d,"click",t[8])],j=!0)},p(s,C){const U={};C&2&&(U.path=s[1]),!l&&C&4&&(l=!0,U.page=s[2],ge(()=>l=!1)),!n&&C&1&&(n=!0,U.limitReached=s[0],ge(()=>n=!1)),e.$set(U),(!b||C&4&&c!==(c=s[2]<1))&&(o.disabled=c),(!b||C&4)&&h!==(h=s[2]+1+"")&&P(g,h),(!b||C&1)&&(d.disabled=s[0])},i(s){b||($(e.$$.fragment,s),b=!0)},o(s){T(e.$$.fragment,s),b=!1},d(s){se(e,s),s&&O(i),s&&O(o),s&&O(a),s&&O(u),s&&O(p),s&&O(d),j=!1,J(L)}}}function Mt(t){let e,l,n,i,o,r=t[1]&&Ue(t);function c(u){t[9](u)}let a={keys:t[4]};return t[3]!==void 0&&(a.isOpen=t[3]),n=new Rt({props:a}),ne.push(()=>me(n,"isOpen",c)),{c(){e=v("main"),r&&r.c(),l=R(),ye(n.$$.fragment)},m(u,h){E(u,e,h),r&&r.m(e,null),_(e,l),re(n,e,null),o=!0},p(u,[h]){u[1]?r?(r.p(u,h),h&2&&$(r,1)):(r=Ue(u),r.c(),$(r,1),r.m(e,l)):r&&(ve(),T(r,1,1,()=>{r=null}),ke());const g={};!i&&h&8&&(i=!0,g.isOpen=u[3],ge(()=>i=!1)),n.$set(g)},i(u){o||($(r),$(n.$$.fragment,u),o=!0)},o(u){T(r),T(n.$$.fragment,u),o=!1},d(u){u&&O(e),r&&r.d(),se(n)}}}function Lt(t,e,l){let n,i=0,o=!1,r;const c=Object.keys(new pe.Employee);ot(async()=>{_e("proto-opened",d=>{l(1,n=d)}),_e("csv-converted",d=>{console.log(d)}),_e("aggregation",()=>{l(3,o=!0)})});function a(d){i=d,l(2,i)}function u(d){r=d,l(0,r)}const h=()=>l(2,i--,i),g=()=>l(2,i++,i);function p(d){o=d,l(3,o)}return t.$$.update=()=>{t.$$.dirty&1&&console.log(r)},[r,n,i,o,c,a,u,h,g,p]}class St extends ce{constructor(e){super(),ue(this,e,Lt,Mt,oe,{})}}new St({target:document.getElementById("app")}); diff --git a/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 b/ex1/frontend/dist/assets/nunito-v16-latin-regular.06f3af3f.woff2 similarity index 100% rename from frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 rename to ex1/frontend/dist/assets/nunito-v16-latin-regular.06f3af3f.woff2 diff --git a/ex1/frontend/dist/index.html b/ex1/frontend/dist/index.html new file mode 100644 index 0000000..ab7edf2 --- /dev/null +++ b/ex1/frontend/dist/index.html @@ -0,0 +1,14 @@ + + + + + + bdooc + + + + +
+ + + diff --git a/frontend/index.html b/ex1/frontend/index.html similarity index 100% rename from frontend/index.html rename to ex1/frontend/index.html diff --git a/frontend/package-lock.json b/ex1/frontend/package-lock.json similarity index 100% rename from frontend/package-lock.json rename to ex1/frontend/package-lock.json diff --git a/frontend/package.json b/ex1/frontend/package.json similarity index 100% rename from frontend/package.json rename to ex1/frontend/package.json diff --git a/frontend/package.json.md5 b/ex1/frontend/package.json.md5 similarity index 100% rename from frontend/package.json.md5 rename to ex1/frontend/package.json.md5 diff --git a/frontend/src/Aggregation.svelte b/ex1/frontend/src/Aggregation.svelte similarity index 100% rename from frontend/src/Aggregation.svelte rename to ex1/frontend/src/Aggregation.svelte diff --git a/frontend/src/App.svelte b/ex1/frontend/src/App.svelte similarity index 100% rename from frontend/src/App.svelte rename to ex1/frontend/src/App.svelte diff --git a/frontend/src/Modal.svelte b/ex1/frontend/src/Modal.svelte similarity index 100% rename from frontend/src/Modal.svelte rename to ex1/frontend/src/Modal.svelte diff --git a/frontend/src/Table.svelte b/ex1/frontend/src/Table.svelte similarity index 100% rename from frontend/src/Table.svelte rename to ex1/frontend/src/Table.svelte diff --git a/frontend/src/assets/fonts/OFL.txt b/ex1/frontend/src/assets/fonts/OFL.txt similarity index 100% rename from frontend/src/assets/fonts/OFL.txt rename to ex1/frontend/src/assets/fonts/OFL.txt diff --git a/ex1/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 b/ex1/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 new file mode 100644 index 0000000..2f9cc59 Binary files /dev/null and b/ex1/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 differ diff --git a/frontend/src/assets/images/logo-universal.png b/ex1/frontend/src/assets/images/logo-universal.png similarity index 100% rename from frontend/src/assets/images/logo-universal.png rename to ex1/frontend/src/assets/images/logo-universal.png diff --git a/frontend/src/main.ts b/ex1/frontend/src/main.ts similarity index 100% rename from frontend/src/main.ts rename to ex1/frontend/src/main.ts diff --git a/frontend/src/style.css b/ex1/frontend/src/style.css similarity index 100% rename from frontend/src/style.css rename to ex1/frontend/src/style.css diff --git a/frontend/src/vite-env.d.ts b/ex1/frontend/src/vite-env.d.ts similarity index 100% rename from frontend/src/vite-env.d.ts rename to ex1/frontend/src/vite-env.d.ts diff --git a/frontend/svelte.config.js b/ex1/frontend/svelte.config.js similarity index 100% rename from frontend/svelte.config.js rename to ex1/frontend/svelte.config.js diff --git a/frontend/tsconfig.json b/ex1/frontend/tsconfig.json similarity index 100% rename from frontend/tsconfig.json rename to ex1/frontend/tsconfig.json diff --git a/frontend/tsconfig.node.json b/ex1/frontend/tsconfig.node.json similarity index 100% rename from frontend/tsconfig.node.json rename to ex1/frontend/tsconfig.node.json diff --git a/frontend/vite.config.ts b/ex1/frontend/vite.config.ts similarity index 100% rename from frontend/vite.config.ts rename to ex1/frontend/vite.config.ts diff --git a/frontend/wailsjs/go/main/App.d.ts b/ex1/frontend/wailsjs/go/main/App.d.ts similarity index 100% rename from frontend/wailsjs/go/main/App.d.ts rename to ex1/frontend/wailsjs/go/main/App.d.ts diff --git a/frontend/wailsjs/go/main/App.js b/ex1/frontend/wailsjs/go/main/App.js similarity index 100% rename from frontend/wailsjs/go/main/App.js rename to ex1/frontend/wailsjs/go/main/App.js diff --git a/frontend/wailsjs/go/models.ts b/ex1/frontend/wailsjs/go/models.ts similarity index 100% rename from frontend/wailsjs/go/models.ts rename to ex1/frontend/wailsjs/go/models.ts diff --git a/frontend/wailsjs/runtime/package.json b/ex1/frontend/wailsjs/runtime/package.json similarity index 100% rename from frontend/wailsjs/runtime/package.json rename to ex1/frontend/wailsjs/runtime/package.json diff --git a/frontend/wailsjs/runtime/runtime.d.ts b/ex1/frontend/wailsjs/runtime/runtime.d.ts similarity index 100% rename from frontend/wailsjs/runtime/runtime.d.ts rename to ex1/frontend/wailsjs/runtime/runtime.d.ts diff --git a/frontend/wailsjs/runtime/runtime.js b/ex1/frontend/wailsjs/runtime/runtime.js similarity index 100% rename from frontend/wailsjs/runtime/runtime.js rename to ex1/frontend/wailsjs/runtime/runtime.js diff --git a/go.mod b/ex1/go.mod similarity index 100% rename from go.mod rename to ex1/go.mod diff --git a/go.sum b/ex1/go.sum similarity index 100% rename from go.sum rename to ex1/go.sum diff --git a/main.go b/ex1/main.go similarity index 100% rename from main.go rename to ex1/main.go diff --git a/parsing/parsing.go b/ex1/parsing/parsing.go similarity index 100% rename from parsing/parsing.go rename to ex1/parsing/parsing.go diff --git a/parsing/types.go b/ex1/parsing/types.go similarity index 100% rename from parsing/types.go rename to ex1/parsing/types.go diff --git a/proto/Records.pb.go b/ex1/proto/Records.pb.go similarity index 100% rename from proto/Records.pb.go rename to ex1/proto/Records.pb.go diff --git a/proto/io.go b/ex1/proto/io.go similarity index 100% rename from proto/io.go rename to ex1/proto/io.go diff --git a/proto/queries.go b/ex1/proto/queries.go similarity index 100% rename from proto/queries.go rename to ex1/proto/queries.go diff --git a/wails.json b/ex1/wails.json similarity index 100% rename from wails.json rename to ex1/wails.json