| <template>
|
| <div id="decision-list-app">
|
|
|
| <aside class="sidebar">
|
| <input type="text" placeholder="Search" class="search-bar" />
|
| <div class="status-filters">
|
| <div class="filter-item active">Decisions <span>15</span></div>
|
| <div class="filter-item">On-going <span>5</span></div>
|
| <div class="filter-item">Finished <span>8</span></div>
|
| <div class="filter-item">Suspend <span>2</span></div>
|
| </div>
|
| <div class="category">
|
| <h3>Category</h3>
|
| <div class="category-item">Untitled <span>5</span></div>
|
| <div class="category-item">Business <span>3</span></div>
|
| <div class="category-item">Study <span>6</span></div>
|
| <div class="category-item">Entertainment <span>1</span></div>
|
| <button class="add-category">+</button>
|
| </div>
|
| <div class="filter">
|
| <h3>Filter</h3>
|
| <div class="filter-item active">Starred</div>
|
| </div>
|
| </aside>
|
|
|
|
|
| <main class="main-content">
|
| <div class="decision-cards">
|
|
|
| <div class="decision-card" v-for="(decision, index) in decisions" :key="index">
|
| <div class="card-header">
|
| <h2>{{ decision.title }}</h2>
|
| <span v-if="decision.starred" class="star-icon">⭐</span>
|
| </div>
|
| <div class="key-notes">
|
| <h3>Key Notes</h3>
|
| <div v-for="(note, key) in decision.keyNotes" :key="key" class="key-note">
|
| <span>{{ key }}</span>
|
| <div class="progress-bar">
|
| <div class="progress" :style="{ width: note + '%' }"></div>
|
| </div>
|
| <span class="value">{{ note }}%</span>
|
| </div>
|
| </div>
|
| <div class="analysis">
|
| <h3>Analysis</h3>
|
| <p>{{ decision.analysis }}</p>
|
| </div>
|
| <div class="card-footer">
|
| <span class="update-info">Update: {{ decision.updateTime }}</span>
|
| <span class="category-label" :style="{ backgroundColor: decision.categoryColor }">
|
| {{ decision.category }}
|
| </span>
|
| </div>
|
| </div>
|
| </div>
|
|
|
| <button class="add-btn" @click="goToChatInterface">+</button>
|
| </main>
|
| </div>
|
| </template>
|
|
|
| <script>
|
| export default {
|
| data() {
|
| return {
|
|
|
| decisions: [
|
| {
|
| title: "School Selection",
|
| keyNotes: { Stanford: 81, Harvard: 68, MIT: 89 },
|
| analysis:
|
| "MIT leads with innovation and top facilities, Stanford excels in research, while Harvard scores lower likely due to metrics favoring STEM over humanities.",
|
| updateTime: "2024/11/18 22:21",
|
| category: "Study",
|
| categoryColor: "#8BC34A",
|
| starred: false,
|
| },
|
| {
|
| title: "Take GRE Test or Not?",
|
| keyNotes: { Yes: 71, No: 89 },
|
| analysis:
|
| "Skip the GRE if your target schools waive it, or value work experience more. It saves time, cost, and focuses on relevant strengths.",
|
| updateTime: "2024/11/18 22:21",
|
| category: "Untitled",
|
| categoryColor: "#9E9E9E",
|
| starred: true,
|
| },
|
|
|
| ],
|
| };
|
| },
|
| methods: {
|
| goToChatInterface() {
|
| this.$router.push('/chat-interface');
|
| },
|
| },
|
| };
|
| </script>
|
|
|
| <style scoped>
|
|
|
| body {
|
| margin: 0;
|
| font-family: Arial, sans-serif;
|
| box-sizing: border-box;
|
| }
|
|
|
|
|
| .sidebar {
|
| width: 250px;
|
| height: 100vh;
|
| background: #f4f4f4;
|
| padding: 20px;
|
| box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
|
| }
|
|
|
| .search-bar {
|
| width: 100%;
|
| padding: 10px;
|
| margin-bottom: 20px;
|
| border: 1px solid #ddd;
|
| border-radius: 5px;
|
| }
|
|
|
| .status-filters,
|
| .category,
|
| .filter {
|
| margin-bottom: 30px;
|
| }
|
|
|
| .filter-item,
|
| .category-item {
|
| display: flex;
|
| justify-content: space-between;
|
| padding: 10px;
|
| margin-bottom: 5px;
|
| border-radius: 5px;
|
| cursor: pointer;
|
| }
|
|
|
| .filter-item.active,
|
| .category-item:hover {
|
| background: #e0f7fa;
|
| }
|
|
|
| .add-category {
|
| background: #4caf50;
|
| color: white;
|
| border: none;
|
| padding: 10px;
|
| border-radius: 5px;
|
| cursor: pointer;
|
| }
|
|
|
|
|
|
|
|
|
| .add-btn {
|
| position: fixed;
|
| bottom: 60px;
|
| right: 60px;
|
| background-color: #4CAF50;
|
| color: white;
|
| border: none;
|
| border-radius: 50%;
|
| padding: 20px;
|
| font-size: 24px;
|
| cursor: pointer;
|
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
| width: 60px;
|
| height: 60px;
|
| display: flex;
|
| justify-content: center;
|
| align-items: center;
|
| }
|
|
|
|
|
| .add-btn:hover {
|
| background-color: #45a049;
|
| }
|
|
|
|
|
| .add-btn i {
|
| color: white;
|
| font-size: 3rem;
|
| }
|
|
|
|
|
|
|
|
|
| .main-content {
|
| flex-grow: 1;
|
| padding: 20px;
|
| overflow-y: auto;
|
| }
|
|
|
|
|
| .decision-cards {
|
| display: grid;
|
| grid-template-columns: repeat(3, 1fr);
|
| gap: 20px;
|
| position: absolute;
|
| margin-left: 300px;
|
| top: 20px;
|
| width: 100%;
|
| max-width: 900px;
|
| }
|
| .decision-card {
|
| background: white;
|
| border-radius: 10px;
|
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
| padding: 20px;
|
| }
|
|
|
| .card-header {
|
| display: flex;
|
| justify-content: space-between;
|
| align-items: center;
|
| }
|
|
|
| .key-notes .key-note {
|
| display: flex;
|
| align-items: center;
|
| margin: 10px 0;
|
| }
|
|
|
| .progress-bar {
|
| width: 60%;
|
| height: 8px;
|
| background: #ddd;
|
| border-radius: 5px;
|
| margin: 0 10px;
|
| }
|
|
|
| .progress {
|
| height: 100%;
|
| background: #4caf50;
|
| border-radius: 5px;
|
| }
|
|
|
| .card-footer {
|
| display: flex;
|
| justify-content: space-between;
|
| margin-top: 20px;
|
| font-size: 12px;
|
| }
|
|
|
| .category-label {
|
| padding: 5px 10px;
|
| border-radius: 5px;
|
| color: white;
|
| font-size: 12px;
|
| }
|
|
|
| .new-dialog-btn i {
|
| color: white;
|
| font-size: 24px;
|
| }
|
| </style>
|
| |