Skip to content

Commit

Permalink
update label
Browse files Browse the repository at this point in the history
  • Loading branch information
vuisme committed Feb 28, 2024
1 parent 03e8e06 commit e1e2c93
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 48 deletions.
1 change: 1 addition & 0 deletions electron/exposes/adbkit/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ const disconnect = async (...params) => client.disconnect(...params)
const getActivityName = async (pkg) => {
try {
const { stdout } = await shell(`shell cmd package resolve-activity --brief ${pkg}`)
// lệnh khác: shell dumpsys activity activities | grep mActivityComponent
const outputLines = stdout.trim().split('\n')
console.log(outputLines)
// Lọc dòng chứa "com"
Expand Down
50 changes: 37 additions & 13 deletions electron/resources/build/apps.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,76 @@
"runName": "com.unity3d.player.UnityPlayerActivity",
"icon": "electron/resources/img/BodyCombat.png",
"name": "Les Mills Bodycombat",
"description": "Chương trình Body combat của Les Mills bao gồm các bài tập cardio và đốt mỡ giúp tăng cường sức khỏe tim mạch, sức bền và sức mạnh. Ngoài ra, chương trình này còn giúp phát triển sự linh hoạt và sự cân bằng của cơ thể. Các bài tập trong Body combat cũng sử dụng các động tác chống lại trọng lực, giúp tăng cường độ bền và khả năng kiểm soát cơ thể.",
"video": "https://www.youtube.com/watch?v=mGYQDEZFzU8"
"description": "Chương trình tập luyện cardio giúp tăng cường sức khỏe tim mạch, sức bền, sức mạnh, sự linh hoạt và cân bằng.",
"video": "https://www.youtube.com/watch?v=mGYQDEZFzU8",
"comfort": "Thoải mái"
},
{
"packageName": "com.beatgames.beatpaber",
"runName": "com.unity3d.player.UnityPlayerActivity",
"icon": "electron/resources/img/BeatSaber.webp",
"name": "Beat Saber",
"description": "Người chơi sẽ điều khiển 2 thanh kiếm (xanh và đỏ) và bắt đầu chém vào những khối lập phương đang tiến lại gần mình (tốc độ sẽ theo đổi dựa vào giai điệu của bài hát), ngăn không cho chúng có thể vượt ra phía sau của bạn, duy trì đến khi kết thúc bài nhạc là có thể giành chiến thắng.",
"video": "https://www.youtube.com/watch?v=BUXPOqt4O2E"
"description": "Chém các khối lập phương theo nhịp điệu của bài hát với hai thanh kiếm ảo.",
"video": "https://www.youtube.com/watch?v=BUXPOqt4O2E",
"comfort": "Thoải mái"
},
{
"packageName": "com.holonautic.cybrix",
"runName": "com.unity3d.player.UnityPlayerActivity",
"icon": "electron/resources/img/Cybrix.webp",
"name": "Cybrix",
"description": "Tham gia trận đấu vợt tương lai đỉnh cao ngay trong phòng khách của bạn! Hãy thách thức bạn bè hoặc chơi một mình trong ba chế độ đa người kịch tính. Với thực tế ảo, biến không gian sống của bạn thành đấu trường hấp dẫn. Chinh phục chiến dịch đơn người để leo lên bảng xếp hạng và chứng minh khả năng của mình. Đặt ra thách thức cho bản thân bằng cách điều khiển vợt một cách chính xác, sử dụng súng laser với sự tinh tế, và thu thập power-up khi đồng thời tránh né viên bóng đặc biệt. Sẵn sàng để trở thành nhà vô địch trong trận chiến vợt tương lai chưa?",
"video": "https://www.youtube.com/watch?v=WWdnBMRBzcQ"
"description": "Tham gia trận đấu vợt tương lai trong chính phòng khách của bạn. Chơi đơn hoặc đa người, chinh phục chiến dịch, rèn luyện kỹ năng và trở thành nhà vô địch.",
"video": "https://www.youtube.com/watch?v=WWdnBMRBzcQ",
"comfort": "Thoải mái"
},
{
"packageName": "com.halfbrick.fruitninjavr2",
"runName": "com.unity3d.player.UnityPlayerActivity",
"icon": "electron/resources/img/FruitNinjaVR2.webp",
"name": "Fruit Ninja 2",
"description": "Hóa thân thành một Ninja chuyên đi chém hoa quả với khoảng thời gian mỗi level là nhất định, có nhiều loại hoa quả khiến quả suýt xoa khi chúng đã được chém vô cùng tươi mát, khiến bạn ngây ngất. Có đủ các loại hoa quả cho bạn thưởng thức từ: dưa hấu, cam, dừa, kiwi, dứa, táo đến chanh leo, đu đủ tất cả đều có trong game chém hoa quả",
"video": "https://www.youtube.com/watch?v=PyQFEPbCpWA"
"description": "Hóa thân thành một Ninja cắt các loại trái cây đầy màu sắc với thanh kiếm ảo",
"video": "https://www.youtube.com/watch?v=PyQFEPbCpWA",
"comfort": "Thoải mái"
},
{
"packageName": "com.meta.curio.toybox",
"runName": "com.unity3d.player.UnityPlayerActivity",
"name": "First Encounters",
"description": "Khám phá thực tế hỗn hợp trên Meta Quest 3 với First Encounters. Bạn đang ở trên một hành tinh mới lạ và những kẻ phồng không gian phiền phức sắp tràn vào phòng bạn. Bắt càng nhiều càng tốt trước khi hết thời gian - kết hợp màu sắc để có điểm số cao!",
"video": "https://www.youtube.com/watch?v=wiT_b4m8a24"
"description": "Khám phá thực tế hỗn hợp trên Meta Quest 3 với First Encounters. Bạn đang ở trên một hành tinh mới lạ và những quả bóng lông đến từ không gian phiền phức đang tràn vào phòng bạn. Bắt càng nhiều càng tốt trước khi hết thời gian - kết hợp màu sắc để có điểm số cao!",
"video": "https://www.youtube.com/watch?v=wiT_b4m8a24",
"comfort": "Bình thường"
},
{
"packageName": "com.resolutiongames.abvriop.santacruz",
"runName": "com.unity3d.player.UnityPlayerActivity",
"name": "Angry Birds VR: Isle of Pigs",
"description": "Trải nghiệm chơi Angry Bird bằng một góc nhìn hoàn toàn mới",
"video": "https://www.youtube.com/watch?v=PGgTz4JsiZY"
"description": "Trải nghiệm Angry Bird bằng góc nhìn hoàn toàn mới trong thế giới VR.",
"video": "https://www.youtube.com/watch?v=PGgTz4JsiZY",
"comfort": "Thoải mái"
},
{
"packageName": "com.mrf.tvb.cubism",
"runName": "com.unity3d.player.UnityPlayerActivity",
"name": "Cubism",
"description": "Thử thách trí óc của bạn trong Cubism, một trò chơi giải đố và lắp ráp các hình dạng lập thể với độ khó tăng dần từ các khối đầy màu sắc",
"video": "https://www.youtube.com/watch?v=hXmZPlUceh4"
"video": "https://www.youtube.com/watch?v=hXmZPlUceh4",
"comfort": "Thoải mái"
},
{
"packageName": "com.YourCompany.RoboRecall",
"runName": "com.epicgames.ue4.GameActivity",
"name": "Robo Recall: Unplugged",
"description": "Chiến đấu với robot trong thế giới VR đầy kịch tính. Sử dụng chiến thuật sáng tạo, di chuyển linh hoạt và nâng cấp vũ khí để chiến thắng!",
"video": "https://www.youtube.com/watch?v=wq8EXq4elis",
"comfort": "Chóng mặt"
},
{
"packageName": "com.wolfandwood.exorcistlegionvr",
"runName": "com.unity3d.player.UnityPlayerActivity",
"name": "The Exorcist: Legion VR",
"description": "Một trò chơi kinh dị thực tế ảo dựa trên bộ phim kinh điển The Exorcist. Người chơi vào vai một nhà trừ tà được triệu tập đến một ngôi nhà bị ma ám để xua đuổi một con quỷ dữ.",
"video": "https://www.youtube.com/watch?v=qfgcoph_IFg",
"comfort": "Thoải mái"
}
]

