@nakamura-123/pages 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component/Basic/BasicContents.js +3 -1
- package/dist/component/Basic/BasicSetting.js +4 -2
- package/dist/component/Basic/MiniTestCard.js +3 -1
- package/dist/component/Basic/SelectedExamCnt.js +3 -1
- package/dist/component/Coin/AppReviews.js +3 -1
- package/dist/component/Coin/CatchCopy.js +4 -2
- package/dist/component/Coin/CoinPageComponent.js +7 -6
- package/dist/component/Coin/Recommend.js +25 -23
- package/dist/component/FAQ/faqEn.d.ts +7 -0
- package/dist/component/FAQ/faqEn.js +76 -0
- package/dist/component/FAQ/faqJa.d.ts +7 -0
- package/dist/component/FAQ/faqJa.js +76 -0
- package/dist/component/Grade/GradeCard/ChangeWeeklyTargetBtn.js +3 -1
- package/dist/component/Grade/GradeCard/GradeCard.js +3 -1
- package/dist/component/Grade/GradeCard/Square3sGrade.js +5 -3
- package/dist/component/Grade/GradeCard/TargetDate.js +7 -7
- package/dist/component/Grade/GradeCard/WeeklyAchivedRate.js +3 -1
- package/dist/component/Grade/Square4s.js +6 -4
- package/dist/component/Guide.js +48 -24
- package/dist/component/QuizSet/QuizOptionDrill.js +3 -3
- package/dist/component/Result/CharaCard.js +15 -4
- package/dist/component/SettingBtns/QuizOptionSelector.js +5 -3
- package/dist/component/SettingBtns/Range.js +3 -2
- package/dist/component/TestPage/Square3s.js +5 -3
- package/dist/functions/badgeDailyFnc.d.ts +1 -1
- package/dist/functions/badgeDailyFnc.js +2 -4
- package/dist/functions/badgeFnc.d.ts +1 -1
- package/dist/functions/badgeFnc.js +4 -2
- package/dist/functions/oldStorageFnc.d.ts +1 -1
- package/dist/functions/oldStorageFnc.js +5 -6
- package/dist/hooks/BadgeHook.js +3 -1
- package/dist/hooks/quizActionHook.js +1 -1
- package/dist/page/BadgePage.js +5 -3
- package/dist/page/BootPage.js +13 -11
- package/dist/page/CoinPage.js +6 -4
- package/dist/page/FAQPage.js +6 -74
- package/dist/page/GetBadgePage.js +1 -1
- package/dist/page/GradePage.js +3 -1
- package/dist/page/HomePage.d.ts +1 -1
- package/dist/page/HomePage.js +9 -10
- package/dist/page/QuizSettingPage.js +3 -1
- package/dist/page/QuizSetupPage.js +7 -8
- package/dist/page/ReportPage.js +22 -27
- package/dist/page/ResultPage.js +4 -2
- package/dist/page/SettingPage.js +16 -14
- package/dist/page/TestPage.js +4 -6
- package/dist/quiz/check/SelectTag.js +5 -4
- package/dist/quiz/common/RubyText.d.ts +6 -0
- package/dist/quiz/common/RubyText.js +63 -0
- package/dist/quiz/save/QuizSaveData.js +10 -10
- package/dist/quiz/setting/ReturnSaveBtn.js +6 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -39,9 +39,11 @@ var MiniTestCard_1 = __importDefault(require("./MiniTestCard"));
|
|
|
39
39
|
var BasicSetting_1 = __importDefault(require("./BasicSetting"));
|
|
40
40
|
var Guide_1 = __importDefault(require("../Guide"));
|
|
41
41
|
var SelectedExamCnt_1 = __importDefault(require("./SelectedExamCnt"));
|
|
42
|
+
var react_i18next_1 = require("react-i18next");
|
|
42
43
|
var BasicPage = function (_a) {
|
|
43
44
|
var navigation = _a.navigation, subject = _a.subject, index = _a.index;
|
|
44
45
|
var dispatch = (0, react_redux_1.useDispatch)();
|
|
46
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
45
47
|
// // Reduxから必要なデータを一括取得
|
|
46
48
|
var categoryList = (0, react_redux_1.useSelector)(function (state) { return state.app[subject.list]; });
|
|
47
49
|
var activeIndex = (0, react_redux_1.useSelector)(function (state) { return state.setting.viewSet[subject.name].activeIndex; });
|
|
@@ -108,7 +110,7 @@ var BasicPage = function (_a) {
|
|
|
108
110
|
<Badge5s_1.default badgeType="basic" subject={subject.name} category={selectKey}/>
|
|
109
111
|
<TagBadge5s_1.default subject={subject} index={index}/>
|
|
110
112
|
<common_1.HelpMark name="quizOption.allQuiz" top={0}/>
|
|
111
|
-
<common_1.RoundRectangleIcon title={categoryLabel + "
|
|
113
|
+
<common_1.RoundRectangleIcon title={categoryLabel + t("basic.allQuiz")} icon={allQuizIcon} onPress={handleAllQuiz}/>
|
|
112
114
|
<BasicSetting_1.default navigation={navigation} subjectType={subject.type}/>
|
|
113
115
|
</react_native_gesture_handler_1.ScrollView>);
|
|
114
116
|
};
|
|
@@ -8,15 +8,17 @@ var react_native_1 = require("react-native");
|
|
|
8
8
|
var react_redux_1 = require("react-redux");
|
|
9
9
|
var common_1 = require("@nakamura-123/common");
|
|
10
10
|
var Range_1 = __importDefault(require("../SettingBtns/Range"));
|
|
11
|
+
var react_i18next_1 = require("react-i18next");
|
|
11
12
|
var BasicSetting = function (_a) {
|
|
12
13
|
var navigation = _a.navigation, subjectType = _a.subjectType;
|
|
14
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
13
15
|
var isRangeYear = (0, react_redux_1.useSelector)(function (state) { var _a; return (_a = state.app.appSetting.setting) === null || _a === void 0 ? void 0 : _a.basic.isRangeYearInUnit; });
|
|
14
16
|
var isUnit = subjectType === "unit";
|
|
15
17
|
return (<react_native_1.View style={styles.row}>
|
|
16
|
-
<common_1.SettingBtn icon="envelope" title="
|
|
18
|
+
<common_1.SettingBtn icon="envelope" title={t("basic.setting.report")} onPress={function () { return navigation.navigate("Report"); }}/>
|
|
17
19
|
|
|
18
20
|
{isRangeYear && isUnit && <Range_1.default />}
|
|
19
|
-
<common_1.SettingBtn icon="chart-line" title="
|
|
21
|
+
<common_1.SettingBtn icon="chart-line" title={t("basic.setting.grade")} onPress={function () { return navigation.navigate("Grade"); }}/>
|
|
20
22
|
</react_native_1.View>);
|
|
21
23
|
};
|
|
22
24
|
var styles = react_native_1.StyleSheet.create({
|
|
@@ -31,6 +31,7 @@ var react_native_1 = require("react-native");
|
|
|
31
31
|
var common_1 = require("@nakamura-123/common");
|
|
32
32
|
var react_2 = require("@realm/react");
|
|
33
33
|
var react_redux_1 = require("react-redux");
|
|
34
|
+
var react_i18next_1 = require("react-i18next");
|
|
34
35
|
var db_1 = require("@nakamura-123/db");
|
|
35
36
|
var stores_1 = require("@nakamura-123/stores");
|
|
36
37
|
var testFnc_1 = require("../../functions/testFnc");
|
|
@@ -39,12 +40,13 @@ var Paw5s_1 = __importDefault(require("./Paw5s"));
|
|
|
39
40
|
var TestComponent = function (_a) {
|
|
40
41
|
var navigation = _a.navigation, subject = _a.subject, index = _a.index;
|
|
41
42
|
var dispatch = (0, react_redux_1.useDispatch)();
|
|
43
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
42
44
|
// topTabsのラベルを取得
|
|
43
45
|
var categoryList = (0, react_redux_1.useSelector)(function (state) { return state.app[subject.list]; });
|
|
44
46
|
var selectedCategory = categoryList[index];
|
|
45
47
|
var selectKey = selectedCategory.key;
|
|
46
48
|
var quizCnt = selectedCategory.miniTestCnt;
|
|
47
|
-
var testTitle =
|
|
49
|
+
var testTitle = selectedCategory.title + t("basic.miniTest");
|
|
48
50
|
var testDB = (0, react_2.useQuery)(db_1.MiniTestSchema);
|
|
49
51
|
var QuestionDB = (0, react_2.useQuery)(db_1.dQuestionSchema);
|
|
50
52
|
var outOfYearRange = (0, react_redux_1.useSelector)(function (state) { return state.quizCfg.startCfg.outOfYearRange; });
|
|
@@ -7,8 +7,10 @@ var react_1 = __importDefault(require("react"));
|
|
|
7
7
|
var react_native_1 = require("react-native");
|
|
8
8
|
var common_1 = require("@nakamura-123/common");
|
|
9
9
|
var react_redux_1 = require("react-redux");
|
|
10
|
+
var react_i18next_1 = require("react-i18next");
|
|
10
11
|
var SelectedExamCnt = function (_a) {
|
|
11
12
|
var type = _a.type;
|
|
13
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
12
14
|
var isRangeYear = (0, react_redux_1.useSelector)(function (state) { var _a; return (_a = state.app.appSetting.setting) === null || _a === void 0 ? void 0 : _a.basic.isRangeYearInUnit; }) || false;
|
|
13
15
|
if (type !== "unit" || !isRangeYear)
|
|
14
16
|
return null;
|
|
@@ -16,7 +18,7 @@ var SelectedExamCnt = function (_a) {
|
|
|
16
18
|
var yearList = (0, react_redux_1.useSelector)(function (state) { return state.app.yearList; });
|
|
17
19
|
var allExamCnt = yearList.length;
|
|
18
20
|
var selectedExamCnt = allExamCnt - outOfYearRange.length;
|
|
19
|
-
var msg = "
|
|
21
|
+
var msg = "".concat(t("basic.selectedExam"), ": ").concat(selectedExamCnt, " / ").concat(allExamCnt);
|
|
20
22
|
return (<common_1.MyText fsize="sm" style={styles.text}>
|
|
21
23
|
{msg}
|
|
22
24
|
</common_1.MyText>);
|
|
@@ -6,12 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
var common_1 = require("@nakamura-123/common");
|
|
7
7
|
var lib_1 = require("@nakamura-123/lib");
|
|
8
8
|
var react_1 = __importDefault(require("react"));
|
|
9
|
+
var react_i18next_1 = require("react-i18next");
|
|
9
10
|
var react_native_1 = require("react-native");
|
|
10
11
|
var AppReviews = function (_a) {
|
|
11
12
|
var comments = _a.comments;
|
|
13
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
12
14
|
return (<react_native_1.View style={styles.container}>
|
|
13
15
|
<react_native_1.View style={{ width: "100%" }}>
|
|
14
|
-
<common_1.RoundRectangle title="
|
|
16
|
+
<common_1.RoundRectangle title={t("coin.title.review")} color="blue"/>
|
|
15
17
|
</react_native_1.View>
|
|
16
18
|
{comments.map(function (comment, index) { return (<react_native_1.View key={index} style={styles.reviewBox}>
|
|
17
19
|
<common_1.MyText style={styles.reviewText} fsize="sm" color="gray">
|
|
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
7
|
var react_native_1 = require("react-native");
|
|
8
8
|
var common_1 = require("@nakamura-123/common");
|
|
9
|
+
var react_i18next_1 = require("react-i18next");
|
|
9
10
|
var CatchCopy = function () {
|
|
11
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
10
12
|
return (<react_native_1.View style={styles.container}>
|
|
11
|
-
<common_1.MyText style={styles.text}
|
|
12
|
-
<common_1.MyText style={styles.msg}
|
|
13
|
+
<common_1.MyText style={styles.text}>{t("coin.catchCopy.title")}</common_1.MyText>
|
|
14
|
+
<common_1.MyText style={styles.msg}>{t("coin.catchCopy.msg")}</common_1.MyText>
|
|
13
15
|
</react_native_1.View>);
|
|
14
16
|
};
|
|
15
17
|
var styles = react_native_1.StyleSheet.create({
|
|
@@ -11,16 +11,17 @@ var CatchCopy_1 = __importDefault(require("./CatchCopy"));
|
|
|
11
11
|
var Recommend_1 = __importDefault(require("./Recommend"));
|
|
12
12
|
var AppReviews_1 = __importDefault(require("./AppReviews"));
|
|
13
13
|
var WaitingPayBanner_1 = __importDefault(require("./WaitingPayBanner"));
|
|
14
|
-
var
|
|
14
|
+
var react_i18next_1 = require("react-i18next");
|
|
15
15
|
var CoinPage = function (_a) {
|
|
16
16
|
var navigation = _a.navigation, comments = _a.comments, products = _a.products, onPurchase = _a.onPurchase, onRestore = _a.onRestore, loading = _a.loading, isAllfreePaid = _a.isAllfreePaid;
|
|
17
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
17
18
|
var isAndroid = react_native_1.Platform.OS === "android";
|
|
18
19
|
return (<>
|
|
19
20
|
<common_1.Spinner loading={loading}/>
|
|
20
21
|
<react_native_1.ScrollView style={styles.container}>
|
|
21
22
|
<CatchCopy_1.default />
|
|
22
23
|
<Recommend_1.default />
|
|
23
|
-
<common_1.RoundRectangleIcon title="
|
|
24
|
+
<common_1.RoundRectangleIcon title={t("coin.title.faq")} icon="book" onPress={function () { return navigation.navigate("FAQ"); }}/>
|
|
24
25
|
<WaitingPayBanner_1.default currentPage="coin"/>
|
|
25
26
|
|
|
26
27
|
{products.map(function (product, index) {
|
|
@@ -33,16 +34,16 @@ var CoinPage = function (_a) {
|
|
|
33
34
|
})}
|
|
34
35
|
<react_native_1.View style={styles.txtContainer}>
|
|
35
36
|
<common_1.MyText fsize="sm" color="gray">
|
|
36
|
-
|
|
37
|
+
{t("coin.comment.free")}
|
|
37
38
|
</common_1.MyText>
|
|
38
39
|
{react_native_1.Platform.OS === "android" && (<common_1.MyText fsize="sm" color="gray">
|
|
39
|
-
|
|
40
|
+
{t("coin.comment.android")}
|
|
40
41
|
</common_1.MyText>)}
|
|
41
42
|
</react_native_1.View>
|
|
42
|
-
<common_1.RoundRectangleIcon title="
|
|
43
|
+
<common_1.RoundRectangleIcon title={t("coin.title.restore")} icon="coins" onPress={function () { return onRestore(); }}/>
|
|
43
44
|
<react_native_1.View style={styles.serviceBox}>
|
|
44
45
|
<common_1.MyText fsize="md" color="blue" onPress={function () { return react_native_1.Linking.openURL("https://drill-notes.com/kiyaku"); }}>
|
|
45
|
-
|
|
46
|
+
{t("coin.title.terms")}
|
|
46
47
|
</common_1.MyText>
|
|
47
48
|
</react_native_1.View>
|
|
48
49
|
|
|
@@ -6,33 +6,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
var common_1 = require("@nakamura-123/common");
|
|
7
7
|
var lib_1 = require("@nakamura-123/lib");
|
|
8
8
|
var react_1 = __importDefault(require("react"));
|
|
9
|
+
var react_i18next_1 = require("react-i18next");
|
|
9
10
|
var react_native_1 = require("react-native");
|
|
10
|
-
var items = [
|
|
11
|
-
{
|
|
12
|
-
title: "有効期限は無し",
|
|
13
|
-
sub: "来年以降も常に最新版を利用可能。さらに、買い切り型なので毎月の支払いは不要です。",
|
|
14
|
-
icon: "ban",
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
title: "ていねいな解説",
|
|
18
|
-
sub: "初学者でも安心!わかりやすい解説を掲載。また、検索機能ですぐにWEB情報も確認できる。",
|
|
19
|
-
icon: "question-circle",
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
title: "豊富なモードで0から学べる",
|
|
23
|
-
sub: "まずは単元モードで基礎固め。人気の模試モードや集中特訓モードなど有料版限定機能も。",
|
|
24
|
-
icon: "route",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
title: "自分にピッタリな勉強法",
|
|
28
|
-
sub: "ふせん機能や問題選択機能など機能充実。アップデートでアプリは進化し続ける。",
|
|
29
|
-
icon: "thumbs-up",
|
|
30
|
-
},
|
|
31
|
-
];
|
|
32
11
|
var Recommend = function () {
|
|
12
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
13
|
+
var items = [
|
|
14
|
+
{
|
|
15
|
+
title: t("coin.recommend.title1"),
|
|
16
|
+
sub: t("coin.recommend.msg1"),
|
|
17
|
+
icon: "ban",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: t("coin.recommend.title2"),
|
|
21
|
+
sub: t("coin.recommend.msg2"),
|
|
22
|
+
icon: "question-circle",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
title: t("coin.recommend.title3"),
|
|
26
|
+
sub: t("coin.recommend.msg3"),
|
|
27
|
+
icon: "route",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: t("coin.recommend.title4"),
|
|
31
|
+
sub: t("coin.recommend.msg4"),
|
|
32
|
+
icon: "thumbs-up",
|
|
33
|
+
},
|
|
34
|
+
];
|
|
33
35
|
return (<react_native_1.View style={styles.container}>
|
|
34
36
|
<react_native_1.View style={styles.topRound}>
|
|
35
|
-
<common_1.RoundRectangle title="
|
|
37
|
+
<common_1.RoundRectangle title={t("coin.title.recommend")} color="blue" width={200}/>
|
|
36
38
|
</react_native_1.View>
|
|
37
39
|
{items.map(function (item, index) { return (<react_native_1.View key={index} style={styles.contentBox}>
|
|
38
40
|
<react_native_1.View style={styles.iconBox}>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.faqEnDatas = void 0;
|
|
4
|
+
exports.faqEnDatas = [
|
|
5
|
+
{
|
|
6
|
+
title: "購入・支払いについて",
|
|
7
|
+
lists: [
|
|
8
|
+
{
|
|
9
|
+
que: "課金額は毎月発生するのでしょうか ",
|
|
10
|
+
ans: "課金は買い切りであり、サブスクリプションのように毎月課金されるわけではありません。一度ご購入いただければ、次年度以降もご利用いただけます。",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
que: "有料版へアップグレードすれば、解説が表示されますか",
|
|
14
|
+
ans: "無料版で解説が表示されていない場合は、有料版でも解説は表示されません(無料版で解説が付いているアプリの場合は、有料版の問題も同程度の解説があります)。無料版で使用感を十分にご確認ください。",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
que: "複数回購入してしまいました",
|
|
18
|
+
ans: " 購入手続きについては、各プラットフォーム(AppleもしくはGoogle)の決済システムを利用しております。まずは購入の際に届いているメールや、各プラットフォーム(appleもしくはGoogle)にて購入履歴をご確認ください。確認方法はお手数ですが各公式サイトなどをご参照ください。\n 複数回は購入できぬようにシステムを組んではおりますが、確認の結果、複数回購入していた場合は至急対応いたしますので、「お問い合わせ」からご連絡ください。",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
que: "以前購入したにも関わらず、復元に失敗します",
|
|
22
|
+
ans: " 以前ご購入いただいたにもかかわらず復元に失敗する場合、決済システム(AppleまたはGoogle)における不具合が考えられます。 お手数をおかけいたしますが、「報告」ボタンよりメールアドレスをご入力のうえ、ご報告ください。\n\n なお、場合によっては一度返金を行い、再度ご購入いただく可能性がございます。 何卒ご理解のほどよろしくお願い申し上げます。",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
que: "手続きに時間がかかるのですが。",
|
|
26
|
+
ans: "通信環境にもよりますが、課金情報の読み込みには一定の時間がかかります。画面上は特に反応がない場合も、処理を行っております。数十秒程度そのままでお待ち下さい。",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
que: "購入手続きが失敗する",
|
|
30
|
+
ans: " 購入手続きが失敗となる場合は、以下のいずれかの可能性が考えられます。 \n 1.すでに購入が済んでいる場合があります。問題が画面や単元別、試験別画面をご確認ください。 \n2.アプリを削除したり、iPhoneを替えたりした場合は、購入状態をアプリが判別できません。この場合は、アップグレードページの「以前購入した方はこちらから復元」ボタンをタップしてください。 \n3.通信環境やアカウントの状態等により、購入が正しく行えない場合があります。 お手数ですが、画面の表示動作についてご連絡いただけるでしょうか。 連絡の際は、下記のアドレスへメールいただければ幸いです。 \ndk2drill@gmail.com ",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
que: "コンビニ支払いをしたが、有料版を利用できません。",
|
|
34
|
+
ans: " Androidでのコンビニ支払いをご利用の場合、決済完了後に「以前購入した方はこちらから復元」をタップする必要があります。\n また、時間が経ってもサービスが利用できない場合には、大変恐れ入りますが、以下のメールアドレスまでご連絡の上、クレジットカード等の他の支払い方法で再度お手続きいただけますようお願いいたします。\ndk2drill@gmail.com ",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
que: "領収書を発行することはできますか",
|
|
38
|
+
ans: "当アプリは、Google PlayやApp Storeの決済システムを利用しております。領収書につきましては、各プラットフォームの購入履歴等から発行することが可能です。",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
que: "法人契約や団体契約はできますか",
|
|
42
|
+
ans: "法人契約や団体契約については、対応しておりません。現状では個人のユーザー様のみの対応となりますので、あらかじめご了承ください。",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: "機能について",
|
|
48
|
+
lists: [
|
|
49
|
+
{
|
|
50
|
+
que: "機種変更を行ったら、有料プランが利用できなくなりました",
|
|
51
|
+
ans: " 機種変更前と同じアカウントを利用している場合、課金データを引き継ぐことができます。この場合は、アップグレードページの「以前購入した方はこちらから復元」ボタンをタップしてください。\n ただし、iPhoneからAndroidへの乗り換え等の場合は、利用アカウントが異なり同一ユーザーの利用が確認できないため、別途改めてAndroid側で購入いただく必要があります。ご理解ください。",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
que: "機種間のデータ連携はできるでしょうか",
|
|
55
|
+
ans: " データはすべて各機種へ保存しております。現状のシステムでは、iPhoneとiPadに限らず、機種を超えてのデータ連携をすることはできません。",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
que: "効果音が出ません",
|
|
59
|
+
ans: "端末がマナーモードの場合は、音が出ません。一度マナーモードを解除してお試しください。",
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: "コンテンツについて",
|
|
65
|
+
lists: [
|
|
66
|
+
{
|
|
67
|
+
que: "最新の試験はいつ公開されるのでしょうか",
|
|
68
|
+
ans: "当アプリでは、前年の試験問題までを掲載しております。試験により多少前後いたしますが、試験日の約1〜2ヶ月前までに公開できるよう準備を進めております。",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
que: "以前のシステムで記述データのオンライン保存を行いましたが、どのように読み込めばよいですか",
|
|
72
|
+
ans: " 以前のシステムに保存されている記述データにつきましては、一度こちらで手続きを行う必要がございます。 お手数をおかけいたしますが、「報告」ボタンよりメールアドレスをご入力のうえ、ご報告ください。\n\n また、可能であれば、ご設定いただいたIDも併せてお知らせください。 ",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.faqJaDatas = void 0;
|
|
4
|
+
exports.faqJaDatas = [
|
|
5
|
+
{
|
|
6
|
+
title: "購入・支払いについて",
|
|
7
|
+
lists: [
|
|
8
|
+
{
|
|
9
|
+
que: "課金額は毎月発生するのでしょうか ",
|
|
10
|
+
ans: "課金は買い切りであり、サブスクリプションのように毎月課金されるわけではありません。一度ご購入いただければ、次年度以降もご利用いただけます。",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
que: "有料版へアップグレードすれば、解説が表示されますか",
|
|
14
|
+
ans: "無料版で解説が表示されていない場合は、有料版でも解説は表示されません(無料版で解説が付いているアプリの場合は、有料版の問題も同程度の解説があります)。無料版で使用感を十分にご確認ください。",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
que: "複数回購入してしまいました",
|
|
18
|
+
ans: " 購入手続きについては、各プラットフォーム(AppleもしくはGoogle)の決済システムを利用しております。まずは購入の際に届いているメールや、各プラットフォーム(appleもしくはGoogle)にて購入履歴をご確認ください。確認方法はお手数ですが各公式サイトなどをご参照ください。\n 複数回は購入できぬようにシステムを組んではおりますが、確認の結果、複数回購入していた場合は至急対応いたしますので、「お問い合わせ」からご連絡ください。",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
que: "以前購入したにも関わらず、復元に失敗します",
|
|
22
|
+
ans: " 以前ご購入いただいたにもかかわらず復元に失敗する場合、決済システム(AppleまたはGoogle)における不具合が考えられます。 お手数をおかけいたしますが、「報告」ボタンよりメールアドレスをご入力のうえ、ご報告ください。\n\n なお、場合によっては一度返金を行い、再度ご購入いただく可能性がございます。 何卒ご理解のほどよろしくお願い申し上げます。",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
que: "手続きに時間がかかるのですが。",
|
|
26
|
+
ans: "通信環境にもよりますが、課金情報の読み込みには一定の時間がかかります。画面上は特に反応がない場合も、処理を行っております。数十秒程度そのままでお待ち下さい。",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
que: "購入手続きが失敗する",
|
|
30
|
+
ans: " 購入手続きが失敗となる場合は、以下のいずれかの可能性が考えられます。 \n 1.すでに購入が済んでいる場合があります。問題が画面や単元別、試験別画面をご確認ください。 \n2.アプリを削除したり、iPhoneを替えたりした場合は、購入状態をアプリが判別できません。この場合は、アップグレードページの「以前購入した方はこちらから復元」ボタンをタップしてください。 \n3.通信環境やアカウントの状態等により、購入が正しく行えない場合があります。 お手数ですが、画面の表示動作についてご連絡いただけるでしょうか。 連絡の際は、下記のアドレスへメールいただければ幸いです。 \ndk2drill@gmail.com ",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
que: "コンビニ支払いをしたが、有料版を利用できません。",
|
|
34
|
+
ans: " Androidでのコンビニ支払いをご利用の場合、決済完了後に「以前購入した方はこちらから復元」をタップする必要があります。\n また、時間が経ってもサービスが利用できない場合には、大変恐れ入りますが、以下のメールアドレスまでご連絡の上、クレジットカード等の他の支払い方法で再度お手続きいただけますようお願いいたします。\ndk2drill@gmail.com ",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
que: "領収書を発行することはできますか",
|
|
38
|
+
ans: "当アプリは、Google PlayやApp Storeの決済システムを利用しております。領収書につきましては、各プラットフォームの購入履歴等から発行することが可能です。",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
que: "法人契約や団体契約はできますか",
|
|
42
|
+
ans: "法人契約や団体契約については、対応しておりません。現状では個人のユーザー様のみの対応となりますので、あらかじめご了承ください。",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: "機能について",
|
|
48
|
+
lists: [
|
|
49
|
+
{
|
|
50
|
+
que: "機種変更を行ったら、有料プランが利用できなくなりました",
|
|
51
|
+
ans: " 機種変更前と同じアカウントを利用している場合、課金データを引き継ぐことができます。この場合は、アップグレードページの「以前購入した方はこちらから復元」ボタンをタップしてください。\n ただし、iPhoneからAndroidへの乗り換え等の場合は、利用アカウントが異なり同一ユーザーの利用が確認できないため、別途改めてAndroid側で購入いただく必要があります。ご理解ください。",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
que: "機種間のデータ連携はできるでしょうか",
|
|
55
|
+
ans: " データはすべて各機種へ保存しております。現状のシステムでは、iPhoneとiPadに限らず、機種を超えてのデータ連携をすることはできません。",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
que: "効果音が出ません",
|
|
59
|
+
ans: "端末がマナーモードの場合は、音が出ません。一度マナーモードを解除してお試しください。",
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: "コンテンツについて",
|
|
65
|
+
lists: [
|
|
66
|
+
{
|
|
67
|
+
que: "最新の試験はいつ公開されるのでしょうか",
|
|
68
|
+
ans: "当アプリでは、前年の試験問題までを掲載しております。試験により多少前後いたしますが、試験日の約1〜2ヶ月前までに公開できるよう準備を進めております。",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
que: "以前のシステムで記述データのオンライン保存を行いましたが、どのように読み込めばよいですか",
|
|
72
|
+
ans: " 以前のシステムに保存されている記述データにつきましては、一度こちらで手続きを行う必要がございます。 お手数をおかけいたしますが、「報告」ボタンよりメールアドレスをご入力のうえ、ご報告ください。\n\n また、可能であれば、ご設定いただいたIDも併せてお知らせください。 ",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
];
|
|
@@ -36,10 +36,12 @@ var lib_1 = require("@nakamura-123/lib");
|
|
|
36
36
|
var stores_1 = require("@nakamura-123/stores");
|
|
37
37
|
var db_1 = require("@nakamura-123/db");
|
|
38
38
|
var ChangeWeeklyModal_1 = __importDefault(require("./ChangeWeeklyModal"));
|
|
39
|
+
var react_i18next_1 = require("react-i18next");
|
|
39
40
|
var optionInfo = lib_1.gradeSet.weeklyTargetInfo;
|
|
40
41
|
var ChangeWeeklyTargetBtn = function (_a) {
|
|
41
42
|
var color = _a.color;
|
|
42
43
|
var dispatch = (0, react_redux_1.useDispatch)();
|
|
44
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
43
45
|
var realm = (0, react_2.useRealm)();
|
|
44
46
|
var selectedValue = (0, react_redux_2.useSelector)(function (state) { return state.setting.grade.weeklyTargetCnt; });
|
|
45
47
|
var _b = (0, react_1.useState)(false), isVisible = _b[0], setIsVisible = _b[1];
|
|
@@ -49,7 +51,7 @@ var ChangeWeeklyTargetBtn = function (_a) {
|
|
|
49
51
|
dispatch(stores_1.settingStorage.saveSetting());
|
|
50
52
|
};
|
|
51
53
|
return (<react_native_1.View style={styles.container}>
|
|
52
|
-
<common_1.RoundRectangle title="
|
|
54
|
+
<common_1.RoundRectangle title={t("grade.gradeCard.changeTarget")} onPress={function () { return setIsVisible(true); }} color={color}/>
|
|
53
55
|
<ChangeWeeklyModal_1.default visible={isVisible} optionInfo={optionInfo} onClose={function () { return setIsVisible(false); }} handleChange={handleChange} selectedValue={selectedValue}/>
|
|
54
56
|
</react_native_1.View>);
|
|
55
57
|
};
|
|
@@ -13,11 +13,13 @@ var lib_1 = require("@nakamura-123/lib");
|
|
|
13
13
|
var WeeklyAchivedRate_1 = __importDefault(require("./WeeklyAchivedRate"));
|
|
14
14
|
var ChangeWeeklyTargetBtn_1 = __importDefault(require("./ChangeWeeklyTargetBtn"));
|
|
15
15
|
var WeeklyProgress_1 = __importDefault(require("./WeeklyProgress"));
|
|
16
|
+
var react_2 = require("@realm/react");
|
|
16
17
|
var GradeCard = function (_a) {
|
|
17
18
|
var DailyLogDB = _a.DailyLogDB;
|
|
19
|
+
var realm = (0, react_2.useRealm)();
|
|
18
20
|
var BASE_COLOR = "dkBeige";
|
|
19
21
|
// データベースの読み込み
|
|
20
|
-
var dailyLog = db_1.DailyLogModel.readTodayDailyLog(
|
|
22
|
+
var dailyLog = db_1.DailyLogModel.readTodayDailyLog(realm);
|
|
21
23
|
var weeklyLogs = db_1.DailyLogModel.readWeeklyLogs(DailyLogDB);
|
|
22
24
|
var weeklyQuizCntTotal = weeklyLogs.reduce(function (a, c) { return a + c.quizCnt; }, 0);
|
|
23
25
|
var weeklyTargetCnt = (0, react_redux_1.useSelector)(function (state) { return state.setting.grade.weeklyTargetCnt; });
|
|
@@ -9,9 +9,11 @@ var react_2 = require("@realm/react");
|
|
|
9
9
|
var common_1 = require("@nakamura-123/common");
|
|
10
10
|
var db_1 = require("@nakamura-123/db");
|
|
11
11
|
var gradeFnc_1 = require("../../../functions/gradeFnc");
|
|
12
|
+
var react_i18next_1 = require("react-i18next");
|
|
12
13
|
var Square3sGrade = function (_a) {
|
|
13
14
|
var dailyLog = _a.dailyLog, weeklyQuizCntTotal = _a.weeklyQuizCntTotal, weeklyTargetCnt = _a.weeklyTargetCnt, color = _a.color;
|
|
14
15
|
var DailyDB = (0, react_2.useQuery)(db_1.DailyLogSchema);
|
|
16
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
15
17
|
// 01_今日の学習回数を算出
|
|
16
18
|
var _b = (0, gradeFnc_1.formatTodayLog)(dailyLog), quizCnt = _b.quizCnt, targetCnt = _b.targetCnt;
|
|
17
19
|
// 03_連続学習日数を算出
|
|
@@ -21,20 +23,20 @@ var Square3sGrade = function (_a) {
|
|
|
21
23
|
// 今日の学習回数
|
|
22
24
|
cnt: quizCnt,
|
|
23
25
|
cntText: "/ ".concat(targetCnt),
|
|
24
|
-
label: "
|
|
26
|
+
label: t("grade.gradeCard.today"),
|
|
25
27
|
icon: "clock",
|
|
26
28
|
},
|
|
27
29
|
{
|
|
28
30
|
// 今週の学習回数
|
|
29
31
|
cnt: weeklyQuizCntTotal,
|
|
30
32
|
cntText: "/ ".concat(weeklyTargetCnt),
|
|
31
|
-
label: "
|
|
33
|
+
label: t("grade.gradeCard.weekly"),
|
|
32
34
|
icon: "chart-bar",
|
|
33
35
|
},
|
|
34
36
|
{
|
|
35
37
|
cnt: consecutiveDays,
|
|
36
38
|
cntText: "日",
|
|
37
|
-
label: "
|
|
39
|
+
label: t("grade.gradeCard.consecutive"),
|
|
38
40
|
icon: "calendar-alt",
|
|
39
41
|
},
|
|
40
42
|
];
|
|
@@ -32,27 +32,27 @@ var react_redux_1 = require("react-redux");
|
|
|
32
32
|
var common_1 = require("@nakamura-123/common");
|
|
33
33
|
var lib_1 = require("@nakamura-123/lib");
|
|
34
34
|
var DatePickerModal_1 = __importDefault(require("./DatePickerModal")); // モーダル部分を別コンポーネント化
|
|
35
|
+
var react_i18next_1 = require("react-i18next");
|
|
35
36
|
var TargetDate = function (_a) {
|
|
36
37
|
var color = _a.color;
|
|
38
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
37
39
|
var _b = (0, react_1.useState)(false), isModalVisible = _b[0], setModalVisible = _b[1];
|
|
38
40
|
var targetDay = (0, react_redux_1.useSelector)(function (state) { return state.setting.grade.targetDay; });
|
|
39
|
-
var targetDayStr = getTargetDayStr(targetDay);
|
|
41
|
+
var targetDayStr = getTargetDayStr(targetDay, t);
|
|
40
42
|
return (<react_native_1.View style={styles.container}>
|
|
41
43
|
<common_1.RoundRectangle title={targetDayStr} onPress={function () { return setModalVisible(true); }} color={color}/>
|
|
42
44
|
<DatePickerModal_1.default isVisible={isModalVisible} onClose={function () { return setModalVisible(false); }} targetDay={targetDay}/>
|
|
43
45
|
</react_native_1.View>);
|
|
44
46
|
};
|
|
45
|
-
var
|
|
46
|
-
var PLEASE_SET_TXT = "タップして試験日を設定";
|
|
47
|
-
var getTargetDayStr = function (targetDay) {
|
|
47
|
+
var getTargetDayStr = function (targetDay, t) {
|
|
48
48
|
if (!targetDay)
|
|
49
|
-
return
|
|
49
|
+
return t("grade.gradeCard.pleaseSetTxt");
|
|
50
50
|
var comparisonResult = lib_1.timeFnc.compareToday(targetDay);
|
|
51
51
|
if (comparisonResult === "today")
|
|
52
|
-
return
|
|
52
|
+
return t("grade.gradeCard.examDateTxt");
|
|
53
53
|
var limitDays = lib_1.timeFnc.getCountdownDays(targetDay);
|
|
54
54
|
if (limitDays < 0)
|
|
55
|
-
return
|
|
55
|
+
return t("grade.gradeCard.pleaseSetTxt");
|
|
56
56
|
var formattedDate = lib_1.timeFnc.formatDateYW(targetDay);
|
|
57
57
|
return "".concat(formattedDate, "\u307E\u3067 ").concat(limitDays, "\u65E5");
|
|
58
58
|
};
|
|
@@ -6,12 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
var react_1 = __importDefault(require("react"));
|
|
7
7
|
var react_native_1 = require("react-native");
|
|
8
8
|
var common_1 = require("@nakamura-123/common");
|
|
9
|
+
var react_i18next_1 = require("react-i18next");
|
|
9
10
|
var WeeklyAchievedRate = function (_a) {
|
|
10
11
|
var weeklyQuizCntTotal = _a.weeklyQuizCntTotal, weeklyTargetCnt = _a.weeklyTargetCnt, color = _a.color;
|
|
12
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
11
13
|
var rate = Math.floor((weeklyQuizCntTotal / weeklyTargetCnt) * 100);
|
|
12
14
|
return (<react_native_1.View style={styles.container}>
|
|
13
15
|
<common_1.MyText fsize="sm" color="ltBlack" style={styles.txt}>
|
|
14
|
-
|
|
16
|
+
{t("grade.gradeCard.weeklyAchievedRate")}
|
|
15
17
|
</common_1.MyText>
|
|
16
18
|
<common_1.ProgressBar progress={rate} barColor={color} height={20}/>
|
|
17
19
|
</react_native_1.View>);
|
|
@@ -7,8 +7,10 @@ var react_1 = __importDefault(require("react"));
|
|
|
7
7
|
var react_native_1 = require("react-native");
|
|
8
8
|
var common_1 = require("@nakamura-123/common");
|
|
9
9
|
var gradeFnc_1 = require("../../functions/gradeFnc");
|
|
10
|
+
var react_i18next_1 = require("react-i18next");
|
|
10
11
|
var Square4s = function (_a) {
|
|
11
12
|
var DailyLogDB = _a.DailyLogDB;
|
|
13
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
|
12
14
|
// 1.最大の問題数を取得
|
|
13
15
|
var maxQuizCntLog = (0, gradeFnc_1.findMaxQuizCntLog)(DailyLogDB);
|
|
14
16
|
var maxQuizCnt = maxQuizCntLog ? maxQuizCntLog.quizCnt : 0;
|
|
@@ -22,25 +24,25 @@ var Square4s = function (_a) {
|
|
|
22
24
|
{
|
|
23
25
|
cnt: maxQuizCnt,
|
|
24
26
|
cntText: "問",
|
|
25
|
-
label: "
|
|
27
|
+
label: t("grade.square4s.maxQuizCnt"),
|
|
26
28
|
icon: "clock",
|
|
27
29
|
},
|
|
28
30
|
{
|
|
29
31
|
cnt: totalCnt,
|
|
30
32
|
cntText: "問",
|
|
31
|
-
label: "
|
|
33
|
+
label: t("grade.square4s.totalCnt"),
|
|
32
34
|
icon: "layer-group",
|
|
33
35
|
},
|
|
34
36
|
{
|
|
35
37
|
cnt: longestConsecutiveDays,
|
|
36
38
|
cntText: "日",
|
|
37
|
-
label: "
|
|
39
|
+
label: t("grade.square4s.longestConsecutiveDays"),
|
|
38
40
|
icon: "calendar-alt",
|
|
39
41
|
},
|
|
40
42
|
{
|
|
41
43
|
cnt: studyDayCnt,
|
|
42
44
|
cntText: "日",
|
|
43
|
-
label: "
|
|
45
|
+
label: t("grade.square4s.studyDayCnt"),
|
|
44
46
|
icon: "calendar",
|
|
45
47
|
},
|
|
46
48
|
];
|