This commit is contained in:
ed barz 2022-06-13 08:28:46 +02:00
parent be51faf351
commit 6e301d88fc
15 changed files with 690 additions and 187 deletions

View File

@ -0,0 +1,78 @@
body {
overflow-y: scroll;
}
#edit-tab-nav {
position: relative;
display: flex;
flex-direction: row;
justify-content: space-around;
margin-bottom: 20px;
}
#edit-tab-nav-marker {
position: absolute;
height: 5px;
left: 0px;
width: 0px;
background-color: var(--b9h-color-accent);
bottom: -20px;
transition: 0.5s;
}
#edit-tab-roll {
width: 200vw;
display: flex;
flex-direction: row;
transform: translateX(-0vw);
transition: transform 0.5s;
}
.edit-single-tab {
width: 100vw;
padding: 10px;
}
.edit-single-tab li {
margin-left: 30px;
list-style: none;
}
.edit-single-tab h4 {
margin-bottom: 10px;
}
.edit-tab-nav-link {
font-weight: 600;
font-size: 1.2rem;
}
header {
height: auto;
margin-bottom: 20px;
}
input[type=text]{
display: block;
font-size: 1em;
font-family: Inter;
font-weight: 400;
margin-top: 5px;
margin-bottom: 10px;
padding-left: 5px;
border: 0px solid #ccc;
background-color: #e6e6e6;
border-radius: 0px;
}
.ing-input-lang {
margin-left: 20px;
}
.ing-form-save {
display: block;
margin-top: 30px;
font-size: 1.5rem;
cursor: pointer;
}

101
proj/map/asset/js/edit.js Normal file
View File

@ -0,0 +1,101 @@
Vue.component('NewIng',{
template : `
<div class="ingredient__form">
<input v-model="text">
</div>
`,
props : {
obj : Object
},
data () {
return {
name : "name",
fr : "fr",
en : "en",
it : "it",
}
},
methods : {
hello(){
return "hello"
},
}
})
let vm = new Vue({
el: '#root',
data : {
message: "Hello Vue",
editTabMarkerL: "0px",
editTabMarkerW: "0px",
editTabRollXOff: 0,
newIng: {
name: "",
fr: "",
en: "",
it: "",
}
},
methods: {
obj2php: function(obj) {
data = JSON.stringify(obj)
r = new XMLHttpRequest
r.open("POST", "asset/php/handler.php", true)
r.setRequestHeader(
"Content-type",
"application/json")
r.send(data)
},
saveIng: function() {
if (this.newIng.name !== "") {
ingredients[this.newIng.name] = {
fr: this.newIng.fr,
en: this.newIng.en,
it: this.newIng.it,
}
}
this.obj2php(ingredients)
},
setEditTab: function(ind) {
let xoff = 0
switch(ind){
case 'ind':
xoff = 0;
break;
case 'dish':
xoff = 1;
break;
case 'resto':
xoff = 0;
break;
}
this.editTabRollXOff = xoff
m = document.getElementById("edit-tab-nav-" + ind)
this.editTabMarkerL = m.offsetLeft + "px"
this.editTabMarkerW = m.offsetWidth + "px"
}
},
computed: {
editTabRollTransX: function () {
return "translateX(-" + this.editTabRollXOff + "00vw)";
},
},
created: function(){
console.log("created start")
console.log("created end")
},
mounted: function() {
console.log("mounted start")
this.setEditTab('ing')
console.log("mounted end")
},
updated: function() {
console.log("updated start")
console.log("updated end")
}
})

View File

