diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py index 1bfb0289..a623381e 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py @@ -17,9 +17,21 @@ class UltmarcDoctorSearchViewModel(BaseModel): form_data: Optional[UltmarcDoctorSearchModel] def ultmarc_data_json_str(self): + """アルトマーク医師データの検索結果を指定された件数ごとに分割しながら返す""" def date_handler(obj): + """json.dumpsの日付項目のフォーマットハンドラ""" return obj.isoformat() if hasattr(obj, 'isoformat') else obj - return json.dumps([model.dict() for model in self.doctor_data], ensure_ascii=False, default=date_handler) + + search_data_list = [model.dict() for model in self.doctor_data] + search_data_len = len(search_data_list) + # 呼び出し一回あたりの分割数 + part_size = 50 + for i in range(0, search_data_len, part_size): + json_str = json.dumps(search_data_list[i:i + part_size], ensure_ascii=False, default=date_handler) + # JavaScriptに埋め込むため、クォートをエスケープ + json_str = json_str.replace("'", "\\'") + json_str = json_str.replace('\\"', '\\\\"') + yield json_str # ページネーションのページ番号 # 検索時は最初のページを表示する diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py index f7dec105..b41c77cd 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py @@ -19,9 +19,21 @@ class UltmarcInstSearchViewModel(BaseModel): form_data: Optional[UltmarcInstSearchModel] def ultmarc_data_json_str(self): + """アルトマーク施設データの検索結果を指定された件数ごとに分割しながら返す""" def date_handler(obj): + """json.dumpsの日付項目のフォーマットハンドラ""" return obj.isoformat() if hasattr(obj, 'isoformat') else obj - return json.dumps([model.dict() for model in self.inst_data], ensure_ascii=False, default=date_handler) + + search_data_list = [model.dict() for model in self.inst_data] + search_data_len = len(search_data_list) + # 呼び出し一回あたりの分割数 + part_size = 50 + for i in range(0, search_data_len, part_size): + json_str = json.dumps(search_data_list[i:i + part_size], ensure_ascii=False, default=date_handler) + # JavaScriptに埋め込むため、クォートをエスケープ + json_str = json_str.replace("'", "\\'") + json_str = json_str.replace('\\"', '\\\\"') + yield json_str # ページネーションのページ番号 # 検索時は最初のページを表示する diff --git a/ecs/jskult-webapp/src/templates/docSearch.html b/ecs/jskult-webapp/src/templates/docSearch.html index 7f6cc551..f6702fea 100644 --- a/ecs/jskult-webapp/src/templates/docSearch.html +++ b/ecs/jskult-webapp/src/templates/docSearch.html @@ -164,14 +164,8 @@