first commit
13
.editorconfig
Normal file
|
@ -0,0 +1,13 @@
|
|||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
21
.eslintrc.js
Normal file
|
@ -0,0 +1,21 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
node: true
|
||||
},
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint'
|
||||
},
|
||||
extends: [
|
||||
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
|
||||
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
|
||||
'plugin:vue/essential'
|
||||
],
|
||||
// required to lint *.vue files
|
||||
plugins: [
|
||||
'vue'
|
||||
],
|
||||
// add your custom rules here
|
||||
rules: {}
|
||||
}
|
11
.gitignore
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
# dependencies
|
||||
node_modules
|
||||
|
||||
# logs
|
||||
npm-debug.log
|
||||
|
||||
# Nuxt build
|
||||
.nuxt
|
||||
|
||||
# Nuxt generate
|
||||
dist
|
23
README.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
# nuxtgety-2
|
||||
|
||||
> Second attempt at building a web interface for ESP8266
|
||||
|
||||
## Build Setup
|
||||
|
||||
``` bash
|
||||
# install dependencies
|
||||
$ npm install # Or yarn install
|
||||
|
||||
# serve with hot reload at localhost:3000
|
||||
$ npm run dev
|
||||
|
||||
# build for production and launch server
|
||||
$ npm run build
|
||||
$ npm start
|
||||
|
||||
# generate static project
|
||||
$ npm run generate
|
||||
```
|
||||
|
||||
For detailed explanation on how things work, checkout the [Nuxt.js docs](https://github.com/nuxt/nuxt.js).
|
||||
|
9
assets/README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# ASSETS
|
||||
|
||||
This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/assets#webpacked
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
4
assets/img/.directory
Normal file
|
@ -0,0 +1,4 @@
|
|||
[Dolphin]
|
||||
PreviewsShown=true
|
||||
Timestamp=2018,9,4,20,1,55
|
||||
Version=4
|
BIN
assets/img/account.png
Normal file
After Width: | Height: | Size: 422 B |
BIN
assets/img/add.png
Normal file
After Width: | Height: | Size: 166 B |
BIN
assets/img/backward.png
Normal file
After Width: | Height: | Size: 416 B |
BIN
assets/img/barrier.png
Normal file
After Width: | Height: | Size: 156 B |
BIN
assets/img/bell.png
Normal file
After Width: | Height: | Size: 340 B |
BIN
assets/img/close.png
Normal file
After Width: | Height: | Size: 370 B |
BIN
assets/img/delete.png
Normal file
After Width: | Height: | Size: 159 B |
BIN
assets/img/edit.png
Normal file
After Width: | Height: | Size: 403 B |
BIN
assets/img/forward.png
Normal file
After Width: | Height: | Size: 447 B |
BIN
assets/img/grid.png
Normal file
After Width: | Height: | Size: 169 B |
BIN
assets/img/heart.png
Normal file
After Width: | Height: | Size: 499 B |
BIN
assets/img/instructions.png
Normal file
After Width: | Height: | Size: 180 B |
BIN
assets/img/octagon.png
Normal file
After Width: | Height: | Size: 342 B |
BIN
assets/img/ok.png
Normal file
After Width: | Height: | Size: 286 B |
BIN
assets/img/pixel.png
Normal file
After Width: | Height: | Size: 165 B |
BIN
assets/img/poke.png
Normal file
After Width: | Height: | Size: 613 B |
BIN
assets/img/save.png
Normal file
After Width: | Height: | Size: 204 B |
BIN
assets/img/save_as.png
Normal file
After Width: | Height: | Size: 257 B |
BIN
assets/img/search.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
assets/img/settings.png
Normal file
After Width: | Height: | Size: 719 B |
BIN
assets/img/speaker.png
Normal file
After Width: | Height: | Size: 507 B |
BIN
assets/img/squares.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
assets/img/star_empty.png
Normal file
After Width: | Height: | Size: 305 B |
BIN
assets/img/star_full.png
Normal file
After Width: | Height: | Size: 287 B |
BIN
assets/img/triangle.png
Normal file
After Width: | Height: | Size: 410 B |
BIN
assets/img/tumblr_p4sw2gbcZh1wat9beo1_75sq.png
Normal file
After Width: | Height: | Size: 554 B |
BIN
assets/img/tumblr_p4sw3adRSC1wat9beo1_75sq.png
Normal file
After Width: | Height: | Size: 467 B |
BIN
assets/img/tumblr_p54it4CrqO1wat9beo1_75sq.png
Normal file
After Width: | Height: | Size: 526 B |
38
assets/js/bjorklund.js
Normal file
|
@ -0,0 +1,38 @@
|
|||
bjorklund(slots, pulses) {
|
||||
var pattern = [],
|
||||
count = [],
|
||||
remainder = [pulses],
|
||||
divisor = slots - pulses,
|
||||
level = 0,
|
||||
build_pattern = function(lv) {
|
||||
if (lv == -1) {
|
||||
pattern.push(0);
|
||||
} else if (lv == -2) {
|
||||
pattern.push(1);
|
||||
} else {
|
||||
for (var x = 0; x < count[lv]; x++) {
|
||||
build_pattern(lv - 1);
|
||||
}
|
||||
|
||||
if (remainder[lv]) {
|
||||
build_pattern(lv - 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
while (remainder[level] > 1) {
|
||||
count.push(Math.floor(divisor / remainder[level]));
|
||||
remainder.push(divisor % remainder[level]);
|
||||
divisor = remainder[level];
|
||||
level++;
|
||||
}
|
||||
count.push(divisor);
|
||||
|
||||
build_pattern(level);
|
||||
|
||||
return pattern.reverse();
|
||||
},
|
||||
assignEuclidean: function(a, b) {
|
||||
this.euclideanList = this.bjorklund(a, b);
|
||||
console.log(this.euclideanList);
|
||||
}
|
||||
}
|
80
components/AppLogo.vue
Normal file
|
@ -0,0 +1,80 @@
|
|||
<template>
|
||||
<div class="VueToNuxtLogo">
|
||||
<div class="Triangle Triangle--two"/>
|
||||
<div class="Triangle Triangle--one"/>
|
||||
<div class="Triangle Triangle--three"/>
|
||||
<div class="Triangle Triangle--four"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.VueToNuxtLogo {
|
||||
display: inline-block;
|
||||
animation: turn 2s linear forwards 1s;
|
||||
transform: rotateX(180deg);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
height: 180px;
|
||||
width: 245px;
|
||||
}
|
||||
|
||||
.Triangle {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.Triangle--one {
|
||||
border-left: 105px solid transparent;
|
||||
border-right: 105px solid transparent;
|
||||
border-bottom: 180px solid #41B883;
|
||||
}
|
||||
|
||||
.Triangle--two {
|
||||
top: 30px;
|
||||
left: 35px;
|
||||
animation: goright 0.5s linear forwards 3.5s;
|
||||
border-left: 87.5px solid transparent;
|
||||
border-right: 87.5px solid transparent;
|
||||
border-bottom: 150px solid #3B8070;
|
||||
}
|
||||
|
||||
.Triangle--three {
|
||||
top: 60px;
|
||||
left: 35px;
|
||||
animation: goright 0.5s linear forwards 3.5s;
|
||||
border-left: 70px solid transparent;
|
||||
border-right: 70px solid transparent;
|
||||
border-bottom: 120px solid #35495E;
|
||||
}
|
||||
|
||||
.Triangle--four {
|
||||
top: 120px;
|
||||
left: 70px;
|
||||
animation: godown 0.5s linear forwards 3s;
|
||||
border-left: 35px solid transparent;
|
||||
border-right: 35px solid transparent;
|
||||
border-bottom: 60px solid #fff;
|
||||
}
|
||||
|
||||
@keyframes turn {
|
||||
100% {
|
||||
transform: rotateX(0deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes godown {
|
||||
100% {
|
||||
top: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes goright {
|
||||
100% {
|
||||
left: 70px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
7
components/README.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# COMPONENTS
|
||||
|
||||
The components directory contains your Vue.js Components.
|
||||
Nuxt.js doesn't supercharge these components.
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
40
components/beat-method.vue
Normal file
|
@ -0,0 +1,40 @@
|
|||
<!--
|
||||
<template>
|
||||
<div class="beat" v-for="i in divisioni" :key="i">
|
||||
<div class="subdivision" :style="background-color: colore">{{randomColore()}}</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'beat',
|
||||
data() {
|
||||
colore: "#333333",
|
||||
tono: "332", // mHz
|
||||
durata: "1", // s
|
||||
divisioni: "2e" + random(1,8) / 2
|
||||
},
|
||||
components: {
|
||||
},
|
||||
methods: {
|
||||
randomColore: function(){
|
||||
var generatedColor = "red";
|
||||
this.colore = generatedColor;
|
||||
}
|
||||
},
|
||||
}}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.beat{
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border:1pt solid #333333;
|
||||
}
|
||||
|
||||
.active{
|
||||
background-color:black;
|
||||
}
|
||||
</style>
|
||||
-->
|
92
components/beat.vue
Normal file
|
@ -0,0 +1,92 @@
|
|||
<template>
|
||||
<div class="beat-wrapper">
|
||||
<input v-model="divisioni" type="number" min="1" oninput="validity.valid||(value='');">
|
||||
<!--- trovare modo per prevenire scrittura di input-->
|
||||
<div class="division-wrapper">
|
||||
<div class="beat" v-for="j in nDivisioni" :key='j'>
|
||||
<div>{{randomColori()}}</div>
|
||||
<div class="suddivisione" :style="{'background-color': colore }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <beatMenu></beatMenu>-->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'beat',
|
||||
data() {
|
||||
return {
|
||||
colore: 'red',
|
||||
divisioni: 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
nDivisioni() {
|
||||
var n = parseInt(this.divisioni);
|
||||
return isNaN(n) ? 0 : n;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
checkDivisioni: function (){
|
||||
console.log("numero dell'input è" + this.nDivisioni)
|
||||
},
|
||||
randomColori: function (){
|
||||
var letters = '0123456789ABCDEF';
|
||||
var color = '#';
|
||||
for (var i = 0; i < 6; i++) {
|
||||
color += letters[Math.floor(Math.random() * 16)];
|
||||
}
|
||||
console.log(color);
|
||||
this.colore = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.beat{
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.active{
|
||||
background-color:black;
|
||||
}
|
||||
|
||||
input {
|
||||
background:transparent;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.division-wrapper {
|
||||
flex:1 1 auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.beat {
|
||||
height:1em;
|
||||
display:flex;
|
||||
flex:1 1 auto;
|
||||
}
|
||||
|
||||
.suddivisione{
|
||||
flex:1 1 auto;
|
||||
border:none;
|
||||
}
|
||||
|
||||
input[type=number]::-webkit-inner-spin-button,
|
||||
input[type=number]::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input[type=number] {
|
||||
-moz-appearance:textfield;
|
||||
padding-left:0.2em;
|
||||
color:lightgray;
|
||||
border:none;
|
||||
}
|
||||
</style>
|
26
components/beatMenu.vue
Normal file
|
@ -0,0 +1,26 @@
|
|||
<template>
|
||||
<div class="beatMenu" style="width:15em;height:5em;border-radius:0.5em;margin:1em;background:cadetblue">
|
||||
<input style="" id="quanteSuddivisioni" v-model="divisioni" type="number">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'beatMenu',
|
||||
data() {
|
||||
return {
|
||||
colore: 'red',
|
||||
divisioni: 1
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
Pluto: function (){
|
||||
},
|
||||
Pippo: function (){
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
0
components/fixedBeat.vue
Normal file
164
components/sequencer.vue
Normal file
|
@ -0,0 +1,164 @@
|
|||
<template>
|
||||
<section class="sequencer" v-on:mouseover="displayControls()" v-on:mouseleave="hideControls()" >
|
||||
<div class="sequencerLine">
|
||||
<div class="slot-wrapper">
|
||||
<div class="slot" v-for="i in slotSlider" :key='i' >
|
||||
<beat v-if="euclideanList[i] === 1"></beat>
|
||||
<div v-else class="activeSlot"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="control-menu" :class="[{'displayControls': controlIsDisplayed}]">
|
||||
<range-slider class="slider" min="1" :max="maxSlots" step="1" v-model="slotSlider" v-on:input="assignEuclidean(slotSlider, pulseSlider)" ></range-slider>
|
||||
<input id="pulseSlider" v-model="maxSlots" />
|
||||
<range-slider class="slider" min="1" :max="slotSlider" step="1" v-model="pulseSlider" v-on:input ="assignEuclidean(slotSlider, pulseSlider)" ></range-slider>
|
||||
<input id="pulseSlider" value="3" v-model="assignBeat" />
|
||||
</div>
|
||||
<!---
|
||||
<div style="background-color:firebrick">
|
||||
<input type="range" class="slider" min="1" max="32" step="1" v-model="slotSlider" v-on:change="assignEuclidean(slotSlider, pulseSlider)" />
|
||||
<input type="range" class="slider" min="1" :max="slotSlider" step="1" v-model="pulseSlider" v-on:change="assignEuclidean(slotSlider, pulseSlider)" />
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RangeSlider from 'vue-range-slider'
|
||||
// you probably need to import built-in style
|
||||
import 'vue-range-slider/dist/vue-range-slider.css'
|
||||
import beat from '~/components/beat.vue'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return{
|
||||
slotSlider: 16,
|
||||
pulseSlider: 3,
|
||||
euclideanList:[],
|
||||
controlIsDisplayed:false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
RangeSlider,
|
||||
beat
|
||||
},
|
||||
methods: {
|
||||
displayControls: function (){
|
||||
this.controlIsDisplayed = true;
|
||||
},
|
||||
hideControls: function (){
|
||||
this.controlIsDisplayed = false;
|
||||
},
|
||||
bjorklund: function (slots, pulses) {
|
||||
|
||||
var pattern = [],
|
||||
count = [],
|
||||
remainder = [pulses],
|
||||
divisor = slots - pulses,
|
||||
level = 0,
|
||||
build_pattern = function(lv) {
|
||||
if (lv == -1) {
|
||||
pattern.push(0);
|
||||
} else if (lv == -2) {
|
||||
pattern.push(1);
|
||||
} else {
|
||||
for (var x = 0; x < count[lv]; x++) {
|
||||
build_pattern(lv - 1);
|
||||
}
|
||||
|
||||
if (remainder[lv]) {
|
||||
build_pattern(lv - 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
while (remainder[level] > 1) {
|
||||
count.push(Math.floor(divisor / remainder[level]));
|
||||
remainder.push(divisor % remainder[level]);
|
||||
divisor = remainder[level];
|
||||
level++;
|
||||
}
|
||||
count.push(divisor);
|
||||
|
||||
build_pattern(level);
|
||||
|
||||
return pattern.reverse();},
|
||||
assignEuclidean: function (a,b) {
|
||||
this.euclideanList = this.bjorklund(a,b);
|
||||
console.log(this.euclideanList);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: "Quicksand", "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* 1 */
|
||||
display: block;
|
||||
font-weight: 300;
|
||||
font-size: 100px;
|
||||
color: #35495e;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-weight: 300;
|
||||
font-size: 42px;
|
||||
color: #526488;
|
||||
word-spacing: 5px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.links {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.active{
|
||||
background-color:black;
|
||||
width:100%;
|
||||
height:40%
|
||||
}
|
||||
|
||||
.control-menu{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.slider{
|
||||
width:30%;
|
||||
}
|
||||
|
||||
.displayControls{
|
||||
display:flex !important;
|
||||
}
|
||||
|
||||
.slot-wrapper{
|
||||
display:flex;
|
||||
height:3em;
|
||||
width:auto;
|
||||
background-color:firebrick;
|
||||
}
|
||||
|
||||
.slot{
|
||||
flex:1 1 auto;
|
||||
background-color:beige;
|
||||
border-left:1pt solid aquamarine;
|
||||
border-right:1pt solid aquamarine;
|
||||
border-top: transparent !important;
|
||||
border-bottom: transparent !important;
|
||||
}
|
||||
|
||||
.activeSlot{
|
||||
flex:1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
</style>
|
156
components/sequencerDivided.vue
Normal file
|
@ -0,0 +1,156 @@
|
|||
<template>
|
||||
<section class="sequencer" v-on:mouseover="displayControls()" v-on:mouseleave="hideControls()" >
|
||||
<div class="sequencerLine">
|
||||
<div class="slot-wrapper">
|
||||
<div class="slot" v-for="i in slotSlider" :key='i' >
|
||||
<beat />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="control-menu" :class="[{'displayControls': controlIsDisplayed}]">
|
||||
<range-slider class="slider" min="1" :max="maxSlots" step="1" v-model="slotSlider" v-on:input="assignEuclidean(slotSlider, pulseSlider)" ></range-slider>
|
||||
<input id="pulseSlider" v-model="maxSlots" />
|
||||
<range-slider class="slider" min="1" :max="slotSlider" step="1" v-model="pulseSlider" v-on:input ="assignEuclidean(slotSlider, pulseSlider)" ></range-slider>
|
||||
<input id="pulseSlider" value="3" v-model="assignBeat" />
|
||||
</div>
|
||||
<!---
|
||||
<div style="background-color:firebrick">
|
||||
<input type="range" class="slider" min="1" max="32" step="1" v-model="slotSlider" v-on:change="assignEuclidean(slotSlider, pulseSlider)" />
|
||||
<input type="range" class="slider" min="1" :max="slotSlider" step="1" v-model="pulseSlider" v-on:change="assignEuclidean(slotSlider, pulseSlider)" />
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RangeSlider from 'vue-range-slider'
|
||||
// you probably need to import built-in style
|
||||
import 'vue-range-slider/dist/vue-range-slider.css'
|
||||
import beat from '~/components/beat.vue'
|
||||
|
||||
export default {
|
||||
name: 'sequencerDivided',
|
||||
data() {
|
||||
return{
|
||||
slotSlider: 16,
|
||||
pulseSlider: 3,
|
||||
euclideanList:[],
|
||||
controlIsDisplayed:false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
RangeSlider,
|
||||
beat
|
||||
},
|
||||
methods: {
|
||||
displayControls: function (){
|
||||
this.controlIsDisplayed = true;
|
||||
},
|
||||
hideControls: function (){
|
||||
this.controlIsDisplayed = false;
|
||||
},
|
||||
bjorklund: function (slots, pulses) {
|
||||
|
||||
var pattern = [],
|
||||
count = [],
|
||||
remainder = [pulses],
|
||||
divisor = slots - pulses,
|
||||
level = 0,
|
||||
build_pattern = function(lv) {
|
||||
if (lv == -1) {
|
||||
pattern.push(0);
|
||||
} else if (lv == -2) {
|
||||
pattern.push(1);
|
||||
} else {
|
||||
for (var x = 0; x < count[lv]; x++) {
|
||||
build_pattern(lv - 1);
|
||||
}
|
||||
|
||||
if (remainder[lv]) {
|
||||
build_pattern(lv - 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
while (remainder[level] > 1) {
|
||||
count.push(Math.floor(divisor / remainder[level]));
|
||||
remainder.push(divisor % remainder[level]);
|
||||
divisor = remainder[level];
|
||||
level++;
|
||||
}
|
||||
count.push(divisor);
|
||||
|
||||
build_pattern(level);
|
||||
|
||||
return pattern.reverse();},
|
||||
assignEuclidean: function (a,b) {
|
||||
this.euclideanList = this.bjorklund(a,b);
|
||||
console.log(this.euclideanList);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: "Quicksand", "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* 1 */
|
||||
display: block;
|
||||
font-weight: 300;
|
||||
font-size: 100px;
|
||||
color: #35495e;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-weight: 300;
|
||||
font-size: 42px;
|
||||
color: #526488;
|
||||
word-spacing: 5px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.links {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.active{
|
||||
background-color:black;
|
||||
width:100%;
|
||||
height:40%
|
||||
}
|
||||
|
||||
.control-menu{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.displayControls{
|
||||
display:block;
|
||||
}
|
||||
|
||||
.slot-wrapper{
|
||||
display:flex;
|
||||
height:3em;
|
||||
width:auto;
|
||||
background-color:firebrick;
|
||||
}
|
||||
.slot{
|
||||
flex:1 1 auto;
|
||||
background-color:beige;
|
||||
border:1pt solid aquamarine;
|
||||
}
|
||||
|
||||
beat{
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
flex:1 1 auto;
|
||||
}
|
||||
</style>
|
BIN
gadgetyClement.tar
Normal file
9
layouts/README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# LAYOUTS
|
||||
|
||||
This directory contains your Application Layouts.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/views#layouts
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
53
layouts/default.vue
Normal file
|
@ -0,0 +1,53 @@
|
|||
<template>
|
||||
<div>
|
||||
<nuxt/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
html {
|
||||
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
font-size: 16px;
|
||||
word-spacing: 1px;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
*, *:before, *:after {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.button--green {
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #3b8070;
|
||||
color: #3b8070;
|
||||
text-decoration: none;
|
||||
padding: 10px 30px;
|
||||
}
|
||||
|
||||
.button--green:hover {
|
||||
color: #fff;
|
||||
background-color: #3b8070;
|
||||
}
|
||||
|
||||
.button--grey {
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #35495e;
|
||||
color: #35495e;
|
||||
text-decoration: none;
|
||||
padding: 10px 30px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.button--grey:hover {
|
||||
color: #fff;
|
||||
background-color: #35495e;
|
||||
}
|
||||
</style>
|
||||
|
10
middleware/README.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
# MIDDLEWARE
|
||||
|
||||
This directory contains your Application Middleware.
|
||||
The middleware lets you define custom function to be ran before rendering a page or a group of pages (layouts).
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/routing#middleware
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
39
nuxt.config.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
module.exports = {
|
||||
/*
|
||||
** Headers of the page
|
||||
*/
|
||||
head: {
|
||||
title: 'nuxtgety-2',
|
||||
meta: [
|
||||
{ charset: 'utf-8' },
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||
{ hid: 'description', name: 'description', content: 'Second attempt at building a web interface for ESP8266' }
|
||||
],
|
||||
link: [
|
||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
||||
]
|
||||
},
|
||||
/*
|
||||
** Customize the progress bar color
|
||||
*/
|
||||
loading: { color: '#3B8070' },
|
||||
/*
|
||||
** Build configuration
|
||||
*/
|
||||
build: {
|
||||
/*
|
||||
** Run ESLint on save
|
||||
*/
|
||||
extend (config, { isDev, isClient }) {
|
||||
if (isDev && isClient) {
|
||||
config.module.rules.push({
|
||||
enforce: 'pre',
|
||||
test: /\.(js|vue)$/,
|
||||
loader: 'eslint-loader',
|
||||
exclude: /(node_modules)/
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
28
package.json
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"name": "nuxtgety-2",
|
||||
"version": "1.0.0",
|
||||
"description": "Second attempt at building a web interface for ESP8266",
|
||||
"author": "Fabio Bernardi",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "nuxt",
|
||||
"build": "nuxt build",
|
||||
"start": "nuxt start",
|
||||
"generate": "nuxt generate",
|
||||
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
|
||||
"precommit": "npm run lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"nuxt": "^1.0.0",
|
||||
"vue-material": "^1.0.0-beta-10.2",
|
||||
"vue-range-slider": "^0.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-eslint": "^8.2.1",
|
||||
"eslint": "^4.15.0",
|
||||
"eslint-friendly-formatter": "^3.0.0",
|
||||
"eslint-loader": "^1.7.1",
|
||||
"eslint-plugin-vue": "^4.0.0",
|
||||
"vue-input-number": "^0.1.5"
|
||||
}
|
||||
}
|
8
pages/README.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
# PAGES
|
||||
|
||||
This directory contains your Application Views and Routes.
|
||||
The framework reads all the .vue files inside this directory and creates the router of your application.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/routing
|
||||
|
57
pages/index.vue
Normal file
|
@ -0,0 +1,57 @@
|
|||
<template>
|
||||
<div id="app">
|
||||
<h2 class="subtitle">
|
||||
Second attempt at building a web interface for ESP8266
|
||||
</h2>
|
||||
<sequencer></sequencer>
|
||||
<sequencer></sequencer>
|
||||
<sequencer></sequencer>
|
||||
<sequencer></sequencer>
|
||||
<div class="icon-wrapper">
|
||||
<div class="icon-button">
|
||||
<img style="margin:auto;" src="~/assets/img/barrier.png">
|
||||
</div>
|
||||
<div class="icon-button">
|
||||
<img style="margin:auto;" src="~/assets/img/pixel.png">
|
||||
</div>
|
||||
<div class="icon-button">
|
||||
<img style="margin:auto;" src="~/assets/img/squares.png">
|
||||
</div>
|
||||
<div class="icon-button">
|
||||
<img style="margin:auto;" src="~/assets/img/bell.png">
|
||||
</div>
|
||||
<div class="icon-button">
|
||||
<img style="margin:auto;" src="~/assets/img/add.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import sequencer from '~/components/sequencer.vue'
|
||||
import sequencerDivided from '~/components/sequencerDivided.vue'
|
||||
import beatMenu from '~/components/beatMenu.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
sequencer,
|
||||
sequencerDivided,
|
||||
beatMenu
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.icon-button{
|
||||
display:flex;
|
||||
background-color:red;
|
||||
width:3em;
|
||||
height:3em;
|
||||
border-radius:3em;
|
||||
margin:0.2em;
|
||||
}
|
||||
|
||||
.icon-wrapper{
|
||||
display:flex;
|
||||
}
|
||||
</style>
|
9
plugins/README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# PLUGINS
|
||||
|
||||
This directory contains your Javascript plugins that you want to run before instantiating the root vue.js application.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/plugins
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
12
static/README.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# STATIC
|
||||
|
||||
This directory contains your static files.
|
||||
Each file inside this directory is mapped to /.
|
||||
|
||||
Example: /static/robots.txt is mapped as /robots.txt.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/assets#static
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
BIN
static/favicon.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
11
store/README.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
# STORE
|
||||
|
||||
This directory contains your Vuex Store files.
|
||||
Vuex Store option is implemented in the Nuxt.js framework.
|
||||
Creating a index.js file in this directory activate the option in the framework automatically.
|
||||
|
||||
More information about the usage of this directory in the documentation:
|
||||
https://nuxtjs.org/guide/vuex-store
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|