Bir kaynak buldum ve uyarladım. Şimdilik işimi çözdü.
App.svelte
<script>
import Tabs from "./Tabs.svelte";
import Tab1 from "./Tab1.svelte";
import Tab2 from "./Tab2.svelte";
const children = [
{
title: "Tab 1",
component: Tab1
},
{
title: "Tab 2",
component: Tab2
}
]
</script>
<Tabs children={[Tab1, Tab2]} defaultName="Tab1" />
Tabs.svelte
<script>
export let children = [], index=0, defaultName = "";
defaultName = children[0].component.name
</script>
{#each children as child , i (i)}
<button on:click={()=>{index=i; defaultName=child.component.name}}>{child.title}</button>
{/each}
<h2>Sekmenin Index değerine göre</h2>
{#each children as child , i (i)}
{#if i == index}
<svelte:component this={child.component} />
{/if}
{/each}
<hr>
<h2>Sekmenin Adına Göre(Benzersiz olmalı)</h2>
{#each children as child , i (i)}
{#if child.component.name == defaultName}
<svelte:component this={child.component} />
{/if}
{/each}
Tablo dışında bir yere tıklandığı zaman pencerenin gizlenmesini sağladım o yüzden kaydırma çubuğunun bir önemi kalmadı.
<table>
<thead>
<tr>
<th>Hafta</th>
<th>82981</th>
<th>82982</th>
<th>82983</th>
<th>82984</th>
<th>82985</th>
</tr>
</thead>
<tbody>
<?php
$rez = [
43 => [
82983 => [
[
'rentable_identity' => '82983'
]
],
82985 => [
[
'rentable_identity' => '82985'
]
],
82982 => [
[
'rentable_identity' => '82982'
],
[
'rentable_identity' => '82982'
]
]
],
44 => [
82983 => [
[
'rentable_identity' => '82983'
]
],
82985 => [
[
'rentable_identity' => '82985'
]
],
82982 => [
[
'rentable_identity' => '82982'
],
[
'rentable_identity' => '82982'
]
],
82981 => [
[
'rentable_identity' => '82982'
],
[
'rentable_identity' => '82982'
],
[
'rentable_identity' => '82982'
]
]
]
];
// Boş odalar listeye eklenmemiş o yüzden sütunların eşleşmesi için aşağıdaki gibi bir diziye ihtiyaç var.
$cols = [
82981, 82982, 82983, 82984, 82985
];
foreach ($rez as $key => $value) {
?>
<tr>
<td><?=$key; ?></td>
<?php
foreach($cols as $room) {
$roomCount = isset($value[$room]) ? count($value[$room]): 0;
?>
<td><?=$roomCount; ?></td>
<?php
}
?>
</tr>
<?php
}
?>
</tbody>
</table>
Klavye Kısayolları
Arama kutusuna: acceptSelectedSuggestion
İki seçenek çıkmalı biri Enter diğeri Tab olur sende Enter birisi hangisi sorunlu ise onu düzenle.
Gerçi bütün eklentilerini kaldırmışın bu saatten sonra kaldırıp temiz kurulum da yapabilirsin... :)
Neyse internette bir örnek gördüm iş görür gibi. Metod kullanarak çözmüş.
<div id="ebelge">
<div class="h-[100vh] bg-gradient-to-b from-[#1fa2ff] to-[#12d8fa] to-[#a6ffcb]">
<div>
<input type="text" v-model="optianal('evrakNo')">
<input type="text" v-model="optianal('aliciVKN')">
<input type="file" multiple accept=".xml" @change="parseXML" />
</div>
</div>
</div>
<script>
const newVue = new Vue({
el: '#ebelge',
data: {
index: 0,
invoices: [
{
evrakNo: "1"
}
]
},
methods: {
optianal(e) {
switch (e) {
case "evrakNo":
return this.invoices?.[this.index]?.evrakNo
break;
case "aliciVKN":
return this.invoices?.[this.index]?.aliciVKN
break;
default:
break;
}
},
parseXML(e) {
this.invoices = [];
this.index = 0;
const $xmlFiles = e.target.files;
for (let i of $xmlFiles) {
$.get(
URL.createObjectURL(i),
(xml) => {
this.invoices.push($.fn.earsivXML(xml, i.name));
},
"xml"
);
}
}
}
})
</script>
Herkese ilgisi ve yardımları için teşekkür ederim.
Gökhan Kandemir'in videolarından izlediğim kadarı ile kavramaya çalışıyorum.
Html sayfasına dahil ederek yapmak istiyordum.
Şimdi web sitesine baktığım da benim kullandığımdan farklı bir kullanım mevcut.
Sizin önerilerinize benziyor. Ama jsfiddle örneklerine baktım orada denememde çalışmadı ya da beceremedim.
Örnek: https://jsfiddle.net/TrSherlock/msayL02n/8/
Sanırsam bir şeyi gözden kaçırıyorum?
Çok hakim olmadığım bir konu.
For ve bir şey değiştiğinde her şeyin değişmesi hoşuma gitmişti.
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<script src="earsivXML.js"></script>
<div id="ebelge">
<div class="h-[100vh] bg-gradient-to-b from-[#1fa2ff] to-[#12d8fa] to-[#a6ffcb]">
<div>
<input type="text" v-model="invoices?.[0]?.evrakNo">
<input type="file" multiple accept=".xml" @change="parseXML" />
</div>
</div>
</div>
<script>
const newVue = new Vue({
el: '#ebelge',
data: {
index: 1,
invoices: [
{
evrakNo: "1"
}
]
},
methods: {
parseXML(e) {
this.invoices = [];
const $xmlFiles = e.target.files;
for (let i of $xmlFiles) {
$.get(
URL.createObjectURL(i),
(xml) => {
this.invoices.push($.fn.earsivXML(xml, i.name));
},
"xml"
);
}
}
}
})
</script>
Sorunu çözdüm süslü parantez içinde => data->{"anahtar"}
gibi kullanırsan sorunun çözülür.
Kaynak: https://www.php.net/manual/en/class.stdclass.php
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ) );
$name = $wisex->data->{"17,62"}->{"Kursunsuz_95(Excellium95)_TL/lt"};
echo $name;
?>
Bu nasıl çözülür bilmiyorum. İlgimi çekti araştıracağım. İşini görülmesi açısından şimdilik aşağıdaki gibi kullanabilirsin.
<?php
error_reporting(0);
$url = "http://hasanadiguzel.com.tr/api/akaryakit/sehir=ANKARA";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$wisex = json_decode( curl_exec( $ch ), 1 );
// İkinci parametre true olursa diziye dönüştürür. Boşsa veya false olursa ilişkisel nesneye dönüştürülür.
print_r($wisex["data"]["17,62"]["Motorin(Eurodiesel)_TL/lt"]);
?>
@h4ckdr0 kardeşim sen soruyu yanlış anlamışsın etiketten etikete veri aktarma değil.
Bir web sayfasından herhangi bir veriyi işletim sisteminin belleğine alıp başka uygulamalar kullanılabilir hale getirmek.
<?php
//explode ile parçalamak için string olmalı.
//number_format ile yuvarlayıp kullanırsan string olarak çıktı veriyor.
//$number2 değişkeninde kullandığım yöntemi kullanırsan string yapmana gerek yok.
$number1 = (string)55555555.46;
$number1 = explode(".", $number1);
if (strlen($number1[0])>9 || strlen($number1[1])>2) {
echo "hata var"."<br>";
} else {
echo "hata yok"."<br>";
}
// iki basamklı hale getirirsen `strlen($number[1])>2` koşulunu kullanmana gerek yok.
$number2 = (string)5555555555.465;
$number2 = explode(".", number_format($number2, 2, '.', ''));
if (strlen($number2[0])>9) {
echo "hata var"."<br>";
} else {
echo "hata yok"."<br>";
}