diff --git a/ecs/jskult-webapp/src/model/view/bio_view_model.py b/ecs/jskult-webapp/src/model/view/bio_view_model.py index 2c3c583c..5af25c32 100644 --- a/ecs/jskult-webapp/src/model/view/bio_view_model.py +++ b/ecs/jskult-webapp/src/model/view/bio_view_model.py @@ -73,7 +73,8 @@ class BioViewModel(BaseModel): if self.form_data.rec_whs_cd is None: return '' - form_wholesaler_full_name = f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}' + form_wholesaler_full_name = \ + f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}' return form_wholesaler_full_name @@ -81,7 +82,8 @@ class BioViewModel(BaseModel): if not self.is_form_submitted(): return '' - form_wholesaler_full_name = f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}' + form_wholesaler_full_name = \ + f'{self.form_data.rec_whs_cd}-{self.form_data.rec_whs_sub_cd}:{self.form_data.whs_name}' return self._selected_value(form_wholesaler_full_name, selected_wholesaler) diff --git a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py similarity index 81% rename from ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py rename to ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py index b648cb2f..a623381e 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_doctor_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_doctor_search_view_model.py @@ -9,7 +9,7 @@ from src.model.request.ultmarc_doctor import UltmarcDoctorSearchModel from src.system_var import environment -class UltmarcDoctorViewModel(BaseModel): +class UltmarcDoctorSearchViewModel(BaseModel): subtitle: str = '医師検索一覧' is_batch_processing: Optional[bool] prefc_models: list[PrefcMasterModel] @@ -17,9 +17,21 @@ class UltmarcDoctorViewModel(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_view_model.py b/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py similarity index 82% rename from ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py rename to ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py index 126371de..b41c77cd 100644 --- a/ecs/jskult-webapp/src/model/view/ultmarc_inst_view_model.py +++ b/ecs/jskult-webapp/src/model/view/ultmarc_inst_search_view_model.py @@ -10,7 +10,7 @@ from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.system_var import environment -class UltmarcInstViewModel(BaseModel): +class UltmarcInstSearchViewModel(BaseModel): subtitle: str = '施設検索一覧' is_batch_processing: Optional[bool] prefc_models: list[PrefcMasterModel] @@ -19,9 +19,21 @@ class UltmarcInstViewModel(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/services/ultmarc_view_service.py b/ecs/jskult-webapp/src/services/ultmarc_view_service.py index 24cf1d75..e210b7c8 100644 --- a/ecs/jskult-webapp/src/services/ultmarc_view_service.py +++ b/ecs/jskult-webapp/src/services/ultmarc_view_service.py @@ -3,10 +3,12 @@ from src.model.request.ultmarc_doctor import UltmarcDoctorSearchModel from src.model.request.ultmarc_inst import UltmarcInstSearchModel from src.model.view.ultmarc_doctor_info_view_model import \ UltmarcDoctorInfoViewModel -from src.model.view.ultmarc_doctor_view_model import UltmarcDoctorViewModel +from src.model.view.ultmarc_doctor_search_view_model import \ + UltmarcDoctorSearchViewModel from src.model.view.ultmarc_inst_info_view_model import \ UltmarcInstInfoViewModel -from src.model.view.ultmarc_inst_view_model import UltmarcInstViewModel +from src.model.view.ultmarc_inst_search_view_model import \ + UltmarcInstSearchViewModel from src.repositories.base_repository import BaseRepository from src.repositories.inst_master_repository import InstDivMasterRepository from src.repositories.prefc_master_repository import PrefcMasterRepository @@ -70,12 +72,12 @@ class UltmarcViewService(BaseService): ######################### def prepare_ultmarc_doctor_search_view( self - ) -> UltmarcDoctorViewModel: + ) -> UltmarcDoctorSearchViewModel: # 医師一覧画面の表示データ取得 # 都道府県リストを取得 prefcs = self.prefc_repository.fetch_all() - ultmarc = UltmarcDoctorViewModel( + ultmarc = UltmarcDoctorSearchViewModel( prefc_models=prefcs ) return ultmarc @@ -118,14 +120,14 @@ class UltmarcViewService(BaseService): ######################### def prepare_ultmarc_inst_search_view( self - ) -> UltmarcInstViewModel: + ) -> UltmarcInstSearchViewModel: # 施設一覧画面の表示データ取得 # 都道府県リストを取得 prefcs = self.prefc_repository.fetch_all() # 施設区分リストを取得 inst_div = self.inst_div_repository.fetch_all() - ultmarc = UltmarcInstViewModel( + ultmarc = UltmarcInstSearchViewModel( prefc_models=prefcs, inst_div_models=inst_div ) diff --git a/ecs/jskult-webapp/src/static/css/ultStyle.css b/ecs/jskult-webapp/src/static/css/ultStyle.css index f5eea0e0..f20cedf9 100644 --- a/ecs/jskult-webapp/src/static/css/ultStyle.css +++ b/ecs/jskult-webapp/src/static/css/ultStyle.css @@ -1,7 +1,7 @@ /* Bootstrap 5.10以降、box-sizingのデフォルト値によってテーブルがずれるため、このページ限定的にリセット */ /* @see https://bootstrap-guide.com/content/reboot#page-defaults */ *, ::after, ::before { - box-sizing: initial; + box-sizing: revert; } body { diff --git a/ecs/jskult-webapp/src/templates/docSearch.html b/ecs/jskult-webapp/src/templates/docSearch.html index 7f6cc551..dfedc2eb 100644 --- a/ecs/jskult-webapp/src/templates/docSearch.html +++ b/ecs/jskult-webapp/src/templates/docSearch.html @@ -164,14 +164,8 @@