Aufräumen + Login Handler
This commit is contained in:
		
							parent
							
								
									61a679dfb1
								
							
						
					
					
						commit
						ee67f691d3
					
				
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 555 B  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 3.2 KiB  | 
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
/* eslint-disable @typescript-eslint/no-var-requires */
 | 
			
		||||
const { configure } = require('quasar/wrappers');
 | 
			
		||||
 | 
			
		||||
module.exports = configure(function(ctx) {
 | 
			
		||||
module.exports = configure(function (ctx) {
 | 
			
		||||
  return {
 | 
			
		||||
    // https://quasar.dev/quasar-cli/supporting-ts
 | 
			
		||||
    supportTS: {
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ module.exports = configure(function(ctx) {
 | 
			
		|||
    // app boot file (/src/boot)
 | 
			
		||||
    // --> boot files are part of "main.js"
 | 
			
		||||
    // https://quasar.dev/quasar-cli/boot-files
 | 
			
		||||
    boot: ['composition-api', 'axios', 'plugins'],
 | 
			
		||||
    boot: ['composition-api', 'axios', 'login', 'plugins'],
 | 
			
		||||
 | 
			
		||||
    // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
 | 
			
		||||
    css: ['app.scss'],
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ module.exports = configure(function(ctx) {
 | 
			
		|||
      // extractCSS: false,
 | 
			
		||||
 | 
			
		||||
      // https://quasar.dev/quasar-cli/handling-webpack
 | 
			
		||||
      extendWebpack(cfg) {
 | 
			
		||||
      extendWebpack (cfg) {
 | 
			
		||||
        // linting is slow in TS projects, we execute it only for production builds
 | 
			
		||||
        if (ctx.prod) {
 | 
			
		||||
          cfg.module.rules.push({
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ module.exports = configure(function(ctx) {
 | 
			
		|||
      // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration
 | 
			
		||||
      nodeIntegration: true,
 | 
			
		||||
 | 
			
		||||
      extendWebpack(/* cfg */) {
 | 
			
		||||
      extendWebpack (/* cfg */) {
 | 
			
		||||
        // do something with Electron main process Webpack cfg
 | 
			
		||||
        // chainWebpack also available besides this extendWebpack
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,191 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
 | 
			
		||||
 | 
			
		||||
<svg
 | 
			
		||||
   xmlns:dc="http://purl.org/dc/elements/1.1/"
 | 
			
		||||
   xmlns:cc="http://creativecommons.org/ns#"
 | 
			
		||||
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 | 
			
		||||
   xmlns:svg="http://www.w3.org/2000/svg"
 | 
			
		||||
   xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
 | 
			
		||||
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
 | 
			
		||||
   width="67.407623mm"
 | 
			
		||||
   height="62.908276mm"
 | 
			
		||||
   viewBox="0 0 238.84591 222.90334"
 | 
			
		||||
   id="svg3570"
 | 
			
		||||
   version="1.1"
 | 
			
		||||
   inkscape:version="0.91 r13725"
 | 
			
		||||
   sodipodi:docname="quasar-logo-full.svg">
 | 
			
		||||
  <defs
 | 
			
		||||
     id="defs3572" />
 | 
			
		||||
  <sodipodi:namedview
 | 
			
		||||
     id="base"
 | 
			
		||||
     pagecolor="#ffffff"
 | 
			
		||||
     bordercolor="#666666"
 | 
			
		||||
     borderopacity="1.0"
 | 
			
		||||
     inkscape:pageopacity="0.0"
 | 
			
		||||
     inkscape:pageshadow="2"
 | 
			
		||||
     inkscape:zoom="1.979899"
 | 
			
		||||
     inkscape:cx="-39.753589"
 | 
			
		||||
     inkscape:cy="27.706388"
 | 
			
		||||
     inkscape:document-units="px"
 | 
			
		||||
     inkscape:current-layer="g4895-4-4"
 | 
			
		||||
     showgrid="false"
 | 
			
		||||
     fit-margin-top="0"
 | 
			
		||||
     fit-margin-left="0"
 | 
			
		||||
     fit-margin-right="0"
 | 
			
		||||
     fit-margin-bottom="0"
 | 
			
		||||
     inkscape:window-width="1920"
 | 
			
		||||
     inkscape:window-height="1056"
 | 
			
		||||
     inkscape:window-x="0"
 | 
			
		||||
     inkscape:window-y="24"
 | 
			
		||||
     inkscape:window-maximized="1" />
 | 
			
		||||
  <metadata
 | 
			
		||||
     id="metadata3575">
 | 
			
		||||
    <rdf:RDF>
 | 
			
		||||
      <cc:Work
 | 
			
		||||
         rdf:about="">
 | 
			
		||||
        <dc:format>image/svg+xml</dc:format>
 | 
			
		||||
        <dc:type
 | 
			
		||||
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 | 
			
		||||
        <dc:title />
 | 
			
		||||
      </cc:Work>
 | 
			
		||||
    </rdf:RDF>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <g
 | 
			
		||||
     inkscape:label="Layer 1"
 | 
			
		||||
     inkscape:groupmode="layer"
 | 
			
		||||
     id="layer1"
 | 
			
		||||
     transform="translate(-277.71988,-312.33911)">
 | 
			
		||||
    <g
 | 
			
		||||
       id="g4895-4-4"
 | 
			
		||||
       transform="translate(1419.0442,398.9018)">
 | 
			
		||||
      <g
 | 
			
		||||
         transform="translate(-29.620665,-4)"
 | 
			
		||||
         id="g4579-2-20">
 | 
			
		||||
        <g
 | 
			
		||||
           id="g4445-2-0"
 | 
			
		||||
           transform="translate(12.499948,7.809312)">
 | 
			
		||||
          <g
 | 
			
		||||
             inkscape:export-ydpi="44.860481"
 | 
			
		||||
             inkscape:export-xdpi="44.860481"
 | 
			
		||||
             inkscape:export-filename="/home/emanuele/Desktop/logo1.png"
 | 
			
		||||
             transform="translate(-712.85583,-503.26814)"
 | 
			
		||||
             id="g4561-6-7-0">
 | 
			
		||||
            <g
 | 
			
		||||
               transform="translate(16.233481,0)"
 | 
			
		||||
               style="font-style:normal;font-weight:normal;font-size:50.25774765px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#263238;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 | 
			
		||||
               id="flowRoot4513-6-6-08">
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -402.73125,631.46823 q -0.6125,0.0438 -1.3125,0.0875 -0.65625,0 -1.4,0 l -9.31875,0 q -12.81875,0 -12.81875,-8.44375 l 0,-13.475 q 0,-8.26875 12.6,-8.26875 l 9.75625,0 q 12.6,0 12.6,8.26875 l 0,13.475 q 0,5.03125 -4.4625,7.04375 l 3.10625,2.14375 q 1.35625,0.83125 1.35625,1.70625 0,0.875 -0.7,1.3125 -0.65625,0.48125 -1.88125,0.48125 -0.30625,0 -0.7875,-0.13125 -0.4375,-0.0875 -1.05,-0.48125 l -5.6875,-3.71875 z m 5.38125,-21.74375 q 0,-4.76875 -7.9625,-4.76875 l -9.58125,0 q -7.9625,0 -7.9625,4.76875 l 0,13.3875 q 0,4.94375 8.3125,4.94375 l 8.88125,0 q 8.3125,0 8.3125,-4.94375 l 0,-13.3875 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3428" />
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -368.0585,631.64323 q -11.2875,0 -11.2875,-6.9125 l 0,-12.73125 q 0,-1.8375 2.31875,-1.8375 2.31875,0 2.31875,1.8375 l 0,12.775 q 0,3.325 6.475,3.325 l 8.3125,0 q 6.475,0 6.475,-3.325 l 0,-12.775 q 0,-1.8375 2.31875,-1.8375 2.3625,0 2.3625,1.8375 l 0,12.73125 q 0,6.9125 -11.2875,6.9125 l -8.00625,0 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3430" />
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -327.2833,631.64323 q -9.3625,0 -9.3625,-5.81875 l 0,-2.49375 q 0,-5.775 9.3625,-5.775 l 18.59375,0 0,-0.65625 q 0,-3.0625 -5.38125,-3.0625 l -6.16875,0 q -2.1875,0 -2.1875,-1.70625 0,-1.75 2.1875,-1.75 l 6.16875,0 q 9.93125,0 9.93125,6.51875 l 0,8.575 q 0,6.16875 -9.5375,6.16875 l -13.60625,0 z m 13.34375,-3.4125 q 5.25,0 5.25,-2.8875 l 0,-4.76875 -18.24375,0 q -5.11875,0 -5.11875,2.66875 l 0,2.275 q 0,2.7125 5.11875,2.7125 l 12.99375,0 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3432" />
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -262.77031,626.74323 q 0,4.9 -9.975,4.9 l -17.0625,0 q -2.1875,0 -2.1875,-1.70625 0,-1.70625 2.1875,-1.70625 l 17.0625,0 q 5.38125,0 5.38125,-1.4875 l 0,-2.45 q 0,-1.4875 -5.38125,-1.4875 l -9.0125,0 q -9.975,0 -9.975,-4.76875 l 0,-2.05625 q 0,-5.6 10.28125,-5.6 l 5.99375,0 q 2.23125,0 2.23125,1.75 0,0.875 -0.6125,1.3125 -0.56875,0.39375 -1.61875,0.39375 l -5.99375,0 q -5.73125,0 -5.73125,2.14375 l 0,1.925 q 0,1.79375 5.6875,1.79375 l 9.0125,0 q 9.7125,0 9.7125,4.4625 l 0,2.58125 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3434" />
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -241.91709,631.64323 q -9.3625,0 -9.3625,-5.81875 l 0,-2.49375 q 0,-5.775 9.3625,-5.775 l 18.59375,0 0,-0.65625 q 0,-3.0625 -5.38125,-3.0625 l -6.16875,0 q -2.1875,0 -2.1875,-1.70625 0,-1.75 2.1875,-1.75 l 6.16875,0 q 9.93125,0 9.93125,6.51875 l 0,8.575 q 0,6.16875 -9.5375,6.16875 l -13.60625,0 z m 13.34375,-3.4125 q 5.25,0 5.25,-2.8875 l 0,-4.76875 -18.24375,0 q -5.11875,0 -5.11875,2.66875 l 0,2.275 q 0,2.7125 5.11875,2.7125 l 12.99375,0 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3436" />
 | 
			
		||||
              <path
 | 
			
		||||
                 d="m -205.62285,617.33698 q 0,-6.95625 11.2875,-6.95625 l 3.36875,0 q 2.23125,0 2.23125,1.79375 0,1.79375 -2.23125,1.79375 l -3.54375,0 q -6.475,0 -6.475,3.28125 l 0,12.775 q 0,1.8375 -2.31875,1.8375 -2.31875,0 -2.31875,-1.8375 l 0,-12.6875 z"
 | 
			
		||||
                 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:43.75px;font-family:'Neuropol X';-inkscape-font-specification:'Neuropol X';text-align:start;letter-spacing:5px;word-spacing:0px;text-anchor:start;fill:#263238;fill-opacity:1"
 | 
			
		||||
                 id="path3438" />
 | 
			
		||||
            </g>
 | 
			
		||||
          </g>
 | 
			
		||||
        </g>
 | 
			
		||||
      </g>
 | 
			
		||||
      <g
 | 
			
		||||
         id="g5443-0-1-5-1-9"
 | 
			
		||||
         transform="matrix(0.55595317,0,0,0.55595317,-521.93484,-328.66104)"
 | 
			
		||||
         inkscape:export-filename="/home/emanuele/Desktop/logo1.png"
 | 
			
		||||
         inkscape:export-xdpi="44.860481"
 | 
			
		||||
         inkscape:export-ydpi="44.860481">
 | 
			
		||||
        <g
 | 
			
		||||
           inkscape:export-ydpi="3.4165223"
 | 
			
		||||
           inkscape:export-xdpi="3.4165223"
 | 
			
		||||
           transform="matrix(0.09527033,0,0,0.09527033,-1695.2716,706.62921)"
 | 
			
		||||
           id="g8856-6-1-1-9-0-1-9">
 | 
			
		||||
          <circle
 | 
			
		||||
             r="1485"
 | 
			
		||||
             cy="-1361.2571"
 | 
			
		||||
             cx="8317.3574"
 | 
			
		||||
             id="circle8858-1-3-7-6-5-3-0"
 | 
			
		||||
             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 | 
			
		||||
             inkscape:export-xdpi="10.031387"
 | 
			
		||||
             inkscape:export-ydpi="10.031387" />
 | 
			
		||||
          <path
 | 
			
		||||
             inkscape:export-ydpi="10.031387"
 | 
			
		||||
             inkscape:export-xdpi="10.031387"
 | 
			
		||||
             style="opacity:1;fill:#263238;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
 | 
			
		||||
             d="m 8560.3823,-1361.3029 a 242.947,242.947 0 0 1 -242.947,242.948 242.947,242.947 0 0 1 -242.947,-242.948 242.947,242.947 0 0 1 242.947,-242.946 242.947,242.947 0 0 1 242.947,242.946 z"
 | 
			
		||||
             id="path8860-5-4-8-2-9-0-9"
 | 
			
		||||
             inkscape:connector-curvature="0" />
 | 
			
		||||
          <path
 | 
			
		||||
             id="path8862-5-5-9-1-3-6-3"
 | 
			
		||||
             d="m 9395.8755,-1984.028 a 1245.372,1245.372 0 0 0 -190.8415,-249.4971 l -280.8618,162.1556 c -87.542,-74.7796 -187.0349,-132.0588 -293.2407,-169.9527 -95.8868,97.1766 -172.0602,205.7604 -226.9672,323.8487 312.6411,-21.2772 635.5313,91.8725 935.2898,326.0721 l 176.7612,-102.0532 a 1245.372,1245.372 0 0 0 -120.1398,-290.5734 z"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             style="fill:#1976d2;fill-opacity:1"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             inkscape:transform-center-x="-514.04855"
 | 
			
		||||
             inkscape:transform-center-y="-444.04649" />
 | 
			
		||||
          <path
 | 
			
		||||
             inkscape:transform-center-y="265.80217"
 | 
			
		||||
             inkscape:transform-center-x="-689.63727"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             style="fill:#42a5f5;fill-opacity:1"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             d="m 9395.9474,-738.70387 a 1245.372,1245.372 0 0 0 120.6501,-290.02213 l -280.8618,-162.1557 c 20.99,-113.2034 20.8488,-228.0063 0.563,-338.9302 -132.1008,-34.4521 -264.2238,-46.1283 -393.9448,-34.635 174.7471,260.1165 238.2017,596.32248 185.2582,973.02076 l 176.7612,102.05309 a 1245.372,1245.372 0 0 0 191.5741,-249.33082 z"
 | 
			
		||||
             id="path8864-4-8-1-2-4-4-4" />
 | 
			
		||||
          <path
 | 
			
		||||
             id="path8866-7-5-5-0-6-4-7"
 | 
			
		||||
             d="m 8317.501,-115.97954 a 1245.372,1245.372 0 0 0 311.4916,-40.52501 l 0,-324.31131 c 108.5321,-38.42382 207.8837,-95.94755 293.8037,-168.97752 -36.214,-131.6287 -92.1636,-251.88868 -166.9776,-358.48372 -137.894,281.39369 -397.3296,504.44998 -750.0316,646.9487 l 0,204.10623 a 1245.372,1245.372 0 0 0 311.7139,41.24263 z"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             style="fill:#1976d2;fill-opacity:1"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             inkscape:transform-center-x="-117.49007"
 | 
			
		||||
             inkscape:transform-center-y="639.34029" />
 | 
			
		||||
          <path
 | 
			
		||||
             inkscape:transform-center-y="444.04652"
 | 
			
		||||
             inkscape:transform-center-x="514.04857"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             style="fill:#42a5f5;fill-opacity:1"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             d="m 7238.9827,-738.57936 a 1245.372,1245.372 0 0 0 190.8415,249.49714 l 280.8618,-162.15566 c 87.5421,74.77965 187.0349,132.05879 293.2407,169.95271 95.8868,-97.17659 172.0602,-205.76036 226.9672,-323.8487 -312.6411,21.27714 -635.5313,-91.87254 -935.2898,-326.07203 l -176.7612,102.0531 a 1245.372,1245.372 0 0 0 120.1398,290.57344 z"
 | 
			
		||||
             id="path8868-6-7-4-7-2-7-3" />
 | 
			
		||||
          <path
 | 
			
		||||
             id="path8870-5-3-9-3-5-5-1"
 | 
			
		||||
             d="m 7238.9108,-1983.9035 a 1245.372,1245.372 0 0 0 -120.6501,290.0221 l 280.8618,162.1557 c -20.99,113.2035 -20.8488,228.0063 -0.563,338.9302 132.1008,34.4521 264.2238,46.1283 393.9448,34.635 -174.7471,-260.1165 -238.2017,-596.3225 -185.2582,-973.0207 l -176.7612,-102.0532 a 1245.372,1245.372 0 0 0 -191.5741,249.3309 z"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             style="fill:#1976d2;fill-opacity:1"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             inkscape:transform-center-x="689.63729"
 | 
			
		||||
             inkscape:transform-center-y="-265.80221" />
 | 
			
		||||
          <path
 | 
			
		||||
             inkscape:transform-center-y="-639.34032"
 | 
			
		||||
             inkscape:transform-center-x="117.49005"
 | 
			
		||||
             inkscape:connector-curvature="0"
 | 
			
		||||
             style="fill:#42a5f5;fill-opacity:1"
 | 
			
		||||
             mask="none"
 | 
			
		||||
             clip-path="none"
 | 
			
		||||
             d="m 8317.3572,-2606.6279 a 1245.372,1245.372 0 0 0 -311.4915,40.525 l -1e-4,324.3113 c -108.5321,38.4239 -207.8837,95.9476 -293.8037,168.9776 36.214,131.6287 92.1637,251.8886 166.9776,358.4837 137.894,-281.3937 397.3296,-504.45 750.0316,-646.9487 l 1e-4,-204.1063 a 1245.372,1245.372 0 0 0 -311.714,-41.2426 z"
 | 
			
		||||
             id="path8872-6-3-2-1-3-3-7" />
 | 
			
		||||
        </g>
 | 
			
		||||
      </g>
 | 
			
		||||
    </g>
 | 
			
		||||
  </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 13 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
import { boot } from 'quasar/wrappers';
 | 
			
		||||
 | 
			
		||||
export default boot(({ Vue, router, store }) => {
 | 
			
		||||
    router.beforeEach((to, from, next) => {
 | 
			
		||||
        if (to.matched.some(record => record.meta.requiresAuth)) {
 | 
			
		||||
            // this route requires auth, check if logged in
 | 
			
		||||
            // if not, redirect to login page.
 | 
			
		||||
            if (!store.getters.isLoggedIn()) {
 | 
			
		||||
                next({
 | 
			
		||||
                    path: '/login',
 | 
			
		||||
                    query: { redirect: to.fullPath }
 | 
			
		||||
                })
 | 
			
		||||
            } else {
 | 
			
		||||
                next()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            next() // make sure to always call next()!
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -1,59 +0,0 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <p>{{ title }}</p>
 | 
			
		||||
    <ul>
 | 
			
		||||
      <li v-for="todo in todos" :key="todo.id" @click="increment">
 | 
			
		||||
        {{ todo.id }} - {{ todo.content }}
 | 
			
		||||
      </li>
 | 
			
		||||
    </ul>
 | 
			
		||||
    <p>Count: {{ todoCount }} / {{ meta.totalCount }}</p>
 | 
			
		||||
    <p>Active: {{ active ? 'yes' : 'no' }}</p>
 | 
			
		||||
    <p>Clicks on todos: {{ clickCount }}</p>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import {
 | 
			
		||||
  defineComponent, PropType, computed, ref, toRef, Ref,
 | 
			
		||||
} from '@vue/composition-api';
 | 
			
		||||
import { Todo, Meta } from './models';
 | 
			
		||||
 | 
			
		||||
function useClickCount() {
 | 
			
		||||
  const clickCount = ref(0);
 | 
			
		||||
  function increment() {
 | 
			
		||||
    clickCount.value += 1
 | 
			
		||||
    return clickCount.value;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return { clickCount, increment };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function useDisplayTodo(todos: Ref<Todo[]>) {
 | 
			
		||||
  const todoCount = computed(() => todos.value.length);
 | 
			
		||||
  return { todoCount };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default defineComponent({
 | 
			
		||||
  name: 'CompositionComponent',
 | 
			
		||||
  props: {
 | 
			
		||||
    title: {
 | 
			
		||||
      type: String,
 | 
			
		||||
      required: true
 | 
			
		||||
    },
 | 
			
		||||
    todos: {
 | 
			
		||||
      type: (Array as unknown) as PropType<Todo[]>,
 | 
			
		||||
      default: () => []
 | 
			
		||||
    },
 | 
			
		||||
    meta: {
 | 
			
		||||
      type: (Object as unknown) as PropType<Meta>,
 | 
			
		||||
      required: true
 | 
			
		||||
    },
 | 
			
		||||
    active: {
 | 
			
		||||
      type: Boolean
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  setup(props) {
 | 
			
		||||
    return { ...useClickCount(), ...useDisplayTodo(toRef(props, 'todos')) };
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +0,0 @@
 | 
			
		|||
export interface Todo {
 | 
			
		||||
  id: number;
 | 
			
		||||
  content: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface Meta {
 | 
			
		||||
  totalCount: number;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +1,24 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <title><%= productName %></title>
 | 
			
		||||
 | 
			
		||||
    <meta charset="utf-8">
 | 
			
		||||
    <meta name="description" content="<%= productDescription %>">
 | 
			
		||||
    <meta name="format-detection" content="telephone=no">
 | 
			
		||||
    <meta name="msapplication-tap-highlight" content="no">
 | 
			
		||||
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
 | 
			
		||||
<head>
 | 
			
		||||
  <title><%= productName %></title>
 | 
			
		||||
 | 
			
		||||
    <link rel="icon" type="image/png" sizes="128x128" href="icons/favicon-128x128.png">
 | 
			
		||||
    <link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png">
 | 
			
		||||
    <link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
 | 
			
		||||
    <link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
 | 
			
		||||
    <link rel="icon" type="image/ico" href="favicon.ico">
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
    <!-- DO NOT touch the following DIV -->
 | 
			
		||||
    <div id="q-app"></div>
 | 
			
		||||
  </body>
 | 
			
		||||
</html>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <meta name="description" content="<%= productDescription %>">
 | 
			
		||||
  <meta name="format-detection" content="telephone=no">
 | 
			
		||||
  <meta name="msapplication-tap-highlight" content="no">
 | 
			
		||||
  <meta name="viewport"
 | 
			
		||||
    content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
 | 
			
		||||
 | 
			
		||||
  <link rel="icon" type="image/png" sizes="128x128" href="icons/favicon-128x128.png">
 | 
			
		||||
  <link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
 | 
			
		||||
  <link rel="icon" type="image/ico" href="favicon.ico">
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <!-- DO NOT touch the following DIV -->
 | 
			
		||||
  <div id="q-app"></div>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,9 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <q-layout view="hHh lpr lFf">
 | 
			
		||||
    <q-header elevated class="bg-primary text-white">
 | 
			
		||||
    <q-header
 | 
			
		||||
      elevated
 | 
			
		||||
      class="bg-primary text-white"
 | 
			
		||||
    >
 | 
			
		||||
      <q-toolbar>
 | 
			
		||||
        <!-- Button um Navigationsleiset ein und auszublenden. Nötig bei Desktop? -->
 | 
			
		||||
        <q-btn
 | 
			
		||||
| 
						 | 
				
			
			@ -23,8 +26,18 @@
 | 
			
		|||
 | 
			
		||||
        <!-- Hier kommen die Shortlinks hin -->
 | 
			
		||||
        <div>
 | 
			
		||||
          <q-btn flat round dense icon="sim_card" />
 | 
			
		||||
          <q-btn flat round dense icon="gamepad" />
 | 
			
		||||
          <q-btn
 | 
			
		||||
            flat
 | 
			
		||||
            round
 | 
			
		||||
            dense
 | 
			
		||||
            icon="sim_card"
 | 
			
		||||
          />
 | 
			
		||||
          <q-btn
 | 
			
		||||
            flat
 | 
			
		||||
            round
 | 
			
		||||
            dense
 | 
			
		||||
            icon="gamepad"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        <q-btn
 | 
			
		||||
          flat
 | 
			
		||||
| 
						 | 
				
			
			@ -68,9 +81,10 @@
 | 
			
		|||
        />
 | 
			
		||||
      </q-list>
 | 
			
		||||
 | 
			
		||||
      <q-btn @click="showRoute" label="test"></q-btn>
 | 
			
		||||
 | 
			
		||||
      <div class="q-mini-drawer-hide absolute" style="top: 15px; right: -11px">
 | 
			
		||||
      <div
 | 
			
		||||
        class="q-mini-drawer-hide absolute"
 | 
			
		||||
        style="top: 15px; right: -11px"
 | 
			
		||||
      >
 | 
			
		||||
        <q-btn
 | 
			
		||||
          size="sm"
 | 
			
		||||
          dense
 | 
			
		||||
| 
						 | 
				
			
			@ -110,8 +124,8 @@ const links = [
 | 
			
		|||
    name: 'about',
 | 
			
		||||
    title: 'Über Flaschengeist',
 | 
			
		||||
    link: 'about',
 | 
			
		||||
    icon: 'mdi-information'
 | 
			
		||||
  }
 | 
			
		||||
    icon: 'mdi-information',
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
declare module 'vue/types/vue' {
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +143,7 @@ export default defineComponent({
 | 
			
		|||
    const leftDrawerOpen = ref(
 | 
			
		||||
      computed({
 | 
			
		||||
        get: () => (leftDrawer.value || Screen.gt.sm ? true : false),
 | 
			
		||||
        set: (val: boolean) => (leftDrawer.value = val)
 | 
			
		||||
        set: (val: boolean) => (leftDrawer.value = val),
 | 
			
		||||
      })
 | 
			
		||||
    );
 | 
			
		||||
    const leftDrawerMini = ref(false);
 | 
			
		||||
| 
						 | 
				
			
			@ -140,7 +154,7 @@ export default defineComponent({
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    const pluginChildLinks = computed(() => {
 | 
			
		||||
      const test:
 | 
			
		||||
      const link:
 | 
			
		||||
        | PluginMainLink
 | 
			
		||||
        | undefined = ctx.root.$flaschengeistPluginsMainLinks.find(
 | 
			
		||||
        (plugin: PluginMainLink) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -149,29 +163,21 @@ export default defineComponent({
 | 
			
		|||
          }
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
      console.log(test);
 | 
			
		||||
      console.log(typeof test);
 | 
			
		||||
      if (test == undefined) {
 | 
			
		||||
 | 
			
		||||
      if (link == undefined) {
 | 
			
		||||
        return [];
 | 
			
		||||
      } else {
 | 
			
		||||
        // eslint-disable-next-line @typescript-eslint/ban-ts-comment
 | 
			
		||||
        //@ts-ignore
 | 
			
		||||
        return test.children;
 | 
			
		||||
        return link.children;
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    function showRoute() {
 | 
			
		||||
      console.log(ctx.root.$route);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
      leftDrawerOpen,
 | 
			
		||||
      leftDrawerMini,
 | 
			
		||||
      leftDrawerClicker,
 | 
			
		||||
      links,
 | 
			
		||||
      pluginChildLinks,
 | 
			
		||||
      showRoute
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <q-page class="row items-center justify-evenly">
 | 
			
		||||
    <example-component
 | 
			
		||||
      title="Example component"
 | 
			
		||||
      active
 | 
			
		||||
      :todos="todos"
 | 
			
		||||
      :meta="meta"
 | 
			
		||||
    ></example-component>
 | 
			
		||||
  </q-page>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { Todo, Meta } from 'components/models';
 | 
			
		||||
import ExampleComponent from 'components/CompositionComponent.vue';
 | 
			
		||||
import { defineComponent, ref } from '@vue/composition-api';
 | 
			
		||||
 | 
			
		||||
export default defineComponent({
 | 
			
		||||
  name: 'PageIndex',
 | 
			
		||||
  components: { ExampleComponent },
 | 
			
		||||
  setup() {
 | 
			
		||||
    const todos = ref<Todo[]>([
 | 
			
		||||
      {
 | 
			
		||||
        id: 1,
 | 
			
		||||
        content: 'ct1'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 2,
 | 
			
		||||
        content: 'ct2'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 3,
 | 
			
		||||
        content: 'ct3'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 4,
 | 
			
		||||
        content: 'ct4'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 5,
 | 
			
		||||
        content: 'ct5'
 | 
			
		||||
      }
 | 
			
		||||
    ]);
 | 
			
		||||
    const meta = ref<Meta>({
 | 
			
		||||
      totalCount: 1200
 | 
			
		||||
    });
 | 
			
		||||
    return { todos, meta };
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
		Loading…
	
		Reference in New Issue