|
|
@@ -77,6 +77,7 @@ public class SearchResultModel extends Model {
|
|
|
private List<CategoryCheckBean> categoryCheckBeans;
|
|
|
|
|
|
private int selectedCategoryIndex = 0;
|
|
|
+ private boolean isFilterApplied = false;
|
|
|
|
|
|
public SearchResultModel() {
|
|
|
ContentsFlagHelper.getInstance().registerChangedObserver(hashCode);
|
|
|
@@ -448,7 +449,11 @@ public class SearchResultModel extends Model {
|
|
|
}
|
|
|
|
|
|
public boolean hasResult() {
|
|
|
- return getTagResultBeans().size() > 0 || (null != appliedSearchFilterBeans && appliedSearchFilterBeans.size() > 0);
|
|
|
+ return getTagResultBeans().size() > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isFilterApplied() {
|
|
|
+ return isFilterApplied;
|
|
|
}
|
|
|
|
|
|
private SearchFilterBean getSearchFilterBean(@StringRes int nameId, String filterNo) {
|
|
|
@@ -462,11 +467,10 @@ public class SearchResultModel extends Model {
|
|
|
}
|
|
|
|
|
|
public void loadFilter() {
|
|
|
- // todo buffer 구성 필요?
|
|
|
-// if (null != searchFilterSectionBeans) {
|
|
|
-// onResult(new Event.Builder(Event.SUCCESS).index(Event.LOADED_FILTER).build());
|
|
|
-// return;
|
|
|
-// }
|
|
|
+ if (null != searchFilterSectionBeans) {
|
|
|
+ onResult(new Event.Builder(Event.SUCCESS).index(Event.LOADED_FILTER).build());
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
disposableFilter = new APISearchFilterModule().call(new RequestBean(), new APIModuleSimpleListener<SearchFilterResultBean>(waiterCaller) {
|
|
|
@Override
|
|
|
@@ -538,33 +542,13 @@ public class SearchResultModel extends Model {
|
|
|
}
|
|
|
|
|
|
private SearchResultBean filterSearchResultBean;
|
|
|
- private List<SearchFilterBean> searchFilterBeans;
|
|
|
private List<SearchFilterBean> appliedSearchFilterBeans;
|
|
|
private List<SearchFilterSectionBean> searchFilterSectionBeans;
|
|
|
|
|
|
- /**
|
|
|
- * 리스트에 반영된 필터 id 리스트 반환
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public List<SearchFilterBean> getAppliedSearchFilterBeans() {
|
|
|
- return appliedSearchFilterBeans;
|
|
|
- }
|
|
|
-
|
|
|
public final List<SearchFilterSectionBean> getFilterList() {
|
|
|
return searchFilterSectionBeans;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 필터 설정 - 아직 실제 리스트에 반영하기 전 데이터
|
|
|
- *
|
|
|
- * @param filterIds
|
|
|
- */
|
|
|
- public void setFilter(List<SearchFilterBean> filterIds) {
|
|
|
- // 선택 리스트가 없이 object 참조를 이용
|
|
|
-// searchFilterBeans = filterIds;
|
|
|
- }
|
|
|
-
|
|
|
public void loadFilteringContents(IWaiterCallable waiterCallable, IEventListener listener) {
|
|
|
Log.w("APP# SearchResultModel | loadFilteringContents", "|" + " -------------------------- ");
|
|
|
|
|
|
@@ -579,6 +563,8 @@ public class SearchResultModel extends Model {
|
|
|
requestBean.setCategoryNumber(categoryCheckBean.getCategoryNumber());
|
|
|
}
|
|
|
|
|
|
+ isFilterApplied = false;
|
|
|
+
|
|
|
// 필터 적용
|
|
|
if (applyFilter(requestBean) == false) {
|
|
|
filterSearchResultBean = null;
|
|
|
@@ -597,6 +583,7 @@ public class SearchResultModel extends Model {
|
|
|
public void onApiSuccess(SearchResultBean resultBean) {
|
|
|
filterSearchResultBean = resultBean;
|
|
|
if (null != filterSearchResultBean) {
|
|
|
+ isFilterApplied = true;
|
|
|
int count = filterSearchResultBean.getListCount();
|
|
|
if (null == filterSearchResultBean.getTagBeans() || filterSearchResultBean.getTagBeans().size() == 0) {
|
|
|
count = 0;
|
|
|
@@ -641,7 +628,7 @@ public class SearchResultModel extends Model {
|
|
|
// 필터링 처리한 임시 데이터
|
|
|
List<SearchContentsBean> targetList = resultContentsBeans;
|
|
|
|
|
|
- // 필터링 한 데이터가 있다면 사용
|
|
|
+ // 필터링 한 데이터가 있다면 그것을 이용
|
|
|
if (null != filterSearchResultBean) {
|
|
|
// 일치하는 결과가 있음.
|
|
|
if (null != filterSearchResultBean.getTagBeans() && filterSearchResultBean.getTagBeans().size() > 0) {
|
|
|
@@ -690,11 +677,6 @@ public class SearchResultModel extends Model {
|
|
|
|
|
|
|
|
|
private boolean applyFilter(SearchRequestBean requestBean) {
|
|
|
- return applyFilter(requestBean, appliedSearchFilterBeans);
|
|
|
- }
|
|
|
-
|
|
|
- private boolean applyFilter(SearchRequestBean requestBean, List<SearchFilterBean> list) {
|
|
|
- // list 는 항상 null 임
|
|
|
// 필터 추가
|
|
|
boolean isApplied = false;
|
|
|
if (null != searchFilterSectionBeans) {
|
|
|
@@ -713,12 +695,6 @@ public class SearchResultModel extends Model {
|
|
|
isApplied = true;
|
|
|
requestBean.setFilterPlace(requestBean.getFilterPlace() + StringUtil.HASH + tagBean.getTagNo());
|
|
|
break;
|
|
|
-// case SearchFilterBean.FILTER_TYPE_ORDER:
|
|
|
-// requestBean.setOrder(searchFilterBean.getFilterNo());
|
|
|
-// break;
|
|
|
-// case SearchFilterBean.FILTER_TYPE_PROPERTY:
|
|
|
-// requestBean.setFilter(requestBean.getFilter() + StringUtil.HASH + searchFilterBean.getFilterNo());
|
|
|
-// break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
@@ -759,6 +735,7 @@ public class SearchResultModel extends Model {
|
|
|
* 필터링 취소
|
|
|
*/
|
|
|
public void cancelFilter() {
|
|
|
+ isFilterApplied = false;
|
|
|
filterSearchResultBean = null;
|
|
|
}
|
|
|
|
|
|
@@ -768,11 +745,10 @@ public class SearchResultModel extends Model {
|
|
|
public void commitFilter() {
|
|
|
|
|
|
if (null == filterSearchResultBean) {
|
|
|
- appliedSearchFilterBeans = null;
|
|
|
- // 선택된 필터 없으므로 그냥 둠.
|
|
|
+ isFilterApplied = false;
|
|
|
}
|
|
|
else {
|
|
|
- appliedSearchFilterBeans = new ArrayList<>(searchFilterBeans);
|
|
|
+ isFilterApplied = true;
|
|
|
parseResult(filterSearchResultBean);
|
|
|
|
|
|
onResult(new Event.Builder(Event.SUCCESS).integer(Event.SEARCH_TAG_CATEGORY).build());
|
|
|
@@ -786,8 +762,7 @@ public class SearchResultModel extends Model {
|
|
|
* @return
|
|
|
*/
|
|
|
public int getFilteredCount() {
|
|
|
- if (null == getAppliedSearchFilterBeans() || getAppliedSearchFilterBeans().size() == 0) {
|
|
|
- // 필터 적용하지 않았음
|
|
|
+ if (isFilterApplied == false) {
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
@@ -800,6 +775,31 @@ public class SearchResultModel extends Model {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * filter data reset
|
|
|
+ */
|
|
|
+ public void resetFilter() {
|
|
|
+ isFilterApplied = false;
|
|
|
+
|
|
|
+ int len = searchFilterSectionBeans.size();
|
|
|
+ for (int i = 0; i < len; ++i) {
|
|
|
+ SearchFilterSectionBean bean = searchFilterSectionBeans.get(i);
|
|
|
+ for (SearchFilterBean filterBean : bean.getFilterBeans()) {
|
|
|
+ filterBean.setSelected(false);
|
|
|
+ if (SearchFilterBean.hasChildValue(filterBean)) {
|
|
|
+ for (FilterTagBean tagBean : filterBean.getTagBeans()) {
|
|
|
+ tagBean.setSelected(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 정렬 순서 초기값
|
|
|
+ if (SearchFilterBean.FILTER_TYPE_ORDER.equals(bean.getSectionType())) {
|
|
|
+ bean.getFilterBeans().get(0).setSelected(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
interface IFilterDetailListener {
|
|
|
void onCompleted(SearchFilterBean searchFilterBean);
|
|
|
|