Просмотр исходного кода

Merge pull request #7311 from weseek/imprv/add-short-title

imprv: Add short title
Haku Mizuki 3 лет назад
Родитель
Сommit
16335012f6

+ 2 - 2
packages/app/src/components/Questionnaire/QuestionnaireToast.tsx

@@ -59,11 +59,11 @@ const QuestionnaireToast = ({ questionnaireOrder }: QuestionnaireToastProps): JS
     }
   }, [questionnaireOrder._id]);
 
-  const questionnaireOrderTitle = lang === 'en_US' ? questionnaireOrder.title.en_US : questionnaireOrder.title.ja_JP;
+  const questionnaireOrderShortTitle = lang === 'en_US' ? questionnaireOrder.shortTitle.en_US : questionnaireOrder.shortTitle.ja_JP;
 
   return <div className={`toast ${isOpen ? 'show' : 'hide'}`}>
     <div className="toast-header bg-info">
-      <strong className="mr-auto text-light">{questionnaireOrderTitle}</strong>
+      <strong className="mr-auto text-light">{questionnaireOrderShortTitle}</strong>
       <button type="button" className="ml-2 mb-1 close" onClick={closeBtnClickHandler}>
         <span aria-hidden="true" className="text-light">&times;</span>
       </button>

+ 7 - 12
packages/app/src/interfaces/questionnaire/questionnaire-order.ts

@@ -3,24 +3,19 @@ import { HasObjectId } from '@growi/core';
 import { ICondition, IConditionHasId } from './condition';
 import { IQuestion, IQuestionHasId } from './question';
 
-export interface IQuestionnaireOrder {
-  title: {
+export interface IQuestionnaireOrder<TQUESTION = IQuestion, TCONDITION = ICondition> {
+  shortTitle: {
     ja_JP: string
     en_US: string
   }
-  showFrom: Date
-  showUntil: Date
-  questions: IQuestion[]
-  condition: ICondition
-}
-
-export type IQuestionnaireOrderHasId = {
   title: {
     ja_JP: string
     en_US: string
   }
   showFrom: Date
   showUntil: Date
-  questions: IQuestionHasId[]
-  condition: IConditionHasId
-} & HasObjectId;
+  questions: TQUESTION[]
+  condition: TCONDITION
+}
+
+export type IQuestionnaireOrderHasId = IQuestionnaireOrder<IQuestionHasId, IConditionHasId> & HasObjectId;

+ 1 - 0
packages/app/src/server/models/questionnaire/questionnaire-order.ts

@@ -16,6 +16,7 @@ const questionnaireOrderTitleSchema = new Schema<IQuestionnaireOrder['title']>({
 }, { _id: false });
 
 const questionnaireOrderSchema = new Schema<QuestionnaireOrderDocument>({
+  shortTitle: { type: questionnaireOrderTitleSchema, required: true },
   title: { type: questionnaireOrderTitleSchema, required: true },
   showFrom: { type: Date, required: true },
   showUntil: {

+ 32 - 0
packages/app/test/integration/service/questionnaire-cron.test.ts

@@ -27,6 +27,10 @@ describe('QuestionnaireCronService', () => {
         // saved in db、not finished (user types is updated from the time it was saved)
         {
           _id: '63a8354837e7aa378e16f0b1',
+          shortTitle: {
+            ja_JP: 'GROWI に関するアンケート',
+            en_US: 'Questions about GROWI',
+          },
           title: {
             ja_JP: 'GROWI に関するアンケート',
             en_US: 'Questions about GROWI',
@@ -58,6 +62,10 @@ describe('QuestionnaireCronService', () => {
         // not saved, not finished
         {
           _id: '63a8354837e7aa378e16f0b2',
+          shortTitle: {
+            ja_JP: 'GROWI に関するアンケート',
+            en_US: 'Questions about GROWI',
+          },
           title: {
             ja_JP: 'GROWI に関するアンケート',
             en_US: 'Questions about GROWI',
@@ -89,6 +97,10 @@ describe('QuestionnaireCronService', () => {
         // not saved, finished
         {
           _id: '63a8354837e7aa378e16f0b3',
+          shortTitle: {
+            ja_JP: 'GROWI に関するアンケート',
+            en_US: 'Questions about GROWI',
+          },
           title: {
             ja_JP: 'GROWI に関するアンケート',
             en_US: 'Questions about GROWI',
@@ -135,6 +147,10 @@ describe('QuestionnaireCronService', () => {
     await QuestionnaireOrder.insertMany([
       {
         _id: '63a8354837e7aa378e16f0b1',
+        shortTitle: {
+          ja_JP: 'GROWI に関するアンケート',
+          en_US: 'Questions about GROWI',
+        },
         title: {
           ja_JP: 'GROWI に関するアンケート',
           en_US: 'Questions about GROWI',
@@ -163,6 +179,10 @@ describe('QuestionnaireCronService', () => {
       // finished
       {
         _id: '63a8354837e7aa378e16f0b4',
+        shortTitle: {
+          ja_JP: 'GROWI に関するアンケート',
+          en_US: 'Questions about GROWI',
+        },
         title: {
           ja_JP: 'GROWI に関するアンケート',
           en_US: 'Questions about GROWI',
@@ -191,6 +211,10 @@ describe('QuestionnaireCronService', () => {
       // questionnaire that doesn't exist in questionnaire server
       {
         _id: '63a8354837e7aa378e16f0b5',
+        shortTitle: {
+          ja_JP: 'GROWI に関するアンケート',
+          en_US: 'Questions about GROWI',
+        },
         title: {
           ja_JP: 'GROWI に関するアンケート',
           en_US: 'Questions about GROWI',
@@ -252,6 +276,10 @@ describe('QuestionnaireCronService', () => {
     expect(JSON.parse(JSON.stringify(savedOrders))).toEqual([
       {
         _id: '63a8354837e7aa378e16f0b1',
+        shortTitle: {
+          ja_JP: 'GROWI に関するアンケート',
+          en_US: 'Questions about GROWI',
+        },
         title: {
           ja_JP: 'GROWI に関するアンケート',
           en_US: 'Questions about GROWI',
@@ -282,6 +310,10 @@ describe('QuestionnaireCronService', () => {
       },
       {
         _id: '63a8354837e7aa378e16f0b2',
+        shortTitle: {
+          ja_JP: 'GROWI に関するアンケート',
+          en_US: 'Questions about GROWI',
+        },
         title: {
           ja_JP: 'GROWI に関するアンケート',
           en_US: 'Questions about GROWI',