//(function () { angular.module('MobileWebLogistics') .service('localCustom', function () { var self = this; //=====custom searchBar search this.search = function ($scope, fromTypeahead) { //searchFrame $scope.advSearch1 = false; $scope.advSearch2 = false; $scope.advSearch3 = false; $scope.advSearch4 = false; $("#searchFrame").collapse('hide'); $scope.closeDialog(); if ($scope.searchBtn == "submitSearchMap") { $scope.showMap(); $("#identifyPreloaderContainer").addClass("active"); } else { $scope.showList(); } var drawButtons = $("#drawTools > div"); for (var i = 0; i < drawButtons.length; i++) { if ($(drawButtons[i]).hasClass("selected")) { $("#openDrawTools").removeClass("active"); $("#drawTools").removeClass("active"); $("#drawTools .selected").removeClass("selected"); $("#drawTools .unselected").removeClass("unselected"); $scope.toolbar.deactivate(); } } $("#searchPreloaderContainer").addClass("active"); $("#listResults").addClass("inactive"); setTimeout(function () { $scope.thisSearchMode = $("#search1").hasClass("active"); $scope.queryTask = new $scope.QueryTask($scope.queryTaskUrl); $scope.query2.outFields = $scope.initParcelFields; $scope.query2.returnGeometry = true; var numQueryField = 1; $scope.thisTxtboxSearch = ""; $scope.queryStringDate = ""; $scope.queryStringPrice = ""; $scope.searchQueryString = ""; if ($("#search1").hasClass("active")) { if (fromTypeahead > 0) { $scope.thisTxtboxSearch = $("#defSearch" + fromTypeahead.toString()).val().trim().replace(/'/g, "''"); $scope.query2.where = "" + $scope.addToSearchAheadOutFields[fromTypeahead - 1] + " = '" + $scope.thisTxtboxSearch + "'"; $scope.queryTask.execute($scope.query2, $scope.showResults); } else { while (numQueryField < $scope.numDqueryField + 1) { //create query string for textboxes //alert(numQueryField.toString()); $scope.thisTxtboxSearch = $("#defSearch" + numQueryField.toString()).val().trim().replace(/'/g, "''"); if (numQueryField > 1) { $scope.searchQueryString += " AND "; } if ($scope.thisTxtboxSearch.length > 0) { $scope.searchQueryString += "(" + $scope.addToSearchAheadOutFields[numQueryField - 1] + " LIKE '%" + $scope.thisTxtboxSearch + "%')"; } else { $scope.searchQueryString += "(" + $scope.addToSearchAheadOutFields[numQueryField - 1] + " LIKE '%" + $scope.thisTxtboxSearch + "%' OR " + $scope.addToSearchAheadOutFields[numQueryField - 1] + " IS NULL)"; } numQueryField++; } if ($("#ndefaultSearch #startDate").length) { $scope.thisSearchStartDate = $("#ndefaultSearch #startDate").val().trim().replace(/'/g, "''"); $scope.thisSearchEndDate = $("#ndefaultSearch #endDate").val().trim().replace(/'/g, "''"); $scope.queryStringStartDate = ""; $scope.queryStringEndDate = ""; if ($scope.thisSearchStartDate.length > 0) { //create query string for sale date $scope.queryStringStartDate = " (" + $scope.saleDateFld + " >= '" + $scope.thisSearchStartDate + "')"; } if ($scope.thisSearchEndDate.length > 0) { $scope.queryStringEndDate = " (" + $scope.saleDateFld + " <= '" + $scope.thisSearchEndDate + "')"; } if (($scope.thisSearchStartDate.length > 0) && ($scope.thisSearchEndDate.length > 0)) { $scope.queryStringDate = $scope.queryStringStartDate + " AND" + $scope.queryStringEndDate; } else { $scope.queryStringDate = $scope.queryStringStartDate + $scope.queryStringEndDate; } } if ($("#ndefaultSearch #priceSlider-value-min").length) { //create query string for sale price $scope.priceMin = $("#ndefaultSearch #priceSlider-value-min").html().replace('$', '').replace(/,/g, ''); $scope.priceMax = $("#ndefaultSearch #priceSlider-value-max").html().replace('$', '').replace(/,/g, ''); if ($scope.priceMax == $scope.searchPriceMax) { $scope.priceMax = 99999999999; } $scope.queryStringPriceMin = ""; $scope.queryStringPriceMax = ""; if ($scope.priceMin > $scope.searchPriceMin) { $scope.queryStringPriceMin = " (" + $scope.salePriceFld + " >= '" + $scope.priceMin + "')"; } if ($scope.priceMax < 99999999999) { $scope.queryStringPriceMax = " (" + $scope.salePriceFld + " <= '" + $scope.priceMax + "')"; } if (($scope.priceMin > $scope.searchPriceMin) && ($scope.priceMax < 99999999999)) { $scope.queryStringPrice = $scope.queryStringPriceMin + " AND" + $scope.queryStringPriceMax; } else { $scope.queryStringPrice = $scope.queryStringPriceMin + $scope.queryStringPriceMax; } } if ($scope.queryStringDate.length > 0) { $scope.searchQueryString += " AND " + $scope.queryStringDate; } if ($scope.queryStringPrice.length > 0) { $scope.searchQueryString += " AND " + $scope.queryStringPrice; } $scope.query2.where = $scope.searchQueryString; $scope.queryTask.execute($scope.query2, $scope.showResults); } } else { //advanced search *separate from default search in case of customization $scope.advSearch1Query = ""; $scope.advSearch2Query = ""; $scope.advSearch3Query = ""; $scope.advSearch4Query = ""; $scope.advSearch5Query = ""; $scope.advSearch6Query = ""; var datePriceFldCt = 0; if ($("#ndefaultSearch").find("#dateFromOpt").length != 0) { datePriceFldCt = 1 } if ($("#ndefaultSearch").find("#priceBar").length != 0) { datePriceFldCt += 1 } if ($scope.directAdvSearch == 'true') { while (numQueryField < $scope.numAqueryField + 1) { $scope.thisTxtboxSearch = $("#advSearch" + numQueryField.toString()).val().trim().replace(/'/g, "''"); if ($scope.thisTxtboxSearch.length > 0) { if ($scope.searchQueryString.length > 1) { $scope.searchQueryString += " AND "; } $scope.searchQueryString += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + " = '" + $scope.thisTxtboxSearch + "')"; } numQueryField++; } } else { while (numQueryField < $scope.numAqueryField + 1 - 2) { $scope.thisTxtboxSearch = $("#advSearch" + numQueryField.toString()).val().trim().replace(/'/g, "''"); if (numQueryField > 1) { $scope.searchQueryString += " AND "; } if ($scope.thisTxtboxSearch.length > 0) { $scope.searchQueryString += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + " LIKE '%" + $scope.thisTxtboxSearch + "%')"; } else { $scope.searchQueryString += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + " LIKE '%" + $scope.thisTxtboxSearch + "%' OR " + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + " IS NULL)"; } numQueryField++; } $scope.thisTxtboxSearch = $("#advSearch3").val().trim(); if ($scope.thisTxtboxSearch.length > 0) { $scope.searchQueryString += " AND (" + $scope.addToSearchAheadOutFields[5] + " >= " + parseFloat($scope.thisTxtboxSearch) + ")"; } $scope.thisTxtboxSearch = $("#advSearch4").val().trim(); if ($scope.thisTxtboxSearch.length > 0) { $scope.searchQueryString += " AND (" + $scope.addToSearchAheadOutFields[5] + " <= " + parseFloat($scope.thisTxtboxSearch) + ")"; } } if ($("#nadvancedSearch #startDate").length) { $scope.thisSearchStartDate = $("#nadvancedSearch #startDate").val().trim().replace(/'/g, "''"); $scope.thisSearchEndDate = $("#nadvancedSearch #endDate").val().trim().replace(/'/g, "''"); $scope.queryStringStartDate = ""; $scope.queryStringEndDate = ""; if ($scope.thisSearchStartDate.length > 0) { $scope.queryStringStartDate = " (" + $scope.saleDateFld + " >= '" + $scope.thisSearchStartDate + "')"; } if ($scope.thisSearchEndDate.length > 0) { $scope.queryStringEndDate = " (" + $scope.saleDateFld + " <= '" + $scope.thisSearchEndDate + "')"; } if (($scope.thisSearchStartDate.length > 0) && ($scope.thisSearchEndDate.length > 0)) { $scope.queryStringDate = $scope.queryStringStartDate + " AND" + $scope.queryStringEndDate; } else { $scope.queryStringDate = $scope.queryStringStartDate + $scope.queryStringEndDate; } } if ($("#nadvancedSearch #priceSlider-value-min").length) { $scope.priceMin = $("#nadvancedSearch #priceSlider-value-min").html().replace('$', '').replace(/,/g, ''); $scope.priceMax = $("#nadvancedSearch #priceSlider-value-max").html().replace('$', '').replace(/,/g, ''); if ($scope.priceMax == $scope.searchPriceMax) { $scope.priceMax = 99999999999; } $scope.queryStringPriceMin = ""; $scope.queryStringPriceMax = ""; if ($scope.priceMin > $scope.searchPriceMin) { $scope.queryStringPriceMin = " (" + $scope.salePriceFld + " >= '" + $scope.priceMin + "')"; } if ($scope.priceMax < 99999999999) { $scope.queryStringPriceMax = " (" + $scope.salePriceFld + " <= '" + $scope.priceMax + "')"; } if (($scope.priceMin > $scope.searchPriceMin) && ($scope.priceMax < 99999999999)) { $scope.queryStringPrice = $scope.queryStringPriceMin + " AND" + $scope.queryStringPriceMax; } else { $scope.queryStringPrice = $scope.queryStringPriceMin + $scope.queryStringPriceMax; } } if ($scope.queryStringDate.length > 0) { if ($scope.searchQueryString.length > 0) { $scope.searchQueryString += " AND " + $scope.queryStringDate; } else { $scope.searchQueryString = $scope.queryStringDate; } } if ($scope.queryStringPrice.length > 0) { if ($scope.searchQueryString.length > 0) { $scope.searchQueryString += " AND " + $scope.queryStringPrice; } else { $scope.searchQueryString = $scope.queryStringPrice; } } if ($scope.searchQueryString.length < 1) { $scope.searchQueryString = '1=1'; } $scope.query2.where = $scope.searchQueryString; $scope.queryTask.execute($scope.query2, $scope.showResults2); } }, 300); } //=====end of custom searchBar search //=====custom typeahead due to custom searchBar search this.preQueryAdvSearch = function ($scope, $http, qInput, qid) { var qint = parseInt(qid); //alert($("#ndefaultSearch").find("#dateFromOpt").length); alert($scope.numDqueryField); var datePriceFldCt = 0; if ($("#ndefaultSearch").find("#dateFromOpt").length != 0) { datePriceFldCt = 1 } if ($("#ndefaultSearch").find("#priceBar").length != 0) { datePriceFldCt += 1 } $scope.preAdvSearch = []; var searchField = $scope.addToSearchAheadOutFields[qint + $scope.numDqueryField + datePriceFldCt - 1]; var maxDisplay = 15; var typeAheadQstring = $scope.searchAheadUrl + '/query?f=json&where=' + searchField + '%20LIKE%20%27%25' + qInput + '%25%27&returnGeometry=false&spatialRel=esriSpatialRelIntersects&returnDistinctValues=true&orderByFields=' + searchField + '&outFields=' + searchField; if ($scope.combinedTypeAhead == "true") { var numQueryField = 1; typeAheadQstring = $scope.searchAheadUrl + '/query?f=json&where='; while (numQueryField < $scope.numAqueryField + 1) { //create query string for textboxes $scope.userInput = $("#advSearch" + numQueryField.toString()).val().trim().replace(/'/g, "''"); if ($scope.userInput.length > 0) { if (typeAheadQstring.substr(typeAheadQstring.length - 6) != "where=") { typeAheadQstring += " AND "; } if (numQueryField == 3) { typeAheadQstring += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + ">='" + $scope.userInput + "')"; } else if (numQueryField == 4) { typeAheadQstring += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + "<='" + $scope.userInput + "')"; } else if (numQueryField == qint) { typeAheadQstring += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + "%20LIKE%20%27%25" + $scope.userInput + "%25%27)"; } else { typeAheadQstring += "(" + $scope.addToSearchAheadOutFields[numQueryField + $scope.numDqueryField + datePriceFldCt - 1] + "='" + $scope.userInput + "')"; } } numQueryField++; } typeAheadQstring += '&returnGeometry=false&spatialRel=esriSpatialRelIntersects&returnDistinctValues=true&orderByFields=' + searchField + '&outFields=' + searchField; } return $http({ method: 'GET', url: typeAheadQstring, handleAs: "json" }).then(function (object) { maxDisplay = object.data.features.length; $scope.rawArray = []; for (var i = 0; i < maxDisplay; i++) { $scope.rawArray.push(object.data.features[i].attributes[searchField]); } $scope.rawArray.naturalSort(); for (var i = 0; i < maxDisplay; i++) { $scope.preAdvSearch.push($scope.rawArray[i]); } return $scope.preAdvSearch; }); } }); //})();