148 changes: 113 additions & 35 deletions src/components/Device/components/AppPlay/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,47 @@
<el-dialog
v-model="visible"
title="DANH SÁCH GAME CÓ TRONG MÁY"
width="800"
width="80%"
append-to-body
destroy-on-close
opened="handleDialogOpen"
@closed="handleClose"
>
<div class="h-full flex flex-col">
<div class="text-red-500 text-sm pb-8 pl-4">
<div class="app-list">
<div class="intro-text">
Bấm vào hình để xem hướng dẫn
</div>
<div>
<table class="w-full border">
<thead>
<tr>
<th class="w-16 py-2 px-4 border-r">
CHƠI
</th>
<th class="flex-1 py-2 px-4 border-r">
Thông tin trò chơi
</th>
<th class="text-right py-2 px-4">
Video
</th>
</tr>
</thead>
<tbody>
<tr v-for="(app, index) in apps" :key="index" class="border-t">
<td class="py-2 px-4 border">
<el-button type="primary" icon="VideoPlay" @click="openApp(app.packageName, app.runName)">
</el-button>
</td>
<td class="py-2 px-4 border">
<strong>{{ app.name }}</strong><br>
{{ app.description }}
</td>
<td class="text-right py-2 px-4 border">
<iframe width="300" height="150" :src="getYouTubeEmbedUrl(app.video)" frameborder="0" allowfullscreen></iframe>
</td>
</tr>
</tbody>
</table>
<div class="filter-section">
<el-input v-model="filterName" placeholder="Filter by Name"></el-input>
<el-select v-model="filterComfort" placeholder="Filter by Comfort Level">
<el-option label="Thoải mái" value="Thoải mái">
Không chóng mặt
</el-option>
<el-option label="Chóng mặt nhẹ" value="Bình thường">
Chóng mặt nhẹ
</el-option>
<el-option label="Chóng mặt nhiều" value="Chóng mặt">
Chóng mặt nhiều
</el-option>
<!-- Add other comfort levels as needed -->
</el-select>
</div>
<div class="app-cards">
<el-card v-for="(app, index) in filteredApps" :key="index" class="app-card">
<div class="app-thumbnail">
<el-button type="warning" icon="VideoPlay" @click="openApp(app.packageName, app.runName)"></el-button>
</div>
<div class="app-info">
<strong>{{ app.name }}</strong>
<p>{{ app.description }}</p>
</div>
<div class="app-video">
<iframe width="100%" height="150" :src="getYouTubeEmbedUrl(app.video)" frameborder="0" allowfullscreen></iframe>
</div>
<div :style="{ color: getComfortIconColor(app.comfort) }">
Độ thoải mái: {{ getComfortIcon(app.comfort) }}
</div>
</el-card>
</div>
</div>
</el-dialog>
Expand All @@ -62,8 +62,20 @@ export default {
return {
apps: [], // This will be populated with data from the JSON file
visible: false,
filterName: '', // New property for filtering by name
filterComfort: '', // New property for filtering by comfort level
}
},
computed: {
filteredApps() {
return this.apps.filter((app) => {
// Apply filters based on filterName and filterComfort
const nameMatch = app.name.toLowerCase().includes(this.filterName.toLowerCase())
const comfortMatch = this.filterComfort ? app.comfort === this.filterComfort : true
return nameMatch && comfortMatch
})
},
},
watch: {
device: {
immediate: true, // Trigger the handler immediately after the component is created
Expand Down Expand Up @@ -175,8 +187,74 @@ export default {
// Return the embedded YouTube video URL
return videoId ? `https://www.youtube.com/embed/${videoId}` : ''
},
getComfortIcon(comfort) {
// Map comfort levels to corresponding emojis
const comfortEmojiMap = {
'Thoải mái': '☻ Dễ chịu', // Black emoji for comfortable
'Bình thường': '☻ Bình thường', // Black emoji for moderate
'Chóng mặt': '☻ Khó chịu', // Black emoji for dizzy
// Add other comfort levels as needed
}
return comfortEmojiMap[comfort] || ''
},
getComfortIconColor(comfort) {
// Map comfort levels to corresponding colors
const comfortColorMap = {
'Thoải mái': 'green', // Green color for comfortable
'Bình thường': 'orange', // Orange color for moderate
'Chóng mặt': 'red', // Red color for dizzy
// Add other comfort levels as needed
}
return comfortColorMap[comfort] || ''
},
},
}
</script>

<style></style>
<style scoped>
.app-list {
text-align: center;
padding: 20px;
}
.intro-text {
color: #ff4d4f;
font-size: 14px;
margin-bottom: 20px;
}
.app-cards {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.app-card {
width: 300px;
margin: 10px;
}
.app-thumbnail img {
width: 100%;
cursor: pointer;
}
.app-info {
padding: 15px;
}
.app-video {
margin-top: 10px;
}
.comfortable {
color: green; /* Green color for comfortable */
}
.moderate {
color: orange; /* Orange color for moderate */
}
.dizzy {
color: red; /* Red color for dizzy */
}
</style>

0 comments on commit e1e2c93

Please sign in to comment.