Spaces:
Running
Running
コメントを整理
Browse files- control.js +16 -0
- history.js +20 -0
- index.html +47 -0
- prompt.js +15 -0
- storage.js +12 -0
- style.css +0 -28
- translation.js +13 -0
control.js
CHANGED
@@ -1,3 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
updateHistoryList();
|
2 |
loadFromUserStorage();
|
3 |
setInterval(() => {
|
|
|
1 |
+
/**
|
2 |
+
* control.js - UIコントロールとイベント管理
|
3 |
+
*
|
4 |
+
* 主な機能:
|
5 |
+
* - サイドバーの制御(表示/非表示、リサイズ)
|
6 |
+
* - キーボードショートカット
|
7 |
+
* - ローカルストレージのクリア
|
8 |
+
* - レイアウトの自動調整
|
9 |
+
* - モデルリストの更新
|
10 |
+
*
|
11 |
+
* 重要な関数:
|
12 |
+
* - initSidebarResize(): サイドバーのリサイズ機能を初期化
|
13 |
+
* - resizeMain(): メインコンテンツのサイズを調整
|
14 |
+
* - updateModelList(): 利用可能なモデルリストを更新
|
15 |
+
*/
|
16 |
+
|
17 |
updateHistoryList();
|
18 |
loadFromUserStorage();
|
19 |
setInterval(() => {
|
history.js
CHANGED
@@ -1,3 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
function saveToHistory(title) {
|
2 |
if(!title) {
|
3 |
title = document.getElementById('query').value.slice(0, 10);
|
|
|
1 |
+
/**
|
2 |
+
* history.js - プロンプト生成履歴の管理
|
3 |
+
*
|
4 |
+
* 主な機能:
|
5 |
+
* - 履歴の保存と読み込み
|
6 |
+
* - 履歴の検索
|
7 |
+
* - 履歴項目の編集と削除
|
8 |
+
* - ストレージ使用量の表示
|
9 |
+
*
|
10 |
+
* 重要な関数:
|
11 |
+
* - saveToHistory(): 新しい履歴項目を保存
|
12 |
+
* - updateHistoryList(): 履歴リストを更新
|
13 |
+
* - filterHistory(): 履歴の検索機能
|
14 |
+
* - loadHistoryItem(): 履歴項目を読み込み
|
15 |
+
*
|
16 |
+
* 注意事項:
|
17 |
+
* - 履歴の最大サイズは3MB
|
18 |
+
* - 容量超過時は古い履歴から自動削除
|
19 |
+
*/
|
20 |
+
|
21 |
function saveToHistory(title) {
|
22 |
if(!title) {
|
23 |
title = document.getElementById('query').value.slice(0, 10);
|
index.html
CHANGED
@@ -5,6 +5,53 @@
|
|
5 |
<meta charset="UTF-8">
|
6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 |
<title>Gemini Prompt Generator</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
<link href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
|
9 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
|
10 |
crossorigin="anonymous">
|
|
|
5 |
<meta charset="UTF-8">
|
6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 |
<title>Gemini Prompt Generator</title>
|
8 |
+
|
9 |
+
<!--
|
10 |
+
ファイル構成と役割:
|
11 |
+
|
12 |
+
1. index.html
|
13 |
+
- メインのUIレイアウト
|
14 |
+
- スタイル定義
|
15 |
+
- 外部リソースの読み込み
|
16 |
+
|
17 |
+
2. prompt.js
|
18 |
+
- Gemini APIとの通信
|
19 |
+
- プロンプト生成のロジック
|
20 |
+
- モデル管理
|
21 |
+
※ API関連の機能追加はこのファイルに
|
22 |
+
|
23 |
+
3. storage.js
|
24 |
+
- ローカルストレージの管理
|
25 |
+
- フォームデータの永続化
|
26 |
+
※ データ保存関連の機能はこのファイルに
|
27 |
+
|
28 |
+
4. translation.js
|
29 |
+
- 多言語対応
|
30 |
+
- i18next設定
|
31 |
+
- 言語リソース
|
32 |
+
※ 新しい言語や翻訳文字列の追加はこのファイルに
|
33 |
+
|
34 |
+
5. control.js
|
35 |
+
- UIイベント管理
|
36 |
+
- レイアウト制御
|
37 |
+
- グローバルショートカット
|
38 |
+
※ UI操作に関する機能追加はこのファイルに
|
39 |
+
|
40 |
+
6. history.js
|
41 |
+
- 履歴管理
|
42 |
+
- 履歴検索
|
43 |
+
- 履歴UI
|
44 |
+
※ 履歴関連の機能追加はこのファイルに
|
45 |
+
|
46 |
+
開発規約:
|
47 |
+
1. 各ファイルの責務を明確に分離し、機能追加は適切なファイルに行う
|
48 |
+
2. UIコンポーネントの追加は index.html に
|
49 |
+
3. スタイルの追加は index.html の <style> タグ内に
|
50 |
+
4. 新しい機能は既存のファイル構成に従い、適切なファイルに実装
|
51 |
+
5. 共通で使用する定数や設定は storage.js で管理
|
52 |
+
6. 多言語対応が必要な文字列は必ず translation.js に追加
|
53 |
+
-->
|
54 |
+
|
55 |
<link href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
|
56 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
|
57 |
crossorigin="anonymous">
|
prompt.js
CHANGED
@@ -1,3 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
async function getModelList() {
|
2 |
const url = 'https://generativelanguage.googleapis.com/v1beta/models?key=' + document.getElementById('apiKey').value;
|
3 |
const response = await fetch(url);
|
|
|
1 |
+
/**
|
2 |
+
* prompt.js - プロンプト生成の中核機能を提供
|
3 |
+
*
|
4 |
+
* 主な機能:
|
5 |
+
* - Gemini APIを使用したプロンプト生成
|
6 |
+
* - モデルリストの取得と管理
|
7 |
+
* - プロンプトの生成と整形
|
8 |
+
* - 文字列置換機能
|
9 |
+
*
|
10 |
+
* 重要な関数:
|
11 |
+
* - getModelList(): 利用可能なGeminiモデルを取得
|
12 |
+
* - generatePrompt(): メインのプロンプト生成処理
|
13 |
+
* - applyReplacements(): 文字列置換を適用
|
14 |
+
*/
|
15 |
+
|
16 |
async function getModelList() {
|
17 |
const url = 'https://generativelanguage.googleapis.com/v1beta/models?key=' + document.getElementById('apiKey').value;
|
18 |
const response = await fetch(url);
|
storage.js
CHANGED
@@ -1,3 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
function saveToUserStorage(force = false) {
|
2 |
const currentTime = new Date().getTime();
|
3 |
const lastSaveTimestamp = parseInt(localStorage.getItem('lastSaveTimestamp') || '0');
|
|
|
1 |
+
/**
|
2 |
+
* storage.js - ローカルストレージを使用したデータ永続化を管理
|
3 |
+
*
|
4 |
+
* 主な機能:
|
5 |
+
* - フォーム入力値の保存と復元
|
6 |
+
* - 自動保存機能(5秒間隔)
|
7 |
+
*
|
8 |
+
* 重要な関数:
|
9 |
+
* - saveToUserStorage(): フォームデータを保存
|
10 |
+
* - loadFromUserStorage(): 保存されたデータを復元
|
11 |
+
*/
|
12 |
+
|
13 |
function saveToUserStorage(force = false) {
|
14 |
const currentTime = new Date().getTime();
|
15 |
const lastSaveTimestamp = parseInt(localStorage.getItem('lastSaveTimestamp') || '0');
|
style.css
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
body {
|
2 |
-
padding: 2rem;
|
3 |
-
font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
|
4 |
-
}
|
5 |
-
|
6 |
-
h1 {
|
7 |
-
font-size: 16px;
|
8 |
-
margin-top: 0;
|
9 |
-
}
|
10 |
-
|
11 |
-
p {
|
12 |
-
color: rgb(107, 114, 128);
|
13 |
-
font-size: 15px;
|
14 |
-
margin-bottom: 10px;
|
15 |
-
margin-top: 5px;
|
16 |
-
}
|
17 |
-
|
18 |
-
.card {
|
19 |
-
max-width: 620px;
|
20 |
-
margin: 0 auto;
|
21 |
-
padding: 16px;
|
22 |
-
border: 1px solid lightgray;
|
23 |
-
border-radius: 16px;
|
24 |
-
}
|
25 |
-
|
26 |
-
.card p:last-child {
|
27 |
-
margin-bottom: 0;
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
translation.js
CHANGED
@@ -1,3 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
const translations = {
|
2 |
ja: {
|
3 |
inputQueryTitle: "入力クエリ",
|
|
|
1 |
+
/**
|
2 |
+
* translation.js - 多言語対応機能を提供
|
3 |
+
*
|
4 |
+
* 主な機能:
|
5 |
+
* - i18nextを使用した多言語切り替え
|
6 |
+
* - 8言語対応(日本語、英語、中国語、韓国語、フランス語、スペイン語、ドイツ語、イタリア語)
|
7 |
+
* - UIテキストの動的更新
|
8 |
+
*
|
9 |
+
* 重要な関数:
|
10 |
+
* - updateContent(): UI要素の翻訳を更新
|
11 |
+
* - changeLang(): 言語切り替えを実行
|
12 |
+
*/
|
13 |
+
|
14 |
const translations = {
|
15 |
ja: {
|
16 |
inputQueryTitle: "入力クエリ",
|