123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- $(function () {
- 'use strict';
- var searchView = window.$SearchView = {
- visibleObservable: null,
- isNotUse: ko.observable(true),
- height: ko.observable(),
- position: ko.observable(),
- popupOptions: {
- width: '315px',
- height: this.height,
- position: this.position,
- visible: this.visibleObservable,
- closeOnOutsideClick: false,
- shading: false,
- animation: {
- show: { type: "fade", duration: 350, from: 0, to: 1 },
- hide: { type: "fade", duration: 200, from: 1, to: 0 }
- },
- },
- hide: function () {
- if (this.visibleObservable() == true) {
- this.visibleObservable(false);
- }
- },
- setPopupVisibleObservable: function (visibleObservable) {
- /* if (this.visibleObservable) {
- this.visibleObservable(false);
- }*/
- if (visibleObservable === null || visibleObservable() === null) {
- $SearchView.isNotUse(true);
- }
- else {
- visibleObservable(false);
- $SearchView.isNotUse(false);
- }
- this.visibleObservable = visibleObservable;
- },
- toggleSearchView: function () {
- if (this.visibleObservable === null) return;
- this.visibleObservable(!this.visibleObservable());
- //var visible = visibles[currentSideMenuId];
- //visible( !visible() );
- },
- createDefaultArray: function (idName, defaultValue) {
- var obj = { Name: $G('selectAll') };
- obj[idName] = defaultValue || 0;
- return [obj];
- },
- filterObservableArrayForSelectBox: function (idFieldName, array) {
- return _.filter(array, function (x) {
- return x[idFieldName]() !== 0;
- });
- },
- createObservableArrayOfSelectBox: function (idName, array, defaultValue) {
- return ko.observableArray(this.createArrayOfSelectBox(idName, array, defaultValue));
- },
- createObservableCodeNamesOfSelectBoxForSearch: function (codeNames) {
- var array = [{ Id: 0, Name: $G('selectAll') }];
- return ko.observableArray(array.concat(codeNames));
- },
- createArrayOfSelectBox: function (idName, array, defaultValue) {
- var defaultArray = this.createDefaultArray(idName, defaultValue);
- if (_.isEmpty(array)) {
- return defaultArray;
- }
- return defaultArray.concat(array);
- },
- recalculateHeight: function () {
- var height = $('.header_wrap').height() + $('#toolbar').height() + 2;
- this.height($(window).height() - height);
- },
- getSearchItems: function (searchItemOptions, deferredReadyData) {
- if (_.isUndefined(searchItemOptions)) {
- return null;
- }
- var searchItems = {};
- $.each(searchItemOptions, function (i, item) {
- var sItem = searchItems[item.id] = {
- //check: ko.observable(false),
- check: item['isChecked'] ? ko.observable(true) : ko.observable(false),
- value: item.value || (item.type === 'dateRange' ? [ko.observable(), ko.observable()] : ko.observable()),
- ignoreValue: item.ignoreValue,
- handleChangedValue: item.handleChangedValue,
- type: item.type,
- withCheckId: item.withCheckId,
- operator: item.operator,
- entityForCheckingUse: item.entityForCheckingUse,
- dataSource: undefined,
- filterFormatString: item.filterFormatString || undefined,
- isOnlyDate: item.isOnlyDate || false
- };
- if (_.has(item, 'dataSource')) {
- if (item.type === 'checkNull') {
- var array = [];
- item.dataSource().forEach(function (text, i) {
- array.push({ Id: i, Name: text });
- });
- sItem.dataSource = ko.observableArray(array);
- }
- else {
- sItem.dataSource = item.dataSource;
- }
- }
- });
- $.each(searchItems, function (name, item) {
- if (_.isUndefined(item.withCheckId) === false) {
- searchItems[item.withCheckId].check.subscribe(function (value) {
- item.check(value);
- });
- }
- });
- if (_.isUndefined(deferredReadyData) === false) {
- deferredReadyData.done(function () {
- $.each(searchItemOptions, function (i, item) {
- if (_.isUndefined(item.defaultValue) === false) {
- var value = searchItems[item.id].value;
- value(item.defaultValue);
- }
- });
- });
- }
- return searchItems;
- },
- getFilter: function (searchItems) {
- var filter = [];
- var isValid = BWA.DataUtil.isValidValue;
- $.each(searchItems, function (name, item) {
- if (item.check() !== true) return true;
- switch (item.type) {
- case 'dateRange':
- {
- var tempDate = item.value[0]();
- // hcLee 2016 02 23
- if (item.isOnlyDate === true) {
- tempDate = moment(tempDate).startOf('day').toDate();
- }
- if (isValid(tempDate)) {
- filter.push('and');
- filter.push([name, '>=', tempDate]);
- }
- tempDate = item.value[1]();
- if (item.isOnlyDate === true) {
- tempDate = moment(tempDate).endOf('day').toDate();
- }
- if (isValid(tempDate)) {
- filter.push('and');
- filter.push([name, '<=', tempDate]);
- }
- }
- break;
- case 'checkNull':
- {
- if (item.value() == 1) {
- filter.push('and');
- filter.push([name, '<>', null]);
- }
- else if (item.value() == 2) {
- filter.push('and');
- filter.push([name, '=', null]);
- }
- }
- break;
- case 'formatting':
- {
- if (_.isUndefined(item.value()) === false) {
- filter.push('and');
- filter.push([item.filterFormatString.formati(item.value())]);
- //filter.push([item.filterFormatString.formati(item.value()), 'contains', item.value()]);
- //filter.push([name, 'contains', item.value()]);
- }
- }
- break;
- default:
- {
- var v = item.value();
- if (_.isUndefined(v) === false) {
- if (item.ignoreValue !== v) {
- switch (typeof v) {
- case 'string':
- {
- if (v.length > 0) {
- filter.push('and');
- filter.push([name, 'contains', v]);
- }
- break;
- }
- default:
- {
- filter.push('and');
- filter.push([name, item.operator || '=', v]);
- break;
- }
- }
- }
- else if (_.isString(item.entityForCheckingUse)) {
- filter.push('and');
- filter.push([item.entityForCheckingUse + '/IsUse', '=', true]);
- }
- }
- }
- break;
- }
- });
- return filter;
- },
- setupInView: function (viewModel, options, popupSearchViewVisible, defaultFilter, handleSearchFilter, handleInitializeUpdate) {
- this.recalculateHeight();
- this.position({ my: 'right top', at: 'right bottom', of: $('#toolbar') });
- popupSearchViewVisible(false);
- var initialized = false;
- viewModel.popupSearchViewOptions = {
- width: '300px',
- height: this.height,
- position: this.position,
- visible: popupSearchViewVisible,
- closeOnOutsideClick: false,
- shading: false,
- animation: {
- //show: { type: "slide", duration: 150, from: { top: -300, opacity: 0.8 }, to: { top: 300, opacity: 1 } },
- //hide: { type: "slide", duration: 100, from: { left: window.innerWidth - 260, width: '260px', opacity: 1 }, to: { left: window.innerWidth - 1, width: '0px', opacity: 0.8 } }
- show: { type: "fade", duration: 350, from: 0, to: 1 },
- hide: { type: "fade", duration: 200, from: 1, to: 0 }
- //show: { type: "slide", duration: 150, from: { left: screenWidth() - 260, width: '260px', opacity: 0.0 }, to: { left: screenWidth() - 260, width: '260px', opacity: 1 } },
- //hide: { type: "slide", duration: 100, from: { left: screenWidth() - 260, width: '260px', opacity: 1 }, to: { left: screenWidth() - 260, width: '260px', opacity: 0 } }
- //show: { type: "slide", duration: 150, from: { left: window.innerWidth, width: '0px', opacity: 0 }, to: { left: window.innerWidth - 270, width: '260px', opacity: 1 } },
- //hide: { type: "slide", duration: 100, from: { left: window.innerWidth - 260, width: '260px', opacity: 1 }, to: { left: window.innerWidth, width: '0px', opacity: 1 } }
- //show: { type: "slide", duration: 150, from: { left: window.innerWidth + 260 , opacity: 1 }, to: { left: window.innerWidth , opacity: 1 } },
- //hide: { type: "slide", duration: 100, from: { left: window.innerWidth , opacity: 1 }, to: { left: window.innerWidth + 260 , opacity: 1 } }
- },
- showingAction: function () {
- },
- shownAction: function () {
- if (initialized === false) {
- if (_.isFunction(handleInitializeUpdate)) {
- handleInitializeUpdate();
- }
- initialized = true;
- }
- }
- };
- var searchViewItems = this.getSearchItems(options.searchViewItems, options.promiseDataInSearchView);
- if (_.isNull(searchViewItems)) {
- throw 'need "searchViewItems"';
- }
- viewModel.searchViewItems = searchViewItems;
- var self = this;
- viewModel.handleSearchInSearchView = function () {
- var filter = self.getFilter(searchViewItems);
- if (viewModel.name != "PatrolReport") {
- filter = _.isNull(defaultFilter) ? filter : defaultFilter().slice(0).concat(filter);
- } else {
- if (filter.length == 0) {
- var temp = ['SiteId', '=', BWA.UserInfo.SiteId()];
- filter = temp;
- }
- else {
- var temp = ['SiteId', '=', BWA.UserInfo.SiteId()];
- filter = filter.slice(1);
- var length = filter.length
- filter[length] = "and";
- filter[length + 1] = temp;
- }
- }
- if (_.isFunction(viewModel.handleSearchInSearchView2))
- viewModel.handleSearchInSearchView2(filter);
- else
- handleSearchFilter(filter, searchViewItems);
- //koFilterWidget().filter( filter );
- };
- }
- };
- $(window).resize(function (event) {
- searchView.recalculateHeight();
- });
- });
|