@ -1,4 +1,4 @@
let ingredients = { let ingredientsold = {
tomate : { tomate : {
fr: "tomate", fr: "tomate",
en: "tomato", en: "tomato",

View File

@ -2,6 +2,7 @@ Vue.component('Prototab',{
template : ` template : `
<div class="tabprixcontent"> <div class="tabprixcontent">
</div> </div>
`, `,
props : { props : {
@ -598,11 +599,9 @@ Vue.component('Accordeon', {
switch(obj.tabtype) { switch(obj.tabtype) {
case "menu": case "menu":
return "byl-icon-restaurant" return "byl-icon-restaurant"
// code block
break; break;
case "time": case "time":
return "byl-icon-clock" return "byl-icon-clock"
// code block
break; break;
case "info": case "info":
return "byl-icon-info" return "byl-icon-info"
@ -611,7 +610,7 @@ Vue.component('Accordeon', {
return "byl-icon-euro_symbol" return "byl-icon-euro_symbol"
break; break;
default: default:
// code block return ""
} }
}, },
showCard() { showCard() {
@ -640,17 +639,6 @@ Vue.component('Accordeon', {
}, },
}) })
const jsonurl = "https://ed.brz9.dev/proj/map/asset/json/db.json"
/*
let jdnb
fetch(jsonurl)
.then(res => res.json())
.then(data => jdnb = data)
*/
let vm = new Vue({ let vm = new Vue({
el: '#root', el: '#root',
data : jdb.data, data : jdb.data,

View File

@ -1,81 +0,0 @@
{
"db" : {
"restaurants" : {
"id" : "resto",
"type" : "list",
"nameFR" : "Restaurant",
"nameEN" : "Restaurant",
"nameIT" : "Ristoranti",
"sub" : {
"italiens" : {
"id": "restoital",
"type" : "list",
"nameFR" : "Italien",
"nameEN" : "Italian",
"nameIT" : "Italiano",
"sub" : {
"SanTelmo" : {
"id": "santelmo",
"type" : "item",
"name": "Sant Elmo",
"img": "https://ed.brz9.dev/proj/map/asset/img/santelmo.jpg",
"txtFR": "Français Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtEN": "English Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtIT": "Italiano Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"card" : {
"tabs" : {
"menu" : {
"priceRange" : "18-32€",
"dishes" : {
"divola" : {
"name" : "Pizza Divola"
},
"regina" : {
"name" : "Pizza Regina"
}
}
},
"time" : {
"monAM" : "11h30-14h00",
"monPM" : "18h30-22h00"
}
}
}
},
"Salsamenteria" : {
"id" : "salsamenteria",
"type" : "item",
"name" : "Salsamenteria di Parma",
"img" : "https://ed.brz9.dev/proj/map/asset/img/salsamentiera.jpg",
"txtFR" : "Français Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtEN" : "English Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtIT" : "Italiano Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies."
}
}
},
"vege" : {
"id" : "restovege",
"type" : "list",
"nameFR" : "Végétarien",
"nameEN" : "Vegan",
"nameIT" : "Vegetariano",
"sub" : {
"SanTelmo" : {
"id": "santelmo",
"type" : "item",
"name": "San Telmo"
},
"Salsamenteria" : {
"id": "salsamenteria",
"type" : "item",
"name" : "Salsamenteria di Parma"
}
}
}
}
}
}
}

View File

@ -1,91 +0,0 @@
<?php
header('Content-type: application/json');
header("Access-Control-Allow-Origin: *");
echo '
{
"db" : {
"restaurants" : {
"id" : "resto",
"type" : "list",
"nameFR" : "Restaurant",
"nameEN" : "Restaurant",
"nameIT" : "Ristoranti",
"sub" : {
"italiens" : {
"id": "restoital",
"type" : "list",
"nameFR" : "Italien",
"nameEN" : "Italian",
"nameIT" : "Italiano",
"sub" : {
"SanTelmo" : {
"id": "santelmo",
"type" : "item",
"name": "Sant Elmo",
"img": "https://ed.brz9.dev/proj/map/asset/img/santelmo.jpg",
"txtFR": "Français Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtEN": "English Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtIT": "Italiano Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"card" : {
"tabs" : {
"menu" : {
"priceRange" : "18-32€",
"dishes" : {
"divola" : {
"name" : "Pizza Divola"
},
"regina" : {
"name" : "Pizza Regina"
}
}
},
"time" : {
"monAM" : "11h30-14h00",
"monPM" : "18h30-22h00"
}
}
}
},
"Salsamenteria" : {
"id" : "salsamenteria",
"type" : "item",
"name" : "Salsamenteria di Parma",
"img" : "https://ed.brz9.dev/proj/map/asset/img/salsamentiera.jpg",
"txtFR" : "Français Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtEN" : "English Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies.",
"txtIT" : "Italiano Adipisicing live-edge fam velit. Messenger bag poke laboris aesthetic viral do semiotics authentic est selfies."
}
}
},
"vege" : {
"id" : "restovege",
"type" : "list",
"nameFR" : "Végétarien",
"nameEN" : "Vegan",
"nameIT" : "Vegetariano",
"sub" : {
"SanTelmo" : {
"id": "santelmo",
"type" : "item",
"name": "San Telmo"
},
"Salsamenteria" : {
"id": "salsamenteria",
"type" : "item",
"name" : "Salsamenteria di Parma"
}
}
}
}
}
}
}
';
?>

View File

@ -0,0 +1,137 @@
{
"tomate": {
"fr": "tomate",
"en": "tomato",
"it": "pomodoro"
},
"mozzarella": {
"fr": "mozzarella",
"en": "mozzarella",
"it": "mozzarella"
},
"mozzarellaBufala": {
"fr": "mozzarella de bufflonne",
"en": "buffalo's mozzarella",
"it": "mozzarella di bufala"
},
"saucissecalabraisepiquante": {
"fr": "saucisse calabraise piquante",
"en": "spicy sausage",
"it": "sopressata calabrese piccante"
},
"jambonblanc": {
"fr": "jambon blanc",
"en": "white ham",
"it": "prosciutto cotto"
},
"champignons": {
"fr": "champignons",
"en": "mushrooms",
"it": "funghi"
},
"provoletta": {
"fr": "provoletta",
"en": "provoletta",
"it": "provoletta"
},
"salsiccia": {
"fr": "chaire à saucisse",
"en": "sausage",
"it": "salsiccia"
},
"chimichurri": {
"fr": "chimichurri",
"en": "chimichurri",
"it": "chimichurri"
},
"gorgonzola": {
"fr": "gorgonzola",
"en": "gorgonzola",
"it": "gorgonzola"
},
"parma": {
"fr": "parma",
"en": "jambon de Parme",
"it": "Parma ham"
},
"noix": {
"fr": "noix",
"en": "nuts",
"it": "noci"
},
"caprino": {
"fr": "fromage de chèvre",
"en": "goat cheese",
"it": "caprino"
},
"honey": {
"fr": "miel",
"en": "honey",
"it": "miele"
},
"bresaola": {
"fr": "bresaola",
"en": "bresaola",
"it": "bresaola"
},
"roquette": {
"fr": "roquette",
"en": "aragula salad",
"it": "rucola"
},
"crudaioladipomodoro": {
"fr": "tomates fraîches concassées",
"en": "fresh tomatoes",
"it": "crudaiola di pomodoro"
},
"burrata": {
"fr": "burrata",
"en": "burrata",
"it": "burrata"
},
"basilic": {
"fr": "basilic",
"en": "basil",
"it": "basilico"
},
"thon": {
"fr": "thon",
"en": "tuna",
"it": "tono"
},
"cipollaTropea": {
"fr": "oignons rouges de Tropea",
"en": "red onions from Tropea",
"it": "cipolla rossa di Tropea"
},
"aubergines": {
"fr": "aubergines",
"en": "eggplants",
"it": "melanzane"
},
"anchois": {
"fr": "anchois",
"en": "anchovies",
"it": "acciughe"
},
"capres": {
"fr": "câpres",
"en": "capers",
"it": "capperi"
},
"huileextravierge": {
"fr": "huile extra vierge",
"en": "extra olive oil",
"it": "olio extra vergine"
},
"gnochgor": {
"fr": "Gnochi au Gorgonzolla",
"en": "gdlkfgdfg",
"it": "ksflskdfjl"
},
"name": {
"fr": "",
"en": "",
"it": ""
}
}

109
proj/map/asset/php/edit.php Normal file
View File

@ -0,0 +1,109 @@
<!DOCTYPE HTML>
<html>
<head>
<title><?php echo "Maphp";?></title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="asset/leaflet/leaflet.css"/>
<link rel="stylesheet" href="asset/css/style.css"/>
<link rel="stylesheet" href="asset/css/edit.css"/>
<link rel="stylesheet" href="asset/fonts/byl-iconfont-v4.0/icons.css"/>
</head>
<body>
<div id="root">
<header>
<section id="logo">Hôtel Machin</section>
<span> </span>
</header>
<section id="edit-tab-nav">
<span
id="edit-tab-nav-marker"
v-bind:style="{
left : editTabMarkerL,
width : editTabMarkerW
}">
</span>
<span
id="edit-tab-nav-ing"
class="edit-tab-nav-link"
v-on:click="setEditTab('ing')">Ings</span>
<span
id="edit-tab-nav-dish"
class="edit-tab-nav-link"
v-on:click="setEditTab('dish')">Dish</span>
</section>
<section
id="edit-tab-roll"
v-bind:style="{
width : this.tabrollw,
transform : this.editTabRollTransX}">
<section class="edit-single-tab">
<h3>Ingredients</h3>
<input
v-model="newIng.name"
type="text"
placeholder="Nom"
>
<input
v-model="newIng.fr"
class="ing-input-lang"
type="text"
placeholder="fr name"
>
<input
v-model="newIng.en"
class="ing-input-lang"
type="text"
placeholder="en name"
>
<input
v-model="newIng.it"
class="ing-input-lang"
type="text"
placeholder="it name"
>
<span class="byl-icon-save ing-form-save" v-on:click="saveIng()"></span>
<span v-for="i in Object.entries(ingredients)">
<h4>{{ i[0] }}</h4>
<li>fr: {{ i[1]['fr'] }}</li>
<li>en: {{ i[1]['en'] }}</li>
<li>it: {{ i[1]['it'] }}</li>
</span>
</section>
<section class="edit-single-tab">
<h3>Dishes</h3>
</section>
</section>
</div>
<?php include("asset/php/ing.php"); ?>
<script src="asset/js/vue.min.js"></script>
<script src="asset/js/edit.js"></script>
</body>
</html>

View File

@ -0,0 +1,11 @@
<?php
$data = file_get_contents('php://input');
echo $data;
$fn = "asset/output/ing.test";
//file_put_contents($fn, $data);
file_put_contents("test.json", $data);
?>

View File

@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html>
<head>
<title><?php echo "Maphp";?></title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="asset/leaflet/leaflet.css"/>
<link rel="stylesheet" href="asset/css/style.css"/>
<link rel="stylesheet" href="asset/fonts/byl-iconfont-v4.0/icons.css"/>
</head>
<body>
<div id="root">
<header>
<section id="logo">Hôtel Machin</section>
<section id="lang">
<span id="lang-marker" class="marker"></span>
<span id="tab-fr" class="tablabel" v-on:click="setlang('fr')">FR</span>
<span id="tab-en" class="tablabel" v-on:click="setlang('en')">EN</span>
<span id="tab-it" class="tablabel" v-on:click="setlang('it')">IT</span>
</section>
</header>
<section id="map-container">
<div id="map"></div>
</section>
<main>
<div id="list">
<Accordeon v-bind:list="db.parking"></Accordeon>
<div class="sep"></div>
<Accordeon v-bind:list="db.resto" v-bind:taglist="restoTagList"></Accordeon>
<div class="sep"></div>
<!---
<p>Praxis chambray letterpress YOLO truffaut glossier distillery seitan pop-up venmo portland four dollar toast. Meh asymmetrical irony YOLO brooklyn DSA celiac next level microdosing ethical copper mug jianbing coloring book. Banjo keffiyeh +1, ugh organic af snackwave mixtape listicle man bun tacos humblebrag. Vaporware seitan heirloom chartreuse hot chicken lo-fi kinfolk iceland williamsburg. Wayfarers aesthetic air plant, plaid green juice normcore craft beer chambray. Wayfarers glossier letterpress marfa humblebrag pop-up tbh bitters disrupt.</p>
<p>Praxis chambray letterpress YOLO truffaut glossier distillery seitan pop-up venmo portland four dollar toast. Meh asymmetrical irony YOLO brooklyn DSA celiac next level microdosing ethical copper mug jianbing coloring book. Banjo keffiyeh +1, ugh organic af snackwave mixtape listicle man bun tacos humblebrag. Vaporware seitan heirloom chartreuse hot chicken lo-fi kinfolk iceland williamsburg. Wayfarers aesthetic air plant, plaid green juice normcore craft beer chambray. Wayfarers glossier letterpress marfa humblebrag pop-up tbh bitters disrupt.</p>
<p>Praxis chambray letterpress YOLO truffaut glossier distillery seitan pop-up venmo portland four dollar toast. Meh asymmetrical irony YOLO brooklyn DSA celiac next level microdosing ethical copper mug jianbing coloring book. Banjo keffiyeh +1, ugh organic af snackwave mixtape listicle man bun tacos humblebrag. Vaporware seitan heirloom chartreuse hot chicken lo-fi kinfolk iceland williamsburg. Wayfarers aesthetic air plant, plaid green juice normcore craft beer chambray. Wayfarers glossier letterpress marfa humblebrag pop-up tbh bitters disrupt.</p>
-->
</div>
</main>
</div>
<?php include("asset/php/ing.php"); ?>
<script src="asset/js/vue.min.js"></script>
<script src="asset/leaflet/leaflet.js"></script>
<script src="asset/js/ingredients.js "></script>
<script src="asset/js/dishes.js "></script>
<script src="asset/js/resto.js"></script>
<script src="asset/js/parking.js"></script>
<script src="asset/js/db.js"></script>
<script src="asset/js/main.js"></script>
<script src="asset/js/map.js"></script>
</body>
</html>

View File

@ -0,0 +1,14 @@
<?php
$data_ing = file_get_contents("asset/json/ing.json");
echo '
<script>
let jing = `'. $data_ing .'`;
let ingredients = JSON.parse(jing)
</script>
';
?>

View File

@ -0,0 +1,142 @@
{
"tomate": {
"fr": "tomate",
"en": "tomato",
"it": "pomodoro"
},
"mozzarella": {
"fr": "mozzarella",
"en": "mozzarella",
"it": "mozzarella"
},
"mozzarellaBufala": {
"fr": "mozzarella de bufflonne",
"en": "buffalo's mozzarella",
"it": "mozzarella di bufala"
},
"saucissecalabraisepiquante": {
"fr": "saucisse calabraise piquante",
"en": "spicy sausage",
"it": "sopressata calabrese piccante"
},
"jambonblanc": {
"fr": "jambon blanc",
"en": "white ham",
"it": "prosciutto cotto"
},
"champignons": {
"fr": "champignons",
"en": "mushrooms",
"it": "funghi"
},
"provoletta": {
"fr": "provoletta",
"en": "provoletta",
"it": "provoletta"
},
"salsiccia": {
"fr": "chaire à saucisse",
"en": "sausage",
"it": "salsiccia"
},
"chimichurri": {
"fr": "chimichurri",
"en": "chimichurri",
"it": "chimichurri"
},
"gorgonzola": {
"fr": "gorgonzola",
"en": "gorgonzola",
"it": "gorgonzola"
},
"parma": {
"fr": "parma",
"en": "jambon de Parme",
"it": "Parma ham"
},
"noix": {
"fr": "noix",
"en": "nuts",
"it": "noci"
},
"caprino": {
"fr": "fromage de chèvre",
"en": "goat cheese",
"it": "caprino"
},
"honey": {
"fr": "miel",
"en": "honey",
"it": "miele"
},
"bresaola": {
"fr": "bresaola",
"en": "bresaola",
"it": "bresaola"
},
"roquette": {
"fr": "roquette",
"en": "aragula salad",
"it": "rucola"
},
"crudaioladipomodoro": {
"fr": "tomates fraîches concassées",
"en": "fresh tomatoes",
"it": "crudaiola di pomodoro"
},
"burrata": {
"fr": "burrata",
"en": "burrata",
"it": "burrata"
},
"basilic": {
"fr": "basilic",
"en": "basil",
"it": "basilico"
},
"thon": {
"fr": "thon",
"en": "tuna",
"it": "tono"
},
"cipollaTropea": {
"fr": "oignons rouges de Tropea",
"en": "red onions from Tropea",
"it": "cipolla rossa di Tropea"
},
"aubergines": {
"fr": "aubergines",
"en": "eggplants",
"it": "melanzane"
},
"anchois": {
"fr": "anchois",
"en": "anchovies",
"it": "acciughe"
},
"capres": {
"fr": "câpres",
"en": "capers",
"it": "capperi"
},
"huileextravierge": {
"fr": "huile extra vierge",
"en": "extra olive oil",
"it": "olio extra vergine"
},
"gnochgor": {
"fr": "Gnochi au Gorgonzolla",
"en": "gdlkfgdfg",
"it": "ksflskdfjl"
},
"name": {
"fr": "",
"en": "",
"it": ""
},
"chocolat": {
"fr": "chocolat",
"en": "chocolate",
"it": "chocolate"
}
}

View File

@ -0,0 +1 @@
hello

29
proj/map/index.php Normal file
View File

@ -0,0 +1,29 @@
<?php
/* ROUTEUR */
$uri = '';
if (isset($_SERVER['REQUEST_URI'])) {
$uri = explode('/', $_SERVER['REQUEST_URI']);
}
if ($uri[1] == '') {
include ("asset/php/home.php");
} elseif ($uri[1] == 'edit') {
include("asset/php/edit.php");
} else {
echo "404";
}
//echo nl2br("\n");
//var_dump($uri);
//echo "hello";
//echo cdb_get("_uuids");
//echo nl2br("\n");
//echo cdb_get("_all_dbs");
//echo cdb_newdb("yolo");
?>