{"version":3,"sources":["webpack:///./src/components/google-maps/google-map-loader.vue?d765","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./src/components/app-avatar.vue?1818","webpack:///src/components/app-avatar.vue","webpack:///./src/components/app-avatar.vue?b5a2","webpack:///./src/components/app-avatar.vue","webpack:///./src/components/datatable/datatable.vue?8781","webpack:///./node_modules/google-maps-api-loader/lib/url-builder.js","webpack:///./src/assets/cal.svg","webpack:///./src/components/datatable/datatable.vue?b7bd","webpack:///src/components/datatable/datatable.vue","webpack:///./src/components/datatable/datatable.vue?aa5f","webpack:///./src/components/datatable/datatable.vue","webpack:///./src/views/project/search.vue?af3f","webpack:///./src/views/project/components/project-advanced-search.vue?acf4","webpack:///src/views/project/components/project-advanced-search.vue","webpack:///./src/views/project/components/project-advanced-search.vue?bd97","webpack:///./src/views/project/components/project-advanced-search.vue","webpack:///./src/views/project/components/project-saved-search.vue?182a","webpack:///src/views/project/components/project-saved-search.vue","webpack:///./src/views/project/components/project-saved-search.vue?4bff","webpack:///./src/views/project/components/project-saved-search.vue","webpack:///./src/views/project/components/project-search-results.vue?c70c","webpack:///./src/views/project/components/project-bulletin-report.vue?d5c6","webpack:///src/views/project/components/project-bulletin-report.vue","webpack:///./src/views/project/components/project-bulletin-report.vue?ed6b","webpack:///./src/views/project/components/project-bulletin-report.vue","webpack:///src/views/project/components/project-search-results.vue","webpack:///./src/views/project/components/project-search-results.vue?e245","webpack:///./src/views/project/components/project-search-results.vue","webpack:///./src/views/project/components/project-search-maps.vue?776a","webpack:///./src/components/google-maps/google-map-loader.vue?b16c","webpack:///src/components/google-maps/google-map-loader.vue","webpack:///./src/components/google-maps/google-map-marker.vue","webpack:///./src/components/google-maps/google-map-loader.vue?0af6","webpack:///./src/components/google-maps/google-map-loader.vue","webpack:///src/components/google-maps/google-map-marker.vue","webpack:///./src/components/google-maps/google-map-marker.vue?fd74","webpack:///src/views/project/components/project-search-maps.vue","webpack:///./src/views/project/components/project-search-maps.vue?11ea","webpack:///./src/views/project/components/project-search-maps.vue","webpack:///src/views/project/search.vue","webpack:///./src/views/project/search.vue?0637","webpack:///./src/views/project/search.vue","webpack:///./src/utils/fileDownload.js","webpack:///./src/views/project/components/project-advanced-search.vue?b79d","webpack:///./src/components/app-navbar.vue?1b9d","webpack:///src/components/app-navbar.vue","webpack:///./src/components/app-navbar.vue?485d","webpack:///./src/components/app-navbar.vue","webpack:///./src/views/project/components/project-follow-button.vue?b549","webpack:///src/views/project/components/project-follow-button.vue","webpack:///./src/views/project/components/project-follow-button.vue?aab3","webpack:///./src/views/project/components/project-follow-button.vue","webpack:///./node_modules/google-maps-api-loader/src/google-maps-api-loader.js","webpack:///./src/utils/toast.js","webpack:///./node_modules/google-maps-api-loader/index.js"],"names":["global","factory","module","exports","this","objectOrFunction","x","type","isFunction","_isArray","Array","isArray","Object","prototype","toString","call","len","vertxNext","customSchedulerFn","asap","callback","arg","queue","flush","scheduleFlush","setScheduler","scheduleFn","setAsap","asapFn","browserWindow","window","undefined","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useNextTick","nextTick","useVertxTimer","useSetTimeout","useMutationObserver","iterations","observer","node","document","createTextNode","observe","characterData","data","useMessageChannel","channel","port1","onmessage","port2","postMessage","globalSetTimeout","setTimeout","i","attemptVertx","vertx","Function","require","runOnLoop","runOnContext","e","then","onFulfillment","onRejection","parent","child","constructor","noop","PROMISE_ID","makePromise","_state","arguments","invokeCallback","_result","subscribe","resolve$1","object","Constructor","promise","resolve","Math","random","substring","PENDING","FULFILLED","REJECTED","selfFulfillment","TypeError","cannotReturnOwn","tryThen","then$$1","value","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","error","fulfill","reason","reject","_label","handleOwnThenable","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","_subscribers","length","subscribers","settled","detail","hasCallback","succeeded","initializePromise","resolver","id","nextId","validationError","Error","Enumerator","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","c","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","state","enumerator","all","entries","race","_","reject$1","needsResolver","needsNew","Promise","catch","finally","polyfill","local","P","promiseToString","cast","_setScheduler","_setAsap","_asap","render","_vm","_h","$createElement","_c","_self","staticClass","style","attrs","_v","_s","avatarLetters","staticRenderFns","name","props","size","backgroundColors","computed","initial","svgStyle","textStyle","methods","parts","initials","charAt","toUpperCase","component","urlBuilder","params","builtUrl","base","apiKey","client","libraries","forEach","library","index","language","version","_t","localDatasetTotal","isFirstPage","on","$event","turnPage","currentPage","isLastPage","directives","rawName","query","expression","$$selectedVal","filter","target","options","o","selected","map","val","_value","$set","multiple","onPageSizeChange","_l","key","domProps","column","field","isVisible","handleColumnSelection","checked","display","applyColumnVisibility","_e","class","hasData","isAllCurrentPageRecordsSelected","checkAll","preventDefault","handleSortColumn","getSortDirection","isLocalData","filterable","item","handleFilterSelection","filterOptions","onFilter","visibleColumns","onRowClass","onRowClick","onRowDblClick","isSelected","selectRecord","columns","total","pageSizeOptions","selectedRows","selectable","Boolean","isLoading","columnFilter","rowClass","isOpen","columnChanges","filterChanges","localDataset","watch","values","page","availableRecords","pageSize","selectableColumns","contentColumns","$emit","getItemValue","columnSplit","shift","parentColumn","join","sortOrder","fieldName","sortDirection","push","querySelector","scrollTo","sort","value1","value2","find","records","pos","splice","isAllChecked","uncheckedItems","toggleColumnDropdown","generateColumnFilters","created","keys","q","mounted","showSidebar","isPageLoading","ref","searchCriteria","toggleSidebar","currentTabComponent","tag","isDataLoading","searchResults","results","searchParams","documentSearch","changeTab","triggerAdvancedSearchSubmit","adOneImages","onSubmit","selectSavedSearch","search","deleteSavedSearch","required","errors","has","keyword","composing","_i","$$a","$$el","$$c","$$v","$$i","concat","slice","staticStyle","zone","getZones","model","_q","provideFollowedOnly","$permissions","isClientAdmin","isSysAdmin","hasAddPrivateProjectPermission","provideHiddenOnly","providePrivateProjects","_m","datepickerOptions","classificationTypeId","classification","getClassificationsOfWork","work","classificationOfWorkIds","stage","tenderStagesWithoutPermits","procurementType","getFundingTypes","saveSearch","clearSearch","adTwoImages","components","DatePicker","useCurrent","format","selectedClassificationType","classificationOfWorks","showDocumentSearch","getTenderStages","$nextTick","$bvModal","show","parsed","selectedSearchId","searchId","isPublic","closeModal","hide","selectedRecords","hasProjectSearchColumns","goToProject","setContextualClass","onSelectedColumnsChanged","onColumnSortChanged","onPageSizeChanged","scopedSlots","_u","fn","goToMapView","isExporting","exportDataset","print","proxy","row","ocaaNumber","lcaNumber","title","classificationOfWork","keywordDensity","_f","closingDate","timeZone","code","owner","ownerType","addenda","siteMeetings","text","belongZone","getCitiesDisplay","addresses","tenderStage","funding","budget","ownerSolicitationNumber","filteredRowBids","bids","bidder","companyName","contact","contacts","addendaInfo","createdOn","updatedOn","isUserFollowing","qs","$route","isInitialLoad","triggerSearch","reportRequest","onManipulateByChanged","option","onReset","onCloseModal","template","manipulateBy","manipulateDirection","manipulateByGroupByOptions","manipulateBySortByOptions","manipulateDirectionValues","$validator","reset","visibleColumnNames","hasEditProjectPermission","start","end","closing","lastUpdated","siteMeeting","exportAll","getFundingTypeName","getSiteMeetingDisplay","getTenderStageName","getZoneName","$router","openBulletinReportModal","localStorage","setItem","STORAGE_KEY_PROJECT_TABLE_PAGE_SIZE","JSON","stringify","STORAGE_KEY_PROJECT_TABLE_SELECTED_COLUMNS","activeColumns","STORAGE_KEY_PROJECT_TABLE_COLUMN_SORTING","showProject","isPrivate","subscribeToProject","goToResultsView","reloadKey","mapConfig","markers","getGoogleMapKey","google","info","marker","initializeMap","maps","Map","mapContainer","InfoWindow","fitBounds","bounds","setZoom","zoom","position","addListener","Date","now","projects","generateMarkers","address","project","content","flatMap","constructMarkers","city","zoneIds","createdStart","createdEnd","lastUpdatedStart","lastUpdatedEnd","siteMeetingStart","siteMeetingEnd","ownerTypeId","tenderStageIds","procurementTypeId","fundingTypeIds","ProjectAdvancedSearch","ProjectSearchResults","ProjectSavedSearch","ProjectSearchMaps","oldValue","newValue","getSearchResults","$refs","projectAdvanceSearch","tab","getKeywordDensity","response","keywordDensityTotal","beforeMount","tenderStageId","fetchUser","_user","user","isSystemAdmin","FileDownload","filename","blob","url","URL","createObjectURL","Blob","link","createElement","href","rel","setAttribute","body","appendChild","click","removeChild","hasAddProjectPermission","myPlanroomLink","permitsLink","publicDirectoryLink","getUserName","toUpgradeMembership","getCurrentUser","useMembershipPayment","useNews","usePaymentReports","usePublicDirectoryLink","getCurrentRoute","hasCompanies","companies","hasPaidMembership","roles","getUser","some","isBidCentralClient","isMembershipPurchaseAvailable","isNewsAvailable","isPaymentReportsAvailable","hasViewPaymentPermission","message","fetchClientSettings","buttonTitleAttr","setSubscriptionToProject","projectId","projectTitle","isAvailable","isFollowing","googleApi","loadAutoCompleteAPI","script","src","googleMapsApiLoader","googleMapsAutoCompleteAPILoad","defaultOptions","noCloseButton","autoHideDelay","toaster","isStatus","success","context","overrideOptions","variant","$root","$bvToast","toast","danger"],"mappings":"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","file":"js/chunk-801ec8b2.50616793.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./google-map-loader.vue?vue&type=style&index=0&id=554a38e6&scoped=true&lang=css&\"","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{staticClass:\"flex-shrink-0\",style:(_vm.svgStyle)},[_c('text',{style:(_vm.textStyle),attrs:{\"x\":\"50%\",\"y\":\"50%\",\"text-anchor\":\"middle\",\"dominant-baseline\":\"central\"}},[_vm._v(\" \"+_vm._s(_vm.avatarLetters)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <svg class=\"flex-shrink-0\" :style=\"svgStyle\">\r\n <text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dominant-baseline=\"central\" :style=\"textStyle\">\r\n {{ avatarLetters }}\r\n </text>\r\n </svg>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'app-avatar',\r\n props: {\r\n size: { required: true, type: Number, default: 40 },\r\n name: { required: true, type: String }\r\n },\r\n data: function () {\r\n return {\r\n backgroundColors: [\r\n '#011627', '#011627', '#41EAD4', '#FDFFFC ', \"#0D3B66\", \"#FAF0CA\", \"#F95738\", \"#FDFFFC\"\r\n ]\r\n }\r\n },\r\n computed: {\r\n avatarLetters () {\r\n return this.initial(this.name);\r\n },\r\n svgStyle () {\r\n let backgroundColor = this.backgroundColors[this.avatarLetters.charCodeAt(0) % this.backgroundColors.length];\r\n return { width: `${ this.size }px`, height: `${ this.size }px`, borderRadius: '50%', background: backgroundColor }\r\n },\r\n textStyle () {\r\n return { fill: 'rgba(0, 0, 0, .7)', fontSize: `${this.size * 0.4}px` }\r\n }\r\n },\r\n methods: {\r\n initial (username) {\r\n let parts = username.split(' ')\r\n let initials = ''\r\n for (var i = 0; i < parts.length; i++) {\r\n initials += parts[i].charAt(0)\r\n }\r\n return initials.toUpperCase();\r\n },\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-avatar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-avatar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-avatar.vue?vue&type=template&id=65164ee3&\"\nimport script from \"./app-avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./app-avatar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datatable.vue?vue&type=style&index=0&id=4a015229&scoped=true&lang=css&\"","'use strict';\n\n/**\n * urlBuilder\n *\n * @param {object} params\n * @param {string} params.base the base url\n * @param {array} params.libraries an array of the libraries to be requested\n * @param {string} params.callback the callback function\n *\n * @return {string}\n */\nfunction urlBuilder(params) {\n var builtUrl = params.base;\n\n builtUrl += '?';\n\n if (params.apiKey) {\n builtUrl += 'key=' + params.apiKey + '&';\n }\n\n if (params.client) {\n builtUrl += 'client=' + params.client + '&';\n }\n\n if (params.libraries.length > 0) {\n builtUrl += 'libraries=';\n\n params.libraries.forEach(function(library, index) {\n builtUrl += library;\n\n if (index !== params.libraries.length - 1) {\n builtUrl += ',';\n }\n });\n\n builtUrl += '&';\n }\n\n if (params.language) {\n builtUrl += 'language=' + params.language + '&';\n }\n\n if (params.version) {\n builtUrl += 'v=' + params.version + '&';\n }\n\n builtUrl += 'callback=' + params.callback;\n\n return builtUrl;\n}\n\nmodule.exports = urlBuilder;\n","module.exports = __webpack_public_path__ + \"img/cal.c57fd2df.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('div',{staticClass:\"row align-items-center btn-toolbar mt-3\",attrs:{\"role\":\"toolbar\"}},[_c('div',{staticClass:\"col-lg-auto d-flex justify-content-center justify-content-lg-start\"},[_c('div',{staticClass:\"btn-group mb-0 d-print-none\",attrs:{\"role\":\"group\"}},[_vm._t(\"header-custom-btns\")],2)]),_c('div',{staticClass:\"col py-3 text-center\"},[_vm._v(_vm._s(_vm.localDatasetTotal)+\" record(s) found\")]),_c('div',{staticClass:\"col-lg-auto d-flex flex-column flex-sm-row align-items-center justify-content-center justify-content-lg-end d-print-none\"},[_c('div',{staticClass:\"btn-group mr-2 mb-0 p-1\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.isFirstPage,\"aria-label\":\"Previous page\"},on:{\"click\":function($event){return _vm.turnPage(-1)}}},[_c('i',{staticClass:\"fa fa-angle-left fa-lg\"})]),_c('span',{staticClass:\"btn\"},[_vm._v(\"Page \"+_vm._s(_vm.currentPage))]),_c('button',{staticClass:\"btn btn-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.isLastPage,\"aria-label\":\"Next page\"},on:{\"click\":function($event){return _vm.turnPage(1)}}},[_c('i',{staticClass:\"fa fa-angle-right fa-lg\"})])]),_c('div',{staticClass:\"mr-2 p-1\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"PageSize\"}},[_vm._v(\"Results per page\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query.pageSize),expression:\"query.pageSize\"}],staticClass:\"form-control border-primary\",attrs:{\"id\":\"PageSize\",\"name\":\"PageSize\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.query, \"pageSize\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.onPageSizeChange()}]}},_vm._l((_vm.pageSizeOptions),function(size){return _c('option',{key:size,domProps:{\"value\":size}},[_vm._v(_vm._s(size)+\" / Page\")])}),0)]),(_vm.columnFilter)?_c('div',{staticClass:\"dropdown p-1\"},[_c('button',{staticClass:\"btn btn-outline-dark dropdown-toggle\",attrs:{\"type\":\"button\",\"id\":\"dropdownMenuButton\",\"data-toggle\":\"dropdown\",\"aria-label\":\"Edit columns\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_c('i',{staticClass:\"fa fa-columns\"}),_c('span',{staticClass:\"caret\"})]),_c('div',{staticClass:\"dropdown-menu dropdown-menu-right\"},[_c('h6',{staticClass:\"dropdown-header\"},[_vm._v(\"Toggle columns\")]),_vm._l((_vm.selectableColumns),function(column){return _c('div',{key:column.field,staticClass:\"dropdown-item\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":'-col-' + column.field,\"name\":'-col-' + column.field},domProps:{\"checked\":column.isVisible},on:{\"change\":function($event){return _vm.handleColumnSelection(column, $event.target.checked)}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":'-col-' + column.field}},[_vm._v(_vm._s(column.display))])])])}),_c('div',{staticClass:\"dropdown-item\"},[_c('button',{staticClass:\"btn btn-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.applyColumnVisibility}},[_vm._v(\"Apply\")])])],2)]):_vm._e()])]),_c('div',{staticClass:\"table-responsive mt-3 d-print-none\"},[_c('table',{class:['table', { 'table-hover': _vm.hasData }]},[_c('thead',[(_vm.selectable)?_c('th',{staticClass:\"check-all\"},[_c('label',{staticClass:\"control control-checkbox\",attrs:{\"for\":\"checkall\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Select all rows\")]),_c('input',{attrs:{\"id\":\"checkall\",\"type\":\"checkbox\",\"name\":\"checkall\"},domProps:{\"checked\":_vm.isAllCurrentPageRecordsSelected},on:{\"click\":_vm.checkAll}}),_c('div',{staticClass:\"control_indicator\"})])]):_vm._e(),_vm._l((_vm.visibleColumns),function(column){return _c('th',{key:column.field},[_vm._v(\" \"+_vm._s(column.display || ' ')+\" \"),(column.sortable)?_c('a',{attrs:{\"href\":\"#\",\"role\":\"button\",\"aria-label\":\"Sort\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleSortColumn(column.field)}}},[_c('i',{class:_vm.getSortDirection(column.field)})]):_vm._e(),(_vm.isLocalData && column.filterable)?_c('button',{staticClass:\"btn btn-link dropdown-toggle\",attrs:{\"id\":((column.field) + \"-filter\"),\"type\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_c('i',{staticClass:\"fas fa-filter\",attrs:{\"aria-label\":\"Filter\"}})]):_vm._e(),(_vm.isLocalData && column.filterable)?_c('div',{staticClass:\"dropdown-menu\",attrs:{\"aria-labelledby\":((column.field) + \"-filter\")}},[_vm._l((column.filterOptions),function(item){return _c('div',{key:(\"filter-\" + (column.field) + \"-\" + item),staticClass:\"dropdown-item\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":(\"filter-\" + (column.field) + \"-\" + item)},on:{\"change\":function($event){return _vm.handleFilterSelection(column.field, item, $event.target.checked)}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":(\"filter-\" + (column.field) + \"-\" + item)}},[_vm._v(_vm._s(item))])])])}),(!column.filterOptions.length)?_c('div',{staticClass:\"dropdown-item\"},[_vm._v(\" No Filters \")]):_vm._e(),_c('div',{staticClass:\"dropdown-item\"},[_c('button',{staticClass:\"btn btn-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.onFilter()}}},[_vm._v(\"Apply\")])])],2):_vm._e()])})],2),(_vm.isLoading)?_c('tbody',[_c('tr',[_c('td',{attrs:{\"colspan\":_vm.visibleColumns.length + 1}},[_vm._t(\"loading\",[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"Loading...\")])])],2)])]):(_vm.hasData)?_c('tbody',[_vm._l((_vm.availableRecords),function(item){return [_c('tr',{key:item.id,class:_vm.onRowClass(item),on:{\"click\":function($event){if (_vm.onRowClick) { _vm.onRowClick(item) }},\"dblclick\":function($event){if (_vm.onRowDblClick) { _vm.onRowDblClick(item) }}}},[(_vm.selectable)?_c('th',{attrs:{\"scope\":\"row\"}},[_c('label',{staticClass:\"control control-checkbox\",attrs:{\"for\":(\"check-\" + (item.id))}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Select row\")]),_c('input',{attrs:{\"id\":(\"check-\" + (item.id)),\"type\":\"checkbox\",\"name\":\"category\"},domProps:{\"value\":item.id,\"checked\":_vm.isSelected(item.id)},on:{\"change\":function($event){return _vm.selectRecord($event.target.value)}}}),_c('div',{staticClass:\"control_indicator\"})])]):_vm._e(),_vm._l((_vm.contentColumns),function(column){return _c('td',{key:column.field},[_vm._t(column.field,null,{\"row\":item})],2)}),_vm._t(\"default\",null,{\"row\":item})],2)]})],2):_c('tbody',[_c('tr',[_c('td',{attrs:{\"colspan\":_vm.visibleColumns.length + 1}},[_vm._t(\"no-records\",[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\"No records found.\")])])],2)])])])]),(_vm.hasData)?_c('div',{staticClass:\"mt-3 d-none d-print-block\"},[_vm._l((_vm.availableRecords),function(item){return [_c('dl',{key:item.id,class:_vm.onRowClass(item)},_vm._l((_vm.columns),function(column){return _c('fragment',{key:column.field},[_c('dt',[_vm._v(_vm._s(column.display || ' '))]),_c('dd',[_vm._t(column.field,null,{\"row\":item})],2)])}),1)]})],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <fragment>\r\n <div class=\"row align-items-center btn-toolbar mt-3\" role=\"toolbar\">\r\n <div class=\"col-lg-auto d-flex justify-content-center justify-content-lg-start\">\r\n <div class=\"btn-group mb-0 d-print-none\" role=\"group\">\r\n <slot name=\"header-custom-btns\"></slot>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col py-3 text-center\">{{ localDatasetTotal }} record(s) found</div>\r\n\r\n <div class=\"col-lg-auto d-flex flex-column flex-sm-row align-items-center justify-content-center justify-content-lg-end d-print-none\">\r\n <div class=\"btn-group mr-2 mb-0 p-1\" role=\"group\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-link\"\r\n @click=\"turnPage(-1)\"\r\n :disabled=\"isFirstPage\"\r\n aria-label=\"Previous page\"\r\n >\r\n <i class=\"fa fa-angle-left fa-lg\"></i>\r\n </button>\r\n\r\n <span class=\"btn\">Page {{ currentPage }}</span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-link\"\r\n @click=\"turnPage(1)\"\r\n :disabled=\"isLastPage\"\r\n aria-label=\"Next page\"\r\n >\r\n <i class=\"fa fa-angle-right fa-lg\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"mr-2 p-1\">\r\n <label class=\"sr-only\" for=\"PageSize\">Results per page</label>\r\n <select\r\n id=\"PageSize\"\r\n name=\"PageSize\"\r\n class=\"form-control border-primary\"\r\n v-model=\"query.pageSize\"\r\n @change=\"onPageSizeChange()\"\r\n >\r\n <option v-for=\"size in pageSizeOptions\" :key=\"size\" :value=\"size\">{{ size }} / Page</option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"dropdown p-1\" v-if=\"columnFilter\">\r\n <button\r\n class=\"btn btn-outline-dark dropdown-toggle\"\r\n type=\"button\"\r\n id=\"dropdownMenuButton\"\r\n data-toggle=\"dropdown\"\r\n aria-label=\"Edit columns\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fa fa-columns\"></i>\r\n <span class=\"caret\"></span>\r\n </button>\r\n\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <h6 class=\"dropdown-header\">Toggle columns</h6>\r\n <div class=\"dropdown-item\" v-for=\"column in selectableColumns\" :key=\"column.field\">\r\n <div class=\"form-check\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n :id=\"'-col-' + column.field\"\r\n :name=\"'-col-' + column.field\"\r\n :checked=\"column.isVisible\"\r\n @change=\"handleColumnSelection(column, $event.target.checked)\"\r\n />\r\n <label class=\"form-check-label\" :for=\"'-col-' + column.field\">{{ column.display }}</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dropdown-item\">\r\n <button type=\"button\" class=\"btn btn-primary btn-block\" @click=\"applyColumnVisibility\">Apply</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Search results (hidden on print) -->\r\n <div class=\"table-responsive mt-3 d-print-none\">\r\n <table :class=\"['table', { 'table-hover': hasData }]\">\r\n <thead>\r\n <th v-if=\"selectable\" class=\"check-all\">\r\n <label class=\"control control-checkbox\" for=\"checkall\">\r\n <span class=\"sr-only\">Select all rows</span>\r\n <input id=\"checkall\" type=\"checkbox\" name=\"checkall\" :checked=\"isAllCurrentPageRecordsSelected\" @click=\"checkAll\" />\r\n <div class=\"control_indicator\"></div>\r\n </label>\r\n </th>\r\n <th v-for=\"column in visibleColumns\" :key=\"column.field\">\r\n {{ column.display || ' ' }}\r\n <a\r\n v-if=\"column.sortable\"\r\n href=\"#\"\r\n role=\"button\"\r\n aria-label=\"Sort\"\r\n @click.prevent=\"handleSortColumn(column.field)\"\r\n >\r\n <i :class=\"getSortDirection(column.field)\"></i>\r\n </a>\r\n <!-- filter start -->\r\n <button\r\n v-if=\"isLocalData && column.filterable\"\r\n :id=\"`${column.field}-filter`\"\r\n class=\"btn btn-link dropdown-toggle\"\r\n type=\"button\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fas fa-filter\" aria-label=\"Filter\"></i>\r\n </button>\r\n <div v-if=\"isLocalData && column.filterable\" class=\"dropdown-menu\" :aria-labelledby=\"`${column.field}-filter`\">\r\n <!-- for each unique value in column -->\r\n <div v-for=\"item in column.filterOptions\" :key=\"`filter-${column.field}-${item}`\" class=\"dropdown-item\">\r\n <div class=\"form-check\">\r\n <input type=\"checkbox\" class=\"form-check-input\" :id=\"`filter-${column.field}-${item}`\" @change=\"handleFilterSelection(column.field, item, $event.target.checked)\">\r\n <label class=\"form-check-label\" :for=\"`filter-${column.field}-${item}`\">{{ item }}</label>\r\n </div>\r\n </div>\r\n <div v-if=\"!column.filterOptions.length\" class=\"dropdown-item\">\r\n No Filters\r\n </div>\r\n <!-- /for -->\r\n <div class=\"dropdown-item\">\r\n <button class=\"btn btn-primary btn-block\" type=\"button\" @click=\"onFilter()\">Apply</button>\r\n </div>\r\n </div>\r\n <!-- filter end -->\r\n </th>\r\n </thead>\r\n\r\n <tbody v-if=\"isLoading\">\r\n <tr>\r\n <td :colspan=\"visibleColumns.length + 1\">\r\n <slot name=\"loading\">\r\n <div class=\"alert alert-warning\" role=\"alert\">Loading...</div>\r\n </slot>\r\n </td>\r\n </tr>\r\n </tbody>\r\n <tbody v-else-if=\"hasData\">\r\n <template v-for=\"item in availableRecords\">\r\n <tr :key=\"item.id\" :class=\"onRowClass(item)\" @click=\"if (onRowClick) onRowClick(item)\" @dblclick=\"if (onRowDblClick) onRowDblClick(item)\">\r\n <th scope=\"row\" v-if=\"selectable\">\r\n <label class=\"control control-checkbox\" :for=\"`check-${item.id}`\">\r\n <span class=\"sr-only\">Select row</span>\r\n <input\r\n :id=\"`check-${item.id}`\"\r\n type=\"checkbox\"\r\n name=\"category\"\r\n :value=\"item.id\"\r\n :checked=\"isSelected(item.id)\"\r\n @change=\"selectRecord($event.target.value)\"\r\n />\r\n <div class=\"control_indicator\"></div>\r\n </label>\r\n </th>\r\n <td v-for=\"column in contentColumns\" :key=\"column.field\">\r\n <slot :name=\"column.field\" v-bind:row=\"item\">\r\n <!-- {{ getItemValue(item, column.field) }} -->\r\n </slot>\r\n </td>\r\n <slot v-bind:row=\"item\"></slot>\r\n </tr>\r\n </template>\r\n </tbody>\r\n <tbody v-else>\r\n <tr>\r\n <td :colspan=\"visibleColumns.length + 1\">\r\n <slot name=\"no-records\">\r\n <div class=\"alert alert-warning\" role=\"alert\">No records found.</div>\r\n </slot>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Search results (print only) -->\r\n <div class=\"mt-3 d-none d-print-block\" v-if=\"hasData\">\r\n <template v-for=\"item in availableRecords\">\r\n <dl :key=\"item.id\" :class=\"onRowClass(item)\">\r\n <fragment v-for=\"column in columns\" :key=\"column.field\">\r\n <dt>{{ column.display || ' ' }}</dt>\r\n <dd>\r\n <slot :name=\"column.field\" v-bind:row=\"item\"></slot>\r\n </dd>\r\n </fragment>\r\n </dl>\r\n </template>\r\n </div>\r\n </fragment>\r\n</template>\r\n\r\n<style scoped>\r\n.check-all {\r\n vertical-align: baseline;\r\n}\r\n</style>\r\n\r\n<script>\r\nexport default {\r\n name: \"data-table\",\r\n props: {\r\n columns: { type: Array, required: true },\r\n data: { type: Array, required: true },\r\n query: { type: Object, required: true },\r\n total: { type: Number, required: true },\r\n pageSizeOptions: { type: Array, default: () => [10, 20, 50, 100] },\r\n selectedRows: Array,\r\n selectable: Boolean,\r\n isLoading: { type: Boolean, default: () => false },\r\n columnFilter: { type: Boolean, default: true },\r\n onRowClick: { type: Function },\r\n onRowDblClick: { type: Function },\r\n rowClass: { type: [String, Function], default: '' },\r\n isLocalData: { type: Boolean, default: false }\r\n },\r\n data: function() {\r\n return {\r\n isOpen: false,\r\n columnChanges: [],\r\n filterChanges: [],\r\n localDataset: [],\r\n localDatasetTotal: 0,\r\n };\r\n },\r\n watch: {\r\n data: function(values) {\r\n this.localDataset = values;\r\n this.localDatasetTotal = this.total;\r\n\r\n if (this.isLocalData) {\r\n this.query.page = 1;\r\n this.localDatasetTotal = values.length;\r\n\r\n this.columns.forEach(column => {\r\n if (column.filterable) {\r\n this.$set(column, \"filterOptions\", this.generateColumnFilters(column));\r\n }\r\n });\r\n }\r\n },\r\n },\r\n computed: {\r\n isAllCurrentPageRecordsSelected() {\r\n return this.availableRecords.length && this.availableRecords.map(i => i.id).filter(i => !this.selectedRows.includes(i)).length === 0;\r\n },\r\n availableRecords () {\r\n if (this.isLocalData) {\r\n return [...this.localDataset].splice((+this.query.page - 1) * +this.query.pageSize, +this.query.pageSize);\r\n }\r\n return this.localDataset;\r\n },\r\n currentPage() {\r\n return this.query.page;\r\n },\r\n hasData () {\r\n return this.data.length > 0;\r\n },\r\n isFirstPage() {\r\n return +this.query.page === 1;\r\n },\r\n isLastPage() {\r\n return +this.query.page * +this.query.pageSize >= this.localDatasetTotal;\r\n },\r\n selectableColumns() {\r\n return this.columns.filter(column => !column.ignore);\r\n },\r\n visibleColumns() {\r\n return this.columns.filter(column => column.isVisible);\r\n },\r\n contentColumns() {\r\n return this.columns.filter(column => column.isVisible && !column.ignore);\r\n }\r\n },\r\n methods: {\r\n applyColumnVisibility() {\r\n this.columnChanges.forEach(({ column, isChecked }) => {\r\n this.$set(column, \"isVisible\", isChecked);\r\n });\r\n this.columnChanges = []; // don't forget to clear the stack\r\n this.$emit('selected-columns-changed', this.columns);\r\n },\r\n getItemValue(item, columnField) {\r\n let columnSplit = columnField.split(\".\");\r\n let parentColumn = columnSplit[0];\r\n\r\n if (columnSplit.length > 1) {\r\n columnSplit.shift();\r\n return this.getItemValue(item[parentColumn], columnSplit.join(\".\"));\r\n }\r\n return item[parentColumn];\r\n },\r\n getSortDirection(fieldName) {\r\n let { sortOrder, sortDirection } = this.query;\r\n\r\n if (sortOrder === fieldName) {\r\n if (sortDirection === \"asc\") return \"fa fa-sort-up\";\r\n if (sortDirection === \"desc\") return \"fa fa-sort-down\";\r\n }\r\n return \"fa fa-sort text-muted\";\r\n },\r\n handleColumnSelection(column, isChecked) {\r\n this.columnChanges.push({ column, isChecked });\r\n },\r\n handleFilterSelection(field, value, isChecked) {\r\n this.filterChanges = [...this.filterChanges.filter(i => i.field !== field || i.value !== value), { field, value, isChecked }];\r\n },\r\n handleSortColumn(fieldName) {\r\n // reset the direction of new column is selected\r\n if (this.query.sortOrder !== fieldName) {\r\n this.query.sortDirection = null;\r\n }\r\n\r\n this.query.sortDirection = this.query.sortDirection === null ? \"asc\" : this.query.sortDirection === \"asc\" ? \"desc\" : null;\r\n this.query.sortOrder = this.query.sortDirection === null ? null : fieldName;\r\n this.query.page = 1;\r\n document.querySelector(\".table-responsive.mt-3.d-print-none\").scrollTo(0,0)\r\n this.$emit('column-sort-changed', { sortOrder: this.query.sortOrder, sortDirection: this.query.sortDirection });\r\n\r\n if (this.isLocalData) {\r\n this.localDataset.sort((cat1, cat2) => {\r\n let value1 = (cat1[this.query.sortOrder] || '').toLowerCase();\r\n let value2 = (cat2[this.query.sortOrder] || '').toLowerCase();\r\n\r\n if (value1 < value2) {\r\n return this.query.sortDirection === \"asc\" ? -1 : 1;\r\n }\r\n else if (value1 > value2) {\r\n return this.query.sortDirection === \"asc\" ? 1 : -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n }\r\n },\r\n isSelected(id) {\r\n return !!this.selectedRows.find(row => row === id);\r\n },\r\n onFilter () {\r\n let activeFilters = this.filterChanges\r\n .filter(i => i.isChecked)\r\n .reduce((acc, curr) => { acc[curr.field] = acc[curr.field] || []; acc[curr.field].push(curr.value); return acc; }, {});\r\n\r\n let filterItems = (data, filters) => data.filter(value => Object.keys(filters).every(key => filters[key].includes(value[key])));\r\n let records = filterItems(this.data, activeFilters);\r\n\r\n this.localDataset = records;\r\n this.localDatasetTotal = records.length;\r\n this.query.page = 1; // reset the paging\r\n },\r\n onPageSizeChange () {\r\n this.$emit('page-size-changed', { pageSize: this.query.pageSize });\r\n },\r\n onRowClass (item) {\r\n if (typeof(this.rowClass) === 'function') {\r\n return this.rowClass(item)\r\n }\r\n return this.rowClass\r\n },\r\n selectRecord(id) {\r\n let pos = this.selectedRows.indexOf(id);\r\n if (pos === -1) this.selectedRows.push(id);\r\n if (pos >= 0) this.selectedRows.splice(pos, 1);\r\n },\r\n checkAll() {\r\n let selectedItems = this.availableRecords;\r\n\r\n let uncheckedItems = selectedItems.map(i => i.id).filter(i => !this.selectedRows.includes(i));\r\n let isAllChecked = uncheckedItems.length === 0\r\n\r\n if (isAllChecked) {\r\n for (let record of selectedItems) {\r\n let pos = this.selectedRows.indexOf(record.id);\r\n this.selectedRows.splice(pos, 1)\r\n }\r\n }\r\n else {\r\n uncheckedItems.forEach(i => this.selectedRows.push(i));\r\n }\r\n },\r\n toggleColumnDropdown() {\r\n this.isOpen = !this.isOpen;\r\n },\r\n turnPage(i) {\r\n this.query.page = +this.query.page + i;\r\n },\r\n generateColumnFilters(column) {\r\n return this.data\r\n .map(r => r[column.field])\r\n .filter((value, index, self) => { if (!value) return false; return self.indexOf(value) === index })\r\n .sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\r\n }\r\n },\r\n created() {\r\n const q = { }; // add values if need to default/set values on the component level\r\n Object.keys(q).forEach(key => this.$set(this.query, key, q[key]));\r\n\r\n this.columns.forEach(column => {\r\n this.$set(column, \"isVisible\", typeof column.isVisible === \"boolean\" ? column.isVisible : true);\r\n\r\n if (this.isLocalData && column.filterable) {\r\n this.$set(column, \"filterOptions\", this.generateColumnFilters(column));\r\n }\r\n });\r\n },\r\n mounted () {\r\n this.localDataset = this.data;\r\n this.localDatasetTotal = this.total;\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datatable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./datatable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./datatable.vue?vue&type=template&id=4a015229&scoped=true&\"\nimport script from \"./datatable.vue?vue&type=script&lang=js&\"\nexport * from \"./datatable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./datatable.vue?vue&type=style&index=0&id=4a015229&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a015229\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('div',{class:['sidebar_page', { 'left_side_closed': !_vm.showSidebar }]},[_c('app-navbar'),_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row\"},[_c('loading',{attrs:{\"active\":_vm.isPageLoading,\"is-full-page\":\"\"},on:{\"update:active\":function($event){_vm.isPageLoading=$event}}}),_c('project-advanced-search',{ref:\"projectAdvanceSearch\",attrs:{\"showSidebar\":_vm.showSidebar,\"searchCriteria\":_vm.searchCriteria},on:{\"update:searchCriteria\":function($event){_vm.searchCriteria=$event},\"update:search-criteria\":function($event){_vm.searchCriteria=$event}}}),_c('div',{staticClass:\"col-xl-9 px-xl-4 py-4 right_side\"},[_c('div',{staticClass:\"page-title d-flex align-items-center\"},[_c('button',{staticClass:\"mr-1 bg-transparent border-0 d-print-none\",attrs:{\"type\":\"button\",\"aria-label\":\"Toggle search\"},on:{\"click\":function($event){return _vm.toggleSidebar()}}},[_c('i',{staticClass:\"fas fa-lg\",class:[_vm.showSidebar ? 'fa-chevron-left': 'fa-chevron-right' ]})]),_c('h1',[_vm._v(\"Find A Project\")])]),_c('div',{staticClass:\"page-content\"},[_c(_vm.currentTabComponent,{tag:\"component\",attrs:{\"isDataLoading\":_vm.isDataLoading,\"projects\":_vm.searchResults.results,\"searchCriteria\":_vm.searchCriteria,\"searchResults\":_vm.searchResults,\"searchParams\":_vm.searchParams,\"documentSearch\":_vm.searchCriteria.documentSearch},on:{\"update:isDataLoading\":function($event){_vm.isDataLoading=$event},\"update:is-data-loading\":function($event){_vm.isDataLoading=$event},\"change-tab\":_vm.changeTab,\"trigger-search\":_vm.triggerAdvancedSearchSubmit}})],1)])],1)])],1),_c('b-modal',{attrs:{\"id\":\"bv-modal-project-saved-search\",\"hide-header\":\"\",\"hide-footer\":\"\",\"no-close-on-backdrop\":true}},[_c('project-saved-search',{attrs:{\"searchCriteria\":_vm.searchCriteria},on:{\"update:searchCriteria\":function($event){_vm.searchCriteria=$event},\"update:search-criteria\":function($event){_vm.searchCriteria=$event}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col col-xl-3 px-xl-4 py-4 border-right bg-light left_side d-print-none\",attrs:{\"id\":\"sidebar\",\"hidden\":!_vm.showSidebar}},[(this.hasData)?_c('app-adspace',{attrs:{\"code\":\"PROJECT_SEARCH\",\"size\":\"4x3\",\"count\":3,\"adImages\":this.adOneImages}}):_vm._e(),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('fieldset',[_c('legend',[_vm._v(\"Narrow Your Results\")]),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"mySearchesDropdown\"}},[_vm._v(\"Saved searches\")]),_c('div',{staticClass:\"input-group\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.selectedSearchId),expression:\"searchCriteria.selectedSearchId\"}],ref:\"savedSearchDropdown\",staticClass:\"custom-select\",attrs:{\"id\":\"mySearchesDropdown\",\"name\":\"mySearchesDropdown\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.searchCriteria, \"selectedSearchId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.selectSavedSearch]}},[_c('option',{attrs:{\"value\":\"00000000-0000-0000-0000-000000000000\",\"disabled\":\"\"}},[_vm._v(\"My Searches\")]),_vm._l((_vm.getProjectSavedSearches),function(search){return _c('option',{key:search.id,domProps:{\"value\":search.id}},[_vm._v(_vm._s(search.name))])})],2),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-sm btn-outline-danger\",attrs:{\"type\":\"button\",\"aria-label\":\"Delete saved search\"},on:{\"click\":_vm.deleteSavedSearch}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])])])]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"keywords\"}},[_vm._v(\"Keyword\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.keyword),expression:\"searchCriteria.keyword\"},{name:\"validate\",rawName:\"v-validate\",value:({ required: _vm.searchCriteria.documentSearch}),expression:\"{ required: searchCriteria.documentSearch}\"}],ref:\"keyword\",staticClass:\"form-control w-100 rounded p-1 px-2\",class:{ 'is-invalid': (_vm.errors.has('keywords') || (_vm.searchCriteria.documentSearch && _vm.searchCriteria.keyword.length < 3)) },attrs:{\"id\":\"keywords\",\"name\":\"keywords\",\"aria-describedby\":\"searchTip\",\"placeholder\":\"Search by Keyword\",\"autocomplete\":\"off\",\"type\":\"text\"},domProps:{\"value\":(_vm.searchCriteria.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.searchCriteria, \"keyword\", $event.target.value)}}}),_c('small',{attrs:{\"id\":\"searchTip\"}},[_vm._v(\"Tip: Use quotes to search for exact phrases\")]),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"At least 3 characters in the keyword box is required to use the document search feature\")])]),(_vm.showDocumentSearch)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.documentSearch),expression:\"searchCriteria.documentSearch\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"documentSearch\",\"name\":\"documentSearch\"},domProps:{\"value\":false,\"checked\":Array.isArray(_vm.searchCriteria.documentSearch)?_vm._i(_vm.searchCriteria.documentSearch,false)>-1:(_vm.searchCriteria.documentSearch)},on:{\"change\":function($event){var $$a=_vm.searchCriteria.documentSearch,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=false,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.searchCriteria, \"documentSearch\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.searchCriteria, \"documentSearch\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.searchCriteria, \"documentSearch\", $$c)}}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"documentSearch\"}},[_vm._v(\"Document Search\")])])]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"City\"}},[_vm._v(\"City\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.city),expression:\"searchCriteria.city\"}],staticClass:\"form-control w-100 rounded p-1 px-2\",attrs:{\"id\":\"City\",\"name\":\"City\",\"placeholder\":\"Search by City\",\"autocomplete\":\"off\",\"type\":\"text\"},domProps:{\"value\":(_vm.searchCriteria.city)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.searchCriteria, \"city\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"zone\"}},[_vm._v(\"Zones\")]),_c('v-select',{staticClass:\"v-select-multi\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"zone\",\"name\":\"zone\",\"multiple\":\"\",\"label\":\"name\",\"reduce\":function (zone) { return zone.id; },\"options\":_vm.getZones,\"closeOnSelect\":false},model:{value:(_vm.searchCriteria.zoneIds),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"zoneIds\", $$v)},expression:\"searchCriteria.zoneIds\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"control2 control-radio\"},[_vm._v(\" My Projects \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.provideFollowedOnly),expression:\"searchCriteria.provideFollowedOnly\"}],attrs:{\"type\":\"radio\",\"name\":\"provideFollowedOnly\"},domProps:{\"value\":true,\"checked\":_vm._q(_vm.searchCriteria.provideFollowedOnly,true)},on:{\"change\":function($event){return _vm.$set(_vm.searchCriteria, \"provideFollowedOnly\", true)}}}),_c('span',{staticClass:\"control_indicator2\"})]),_c('label',{staticClass:\"control2 control-radio\"},[_vm._v(\" All Projects \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.provideFollowedOnly),expression:\"searchCriteria.provideFollowedOnly\"}],attrs:{\"type\":\"radio\",\"name\":\"provideFollowedOnly\"},domProps:{\"value\":false,\"checked\":_vm._q(_vm.searchCriteria.provideFollowedOnly,false)},on:{\"change\":function($event){return _vm.$set(_vm.searchCriteria, \"provideFollowedOnly\", false)}}}),_c('div',{staticClass:\"control_indicator2\"})])]),(_vm.$permissions().isClientAdmin || _vm.$permissions().isSysAdmin || _vm.$permissions().hasAddPrivateProjectPermission)?_c('div',{staticClass:\"form-group\"},[(_vm.$permissions().isClientAdmin || _vm.$permissions().isSysAdmin)?_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.provideHiddenOnly),expression:\"searchCriteria.provideHiddenOnly\"}],staticClass:\"form-check-input\",attrs:{\"id\":\"hidden-only\",\"type\":\"checkbox\",\"name\":\"provideHiddenOnly\"},domProps:{\"value\":true,\"checked\":Array.isArray(_vm.searchCriteria.provideHiddenOnly)?_vm._i(_vm.searchCriteria.provideHiddenOnly,true)>-1:(_vm.searchCriteria.provideHiddenOnly)},on:{\"change\":function($event){var $$a=_vm.searchCriteria.provideHiddenOnly,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=true,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.searchCriteria, \"provideHiddenOnly\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.searchCriteria, \"provideHiddenOnly\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.searchCriteria, \"provideHiddenOnly\", $$c)}}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"hidden-only\"}},[_vm._v(\"Show Only Hidden Projects\")])]):_vm._e(),(_vm.$permissions().hasAddPrivateProjectPermission)?_c('div',{staticClass:\"form-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.providePrivateProjects),expression:\"searchCriteria.providePrivateProjects\"}],staticClass:\"form-check-input\",attrs:{\"id\":\"private-projects\",\"type\":\"checkbox\",\"name\":\"provideHiddenOnly\"},domProps:{\"value\":true,\"checked\":Array.isArray(_vm.searchCriteria.providePrivateProjects)?_vm._i(_vm.searchCriteria.providePrivateProjects,true)>-1:(_vm.searchCriteria.providePrivateProjects)},on:{\"change\":function($event){var $$a=_vm.searchCriteria.providePrivateProjects,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=true,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.searchCriteria, \"providePrivateProjects\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.searchCriteria, \"providePrivateProjects\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.searchCriteria, \"providePrivateProjects\", $$c)}}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"private-projects\"}},[_vm._v(\"Show My Private Projects\")])]):_vm._e()]):_vm._e()]),(_vm.$permissions().hasProjectAdvancedSearch)?_c('fieldset',{staticClass:\"mt-2 advanced-search\"},[_c('legend',[_vm._v(\"Advanced Search\")]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"dates-card\"}},[_vm._m(0),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"dates-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"DateCreatedFrom\"}},[_vm._v(\"Date Created From\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(1),_c('date-picker',{staticClass:\"datepickerfrom border-left-0\",attrs:{\"id\":\"DateCreatedFrom\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.createdStart),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"createdStart\", $$v)},expression:\"searchCriteria.createdStart\"}})],1)]),_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"DateCreatedTo\"}},[_vm._v(\"Date Created To\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(2),_c('date-picker',{staticClass:\"datepickerfrom border-left-0\",attrs:{\"id\":\"DateCreatedTo\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.createdEnd),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"createdEnd\", $$v)},expression:\"searchCriteria.createdEnd\"}})],1)])]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"ClosingDateFrom\"}},[_vm._v(\"Closing Date From\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(3),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"ClosingDateFrom\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.closingStart),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"closingStart\", $$v)},expression:\"searchCriteria.closingStart\"}})],1)]),_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"ClosingDateTo\"}},[_vm._v(\"Closing Date To\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(4),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"ClosingDateTo\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.closingEnd),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"closingEnd\", $$v)},expression:\"searchCriteria.closingEnd\"}})],1)])]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"SiteMeetingFrom\"}},[_vm._v(\"Site Meeting From\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(5),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"SiteMeetingFrom\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.siteMeetingStart),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"siteMeetingStart\", $$v)},expression:\"searchCriteria.siteMeetingStart\"}})],1)]),_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"SiteMeetingTo\"}},[_vm._v(\"Site Meeting To\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(6),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"SiteMeetingTo\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.siteMeetingEnd),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"siteMeetingEnd\", $$v)},expression:\"searchCriteria.siteMeetingEnd\"}})],1)])]),_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"LastUpdatedFrom\"}},[_vm._v(\"Last Updated From\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(7),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"LastUpdatedFrom\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.lastUpdatedStart),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"lastUpdatedStart\", $$v)},expression:\"searchCriteria.lastUpdatedStart\"}})],1)]),_c('div',{staticClass:\"form-group col-sm-6\"},[_c('label',{attrs:{\"for\":\"LastUpdatedTo\"}},[_vm._v(\"Last Updated To\")]),_c('div',{staticClass:\"input-group\"},[_vm._m(8),_c('date-picker',{staticClass:\"datepickerfrom form-control border-left-0\",attrs:{\"id\":\"LastUpdatedTo\",\"config\":_vm.datepickerOptions},model:{value:(_vm.searchCriteria.lastUpdatedEnd),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"lastUpdatedEnd\", $$v)},expression:\"searchCriteria.lastUpdatedEnd\"}})],1)])])])])]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"classes-card\"}},[_vm._m(9),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"classes-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('label',{staticClass:\"control2 control-radio\"},[_vm._v(\" All \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.classificationTypeId),expression:\"searchCriteria.classificationTypeId\"}],attrs:{\"id\":\"ClassificationTypeId\",\"name\":\"ClassificationTypeId\",\"type\":\"radio\",\"checked\":\"checked\"},domProps:{\"value\":null,\"checked\":_vm._q(_vm.searchCriteria.classificationTypeId,null)},on:{\"change\":function($event){return _vm.$set(_vm.searchCriteria, \"classificationTypeId\", null)}}}),_c('span',{staticClass:\"control_indicator2\"})])]),_vm._l((_vm.getClassificationTypes),function(classification){return _c('div',{key:classification.id,staticClass:\"col\"},[_c('label',{staticClass:\"control2 control-radio\"},[_vm._v(\" \"+_vm._s(classification.name)+\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.classificationTypeId),expression:\"searchCriteria.classificationTypeId\"}],attrs:{\"type\":\"radio\",\"name\":\"ClassificationTypeId\"},domProps:{\"value\":classification.id,\"checked\":_vm._q(_vm.searchCriteria.classificationTypeId,classification.id)},on:{\"change\":function($event){return _vm.$set(_vm.searchCriteria, \"classificationTypeId\", classification.id)}}}),_c('div',{staticClass:\"control_indicator2\"})])])})],2),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.searchCriteria.classificationTypeId && _vm.getClassificationsOfWork.length > 0)?_c('div',{attrs:{\"id\":\"project-classification-of-works-container\"}},_vm._l((_vm.getClassificationsOfWork),function(work){return _c('label',{key:work.id,staticClass:\"control control-checkbox\"},[_vm._v(\" \"+_vm._s(work.name)+\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.classificationOfWorkIds),expression:\"searchCriteria.classificationOfWorkIds\"}],attrs:{\"type\":\"checkbox\",\"name\":\"ClassificationOfWorks\"},domProps:{\"value\":work.id,\"checked\":Array.isArray(_vm.searchCriteria.classificationOfWorkIds)?_vm._i(_vm.searchCriteria.classificationOfWorkIds,work.id)>-1:(_vm.searchCriteria.classificationOfWorkIds)},on:{\"change\":function($event){var $$a=_vm.searchCriteria.classificationOfWorkIds,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=work.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.searchCriteria, \"classificationOfWorkIds\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.searchCriteria, \"classificationOfWorkIds\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.searchCriteria, \"classificationOfWorkIds\", $$c)}}}}),_c('div',{staticClass:\"control_indicator\"})])}),0):_vm._e()])])])])]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"owner-type-card\"}},[_vm._m(10),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"owner-type-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"OwnerTypeId\"}},[_vm._v(\"Owner Type\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.ownerTypeId),expression:\"searchCriteria.ownerTypeId\"}],staticClass:\"custom-select w-100 rounded p-1 px-2\",attrs:{\"id\":\"OwnerTypeId\",\"name\":\"OwnerTypeId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.searchCriteria, \"ownerTypeId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{domProps:{\"value\":null}},[_vm._v(\"All\")]),_vm._l((_vm.getOwnerTypes),function(type){return _c('option',{key:type.id,domProps:{\"value\":type.id}},[_vm._v(_vm._s(type.name))])})],2)])])])]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"stage-card\"}},[_vm._m(11),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"stage-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"tenderStageIds\"}},[_vm._v(\"Stage\")]),_c('v-select',{staticClass:\"v-select-multi\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"tenderStageIds\",\"name\":\"tenderStageIds\",\"multiple\":\"\",\"label\":\"name\",\"reduce\":function (stage) { return stage.id; },\"options\":_vm.tenderStagesWithoutPermits,\"closeOnSelect\":false},model:{value:(_vm.searchCriteria.tenderStageIds),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"tenderStageIds\", $$v)},expression:\"searchCriteria.tenderStageIds\"}}),_c('small',{staticClass:\"form-text text-muted mt-0 mb-1\"},[_vm._v(\" Keep this blank to select all stages \")])],1)])])]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"procurement-type-card\"}},[_vm._m(12),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"procurement-type-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"ProcurementTypeId\"}},[_vm._v(\"Procurement Type\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchCriteria.procurementTypeId),expression:\"searchCriteria.procurementTypeId\"}],staticClass:\"custom-select w-100 rounded p-1 px-2 select2-control\",attrs:{\"id\":\"ProcurementTypeId\",\"name\":\"ProcurementTypeId\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.searchCriteria, \"procurementTypeId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{domProps:{\"value\":null}},[_vm._v(\"All\")]),_vm._l((_vm.getProcurementTypes),function(procurementType){return _c('option',{key:procurementType.id,domProps:{\"value\":procurementType.id}},[_vm._v(_vm._s(procurementType.name))])})],2)])])])]),_c('div',{staticClass:\"card\",attrs:{\"id\":\"funding-type-card\"}},[_vm._m(13),_c('div',{staticClass:\"collapse\",attrs:{\"id\":\"funding-type-collapse\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"fundingTypeId\"}},[_vm._v(\"Funding Type\")]),_c('v-select',{staticClass:\"v-select-multi\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"fundingTypeIds\",\"name\":\"fundingTypeIds\",\"multiple\":\"\",\"label\":\"name\",\"reduce\":function (stage) { return stage.id; },\"options\":_vm.getFundingTypes,\"closeOnSelect\":false},model:{value:(_vm.searchCriteria.fundingTypeIds),callback:function ($$v) {_vm.$set(_vm.searchCriteria, \"fundingTypeIds\", $$v)},expression:\"searchCriteria.fundingTypeIds\"}})],1)])])])]):_vm._e(),_c('button',{staticClass:\"btn-primary btn btn-block\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Search\")]),_c('div',{staticClass:\"col mt-2\"},[_c('div',{staticClass:\"row\"},[_c('button',{staticClass:\"col btn-secondary btn\",attrs:{\"type\":\"button\",\"title\":\"Save Search\"},on:{\"click\":_vm.saveSearch}},[_c('i',{staticClass:\"far fa-save\"}),_vm._v(\" Save Search\")]),_c('button',{staticClass:\"col btn-secondary btn\",attrs:{\"type\":\"button\",\"title\":\"Clear All\"},on:{\"click\":_vm.clearSearch}},[_vm._v(\"Clear All\")])])])]),(this.hasData)?_c('app-adspace',{attrs:{\"code\":\"PROJECT_SEARCH\",\"size\":\"4x3\",\"count\":3,\"adImages\":this.adTwoImages}}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#dates-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"far fa-calendar fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Dates\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-group-prepend\"},[_c('span',{staticClass:\"input-group-text bg-transparent pr-1\"},[_c('img',{attrs:{\"src\":require(\"@/assets/cal.svg\"),\"alt\":\"\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#classes-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"fas fa-border-all fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Classification of Work\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#owner-type-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"fas fa-university fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Owner Type\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#stage-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"far fa-chart-bar fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Stage\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#procurement-type-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"fas fa-book fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Procurement Type\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header row align-items-center\",attrs:{\"data-toggle\":\"collapse\",\"data-target\":\"#funding-type-collapse\"}},[_c('div',{staticClass:\"card-text col\"},[_c('i',{staticClass:\"fas fa-coins fa-lg mr-2\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',[_vm._v(\"Funding Type\")])]),_c('i',{staticClass:\"fas fa-chevron-down mx-2\",attrs:{\"aria-hidden\":\"true\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <div id=\"sidebar\" class=\"col col-xl-3 px-xl-4 py-4 border-right bg-light left_side d-print-none\" :hidden=\"!showSidebar\">\r\n <app-adspace code=\"PROJECT_SEARCH\" size=\"4x3\" :count=\"3\" :adImages=\"this.adOneImages\" v-if=\"this.hasData\"></app-adspace>\r\n <form v-on:submit.prevent=\"onSubmit\">\r\n <fieldset>\r\n <legend>Narrow Your Results</legend>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"sr-only\" for=\"mySearchesDropdown\">Saved searches</label>\r\n <div class=\"input-group\">\r\n <select id=\"mySearchesDropdown\" name=\"mySearchesDropdown\" class=\"custom-select\" ref=\"savedSearchDropdown\"\r\n v-model=\"searchCriteria.selectedSearchId\" @change=\"selectSavedSearch\">\r\n <option value=\"00000000-0000-0000-0000-000000000000\" disabled>My Searches</option>\r\n <option v-for=\"search in getProjectSavedSearches\" :key=\"search.id\" :value=\"search.id\">{{ search.name }}</option>\r\n </select>\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-sm btn-outline-danger\" type=\"button\" aria-label=\"Delete saved search\" @click=\"deleteSavedSearch\">\r\n <i class=\"fas fa-trash-alt\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label for=\"keywords\">Keyword</label>\r\n <input id=\"keywords\" name=\"keywords\" aria-describedby=\"searchTip\" class=\"form-control w-100 rounded p-1 px-2\" :class=\"{ 'is-invalid': (errors.has('keywords') || (searchCriteria.documentSearch && searchCriteria.keyword.length < 3)) }\" placeholder=\"Search by Keyword\" autocomplete=\"off\" type=\"text\" v-model=\"searchCriteria.keyword\" ref=\"keyword\" v-validate=\"{ required: searchCriteria.documentSearch}\" /> \r\n <small id=\"searchTip\">Tip: Use quotes to search for exact phrases</small>\r\n <div class=\"invalid-feedback\">At least 3 characters in the keyword box is required to use the document search feature</div>\r\n </div>\r\n\r\n <div class=\"form-group\" v-if=\"showDocumentSearch\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"documentSearch\" name=\"documentSearch\" v-model=\"searchCriteria.documentSearch\" :value=\"false\" />\r\n <label class=\"form-check-label\" for=\"documentSearch\">Document Search</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label for=\"City\">City</label>\r\n <input class=\"form-control w-100 rounded p-1 px-2\" id=\"City\" name=\"City\" placeholder=\"Search by City\" autocomplete=\"off\" type=\"text\" v-model=\"searchCriteria.city\" />\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label for=\"zone\">Zones</label>\r\n <v-select id=\"zone\" name=\"zone\" class=\"v-select-multi\" style=\"width: 100%\" multiple label=\"name\"\r\n :reduce=\"zone => zone.id\" :options=\"getZones\" v-model=\"searchCriteria.zoneIds\" :closeOnSelect=\"false\">\r\n </v-select>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"control2 control-radio\">\r\n My Projects\r\n <input type=\"radio\" name=\"provideFollowedOnly\" v-model=\"searchCriteria.provideFollowedOnly\" :value=\"true\" />\r\n <span class=\"control_indicator2\"></span>\r\n </label>\r\n\r\n <label class=\"control2 control-radio\">\r\n All Projects\r\n <input type=\"radio\" name=\"provideFollowedOnly\" v-model=\"searchCriteria.provideFollowedOnly\" :value=\"false\" />\r\n <div class=\"control_indicator2\"></div>\r\n </label>\r\n </div>\r\n\r\n <div class=\"form-group\" v-if=\"$permissions().isClientAdmin || $permissions().isSysAdmin || $permissions().hasAddPrivateProjectPermission\">\r\n <div class=\"form-check\" v-if=\"$permissions().isClientAdmin || $permissions().isSysAdmin\">\r\n <input id=\"hidden-only\" class=\"form-check-input\" type=\"checkbox\" name=\"provideHiddenOnly\" v-model=\"searchCriteria.provideHiddenOnly\" :value=\"true\" />\r\n <label class=\"form-check-label\" for=\"hidden-only\">Show Only Hidden Projects</label>\r\n </div>\r\n\r\n <div class=\"form-check\" v-if=\"$permissions().hasAddPrivateProjectPermission\">\r\n <input id=\"private-projects\" class=\"form-check-input\" type=\"checkbox\" name=\"provideHiddenOnly\" v-model=\"searchCriteria.providePrivateProjects\" :value=\"true\" />\r\n <label class=\"form-check-label\" for=\"private-projects\">Show My Private Projects</label>\r\n </div>\r\n </div>\r\n </fieldset>\r\n\r\n <fieldset class=\"mt-2 advanced-search\" v-if=\"$permissions().hasProjectAdvancedSearch\">\r\n <legend>Advanced Search</legend>\r\n\r\n <div class=\"card\" id=\"dates-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#dates-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"far fa-calendar fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Dates</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"dates-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"DateCreatedFrom\">Date Created From</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"DateCreatedFrom\"\r\n class=\"datepickerfrom border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.createdStart\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"DateCreatedTo\">Date Created To</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"DateCreatedTo\"\r\n class=\"datepickerfrom border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.createdEnd\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"ClosingDateFrom\">Closing Date From</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"ClosingDateFrom\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.closingStart\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"ClosingDateTo\">Closing Date To</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"ClosingDateTo\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.closingEnd\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"SiteMeetingFrom\">Site Meeting From</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"SiteMeetingFrom\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.siteMeetingStart\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"SiteMeetingTo\">Site Meeting To</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"SiteMeetingTo\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.siteMeetingEnd\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"LastUpdatedFrom\">Last Updated From</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"LastUpdatedFrom\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.lastUpdatedStart\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-sm-6\">\r\n <label for=\"LastUpdatedTo\">Last Updated To</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text bg-transparent pr-1\">\r\n <img src=\"@/assets/cal.svg\" alt />\r\n </span>\r\n </div>\r\n <date-picker\r\n id=\"LastUpdatedTo\"\r\n class=\"datepickerfrom form-control border-left-0\"\r\n :config=\"datepickerOptions\"\r\n v-model=\"searchCriteria.lastUpdatedEnd\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\" id=\"classes-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#classes-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"fas fa-border-all fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Classification of Work</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"classes-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <label class=\"control2 control-radio\">\r\n All\r\n <input id=\"ClassificationTypeId\" name=\"ClassificationTypeId\" type=\"radio\" :value=\"null\"\r\n v-model=\"searchCriteria.classificationTypeId\" checked=\"checked\" />\r\n <span class=\"control_indicator2\"></span>\r\n </label>\r\n </div>\r\n\r\n <div class=\"col\" v-for=\"classification in getClassificationTypes\" :key=\"classification.id\">\r\n <label class=\"control2 control-radio\">\r\n {{ classification.name }}\r\n <input type=\"radio\" name=\"ClassificationTypeId\" :value=\"classification.id\" v-model=\"searchCriteria.classificationTypeId\" />\r\n <div class=\"control_indicator2\"></div>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col\">\r\n <div id=\"project-classification-of-works-container\" v-if=\"searchCriteria.classificationTypeId && getClassificationsOfWork.length > 0\">\r\n <label class=\"control control-checkbox\" v-for=\"work in getClassificationsOfWork\" :key=\"work.id\">\r\n {{ work.name }}\r\n <input type=\"checkbox\" name=\"ClassificationOfWorks\" :value=\"work.id\" v-model=\"searchCriteria.classificationOfWorkIds\" />\r\n <div class=\"control_indicator\"></div>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\" id=\"owner-type-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#owner-type-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"fas fa-university fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Owner Type</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"owner-type-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"form-group\">\r\n <label class=\"sr-only\" for=\"OwnerTypeId\">Owner Type</label>\r\n <select id=\"OwnerTypeId\" name=\"OwnerTypeId\" class=\"custom-select w-100 rounded p-1 px-2\" v-model=\"searchCriteria.ownerTypeId\">\r\n <option :value=\"null\">All</option>\r\n <option v-for=\"type in getOwnerTypes\" :key=\"type.id\" :value=\"type.id\">{{ type.name }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\" id=\"stage-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#stage-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"far fa-chart-bar fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Stage</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"stage-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"form-group\">\r\n <label class=\"sr-only\" for=\"tenderStageIds\">Stage</label>\r\n <v-select id=\"tenderStageIds\" name=\"tenderStageIds\" class=\"v-select-multi\" style=\"width: 100%\" multiple label=\"name\"\r\n :reduce=\"stage => stage.id\" :options=\"tenderStagesWithoutPermits\" v-model=\"searchCriteria.tenderStageIds\" :closeOnSelect=\"false\">\r\n </v-select>\r\n <small class=\"form-text text-muted mt-0 mb-1\">\r\n Keep this blank to select all stages\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\" id=\"procurement-type-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#procurement-type-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"fas fa-book fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Procurement Type</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"procurement-type-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"form-group\">\r\n <label class=\"sr-only\" for=\"ProcurementTypeId\">Procurement Type</label>\r\n <select id=\"ProcurementTypeId\" name=\"ProcurementTypeId\" class=\"custom-select w-100 rounded p-1 px-2 select2-control\"\r\n v-model=\"searchCriteria.procurementTypeId\">\r\n <option :value=\"null\">All</option>\r\n <option v-for=\"procurementType in getProcurementTypes\" :key=\"procurementType.id\" :value=\"procurementType.id\">{{ procurementType.name }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\" id=\"funding-type-card\">\r\n <div class=\"card-header row align-items-center\" data-toggle=\"collapse\" data-target=\"#funding-type-collapse\">\r\n <div class=\"card-text col\">\r\n <i class=\"fas fa-coins fa-lg mr-2\" aria-hidden=\"true\"></i>\r\n <span>Funding Type</span>\r\n </div>\r\n <i class=\"fas fa-chevron-down mx-2\" aria-hidden=\"true\"></i>\r\n </div>\r\n <div class=\"collapse\" id=\"funding-type-collapse\">\r\n <div class=\"card-body\">\r\n <div class=\"form-group\">\r\n <label class=\"sr-only\" for=\"fundingTypeId\">Funding Type</label>\r\n <v-select id=\"fundingTypeIds\" name=\"fundingTypeIds\" class=\"v-select-multi\" style=\"width: 100%\" multiple label=\"name\"\r\n :reduce=\"stage => stage.id\" :options=\"getFundingTypes\" v-model=\"searchCriteria.fundingTypeIds\" :closeOnSelect=\"false\">\r\n </v-select>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n\r\n <button type=\"submit\" class=\"btn-primary btn btn-block\">Search</button>\r\n\r\n <div class=\"col mt-2\">\r\n <div class=\"row\">\r\n <button type=\"button\" class=\"col btn-secondary btn\" title=\"Save Search\" @click=\"saveSearch\"><i class=\"far fa-save\"></i> Save Search</button>\r\n <button type=\"button\" class=\"col btn-secondary btn\" title=\"Clear All\" @click=\"clearSearch\">Clear All</button>\r\n </div>\r\n </div>\r\n </form>\r\n <app-adspace code=\"PROJECT_SEARCH\" size=\"4x3\" :count=\"3\" :adImages=\"this.adTwoImages\" v-if=\"this.hasData\"></app-adspace>\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.card {\r\n margin-bottom: 8px;\r\n cursor: pointer;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport { mapGetters, mapActions } from \"vuex\";\r\nimport DatePicker from \"vue-bootstrap-datetimepicker\";\r\nimport { clean as CleanObject } from \"@/utils/object\";\r\nimport Toast from \"@/utils/toast\";\r\nimport MessageBox from \"@/utils/messagebox\";\r\nimport { AdvertisementGroupService } from \"@/services/\";\r\nimport \"@/styles/search-sidebar.css\";\r\n\r\nexport default {\r\n name: \"project-advanced-search\",\r\n components: {\r\n 'app-adspace': () => import(\"@/components/app-adspace.vue\"),\r\n DatePicker\r\n },\r\n props: {\r\n showSidebar: { type: Boolean, default: () => true },\r\n searchCriteria: { type: Object, required: true }\r\n },\r\n data: function() {\r\n return {\r\n adOneImages:[],\r\n adTwoImages:[],\r\n datepickerOptions: {\r\n useCurrent: false,\r\n format: \"MM/DD/YYYY\"\r\n },\r\n hasData: false\r\n };\r\n },\r\n computed: {\r\n getClassificationsOfWork: function() {\r\n if (this.searchCriteria.classificationTypeId) {\r\n let selectedClassificationType = this.getClassificationTypes.find(\r\n type => type.id === this.searchCriteria.classificationTypeId\r\n );\r\n if (selectedClassificationType) { \r\n return selectedClassificationType.classificationOfWorks.sort((a,b) => a.name.localeCompare(b.name));\r\n }\r\n }\r\n return [];\r\n },\r\n showDocumentSearch() {\r\n return (this.getUseDocumentSearch || '').toUpperCase() === 'TRUE'\r\n },\r\n tenderStagesWithoutPermits() {\r\n return this.getTenderStages.filter(stage => !stage.name.toLowerCase().includes('permit'));\r\n },\r\n ...mapGetters([\r\n \"getClassificationTypes\",\r\n \"getFundingTypes\",\r\n \"getOwnerTypes\",\r\n \"getProcurementTypes\",\r\n \"getProjectSavedSearches\",\r\n \"getTenderStages\",\r\n \"getZones\",\r\n \"getUseDocumentSearch\"\r\n ])\r\n },\r\n methods: {\r\n ...mapActions([\r\n \"removeProjectSearch\",\r\n \"fetchClientSettings\"\r\n ]),\r\n clearSearch() {\r\n this.$nextTick(() => {\r\n // ideally this all gets moved into vuex to handle better across components\r\n this.searchCriteria.keyword = '';\r\n this.searchCriteria.documentSearch = false,\r\n this.searchCriteria.city = null;\r\n this.searchCriteria.zoneIds = [];\r\n this.searchCriteria.provideFollowedOnly = false;\r\n this.searchCriteria.provideHiddenOnly = false;\r\n this.searchCriteria.createdStart = null;\r\n this.searchCriteria.createdEnd = null;\r\n this.searchCriteria.closingStart = null;\r\n this.searchCriteria.closingEnd = null;\r\n this.searchCriteria.siteMeetingStart = null;\r\n this.searchCriteria.siteMeetingEnd = null;\r\n this.searchCriteria.lastUpdatedStart = null;\r\n this.searchCriteria.lastUpdatedEnd = null;\r\n this.searchCriteria.classificationTypeId = null;\r\n this.searchCriteria.classificationOfWorkIds = [];\r\n this.searchCriteria.ownerTypeId = null;\r\n this.searchCriteria.tenderStageIds = ['ba1408eb-83d9-4c94-a2ba-6d9436773b36']; // open\r\n this.searchCriteria.procurementTypeId = null;\r\n this.searchCriteria.fundingTypeIds = [];\r\n this.searchCriteria.selectedSearchId = \"00000000-0000-0000-0000-000000000000\";\r\n this.searchCriteria.awardedDate = null\r\n this.searchCriteria.lastUpdated = null\r\n this.searchCriteria.created = null\r\n this.searchCriteria.closing = null\r\n this.searchCriteria.siteMeetingPriorities = null;\r\n })\r\n },\r\n async deleteSavedSearch () {\r\n let searchId = this.$refs.savedSearchDropdown.value;\r\n\r\n if (searchId) {\r\n let confirm = await MessageBox.confirm(this, \"Remove Saved Search\", \"Are you sure you want to remove the selected saved search?\");\r\n\r\n if (confirm) {\r\n this.removeProjectSearch(searchId)\r\n .then(() => Toast.success(this, \"Successfully removed saved search!\"))\r\n .catch(() => Toast.danger(this, \"Oops! An error has occured\"));\r\n }\r\n }\r\n },\r\n async onSubmit() {\r\n var isFormValid = await this.$validator.validate();\r\n\r\n if (!isFormValid || (this.searchCriteria.documentSearch && this.searchCriteria.keyword.length < 3)) {\r\n window.scrollTo(0, 0);\r\n return;\r\n }\r\n\r\n this.searchCriteria.page = 1;\r\n let params = cloneDeep(this.searchCriteria);\r\n\r\n CleanObject(params);\r\n\r\n if (params.lastUpdated) {\r\n params.lastUpdated.start && (params.lastUpdatedStart = params.lastUpdated.start);\r\n params.lastUpdated.end && (params.lastUpdatedEnd = params.lastUpdated.end);\r\n params.lastUpdated.lastNthHours && (params.lastUpdatedLastNthHours = params.lastUpdated.lastNthHours);\r\n params.lastUpdated.lastNthDays && (params.lastUpdatedLastNthDays = params.lastUpdated.lastNthDays);\r\n delete params['lastUpdated'];\r\n }\r\n if (params.siteMeeting) {\r\n params.siteMeeting.start && (params.siteMeetingStart = params.siteMeeting.start);\r\n params.siteMeeting.end && (params.siteMeetingEnd = params.siteMeeting.end);\r\n params.siteMeeting.lastNthHours && (params.siteMeetingLastNthHours = params.siteMeeting.lastNthHours);\r\n params.siteMeeting.lastNthDays && (params.siteMeetingLastNthDays = params.siteMeeting.lastNthDays);\r\n delete params['siteMeeting'];\r\n }\r\n if (params.awardedDate) {\r\n params.awardedDate.start && (params.awardedDateStart = params.awardedDate.start);\r\n params.awardedDate.end && (params.awardedDateEnd = params.awardedDate.end);\r\n params.awardedDate.lastNthHours && (params.awardedDateLastNthHours = params.awardedDate.lastNthHours);\r\n params.awardedDate.lastNthDays && (params.awardedDateLastNthDays = params.awardedDate.lastNthDays);\r\n delete params['awardedDate'];\r\n }\r\n if (params.closing) {\r\n params.closing.start && (params.closingStart = params.closing.start);\r\n params.closing.end && (params.closingEnd = params.closing.end);\r\n params.closing.lastNthHours && (params.closingLastNthHours = params.closing.lastNthHours);\r\n params.closing.lastNthDays && (params.closingLastNthDays = params.closing.lastNthDays);\r\n delete params['closing'];\r\n }\r\n if (params.created) {\r\n params.created.start && (params.createdStart = params.created.start);\r\n params.created.end && (params.createdEnd = params.created.end);\r\n params.created.lastNthHours && (params.createdLastNthHours = params.created.lastNthHours);\r\n params.created.lastNthDays && (params.createdLastNthDays = params.created.lastNthDays);\r\n delete params['created'];\r\n }\r\n\r\n if (!params.keyword) delete params['keyword'];\r\n if (!params.documentSearch) delete params['documentSearch'];\r\n if (!params.provideFollowedOnly) delete params['provideFollowedOnly'];\r\n if (!params.provideHiddenOnly) delete params['provideHiddenOnly'];\r\n if (!params.tenderStageIds) params.tenderStageIds = null;\r\n if (!params.selectedSearchId || params.selectedSearchId === '00000000-0000-0000-0000-000000000000') delete params['selectedSearchId'];\r\n\r\n\r\n this.$router.push({ query: params }).catch(() => {}); // catch duplicated navigation\r\n },\r\n saveSearch() {\r\n this.$bvModal.show(\"bv-modal-project-saved-search\");\r\n },\r\n selectSavedSearch() {\r\n let searchId = this.$refs.savedSearchDropdown.value;\r\n let search = this.getProjectSavedSearches.find(i => i.id === searchId);\r\n\r\n if (search) {\r\n let parsed = JSON.parse(JSON.stringify(search));\r\n\r\n // remove unnecessary items\r\n delete parsed['id'];\r\n delete parsed['name'];\r\n delete parsed['userId'];\r\n delete parsed['isPublic'];\r\n delete parsed['isLock'];\r\n delete parsed['clientId'];\r\n delete parsed['selectedSearchId'];\r\n\r\n this.searchCriteria = parsed;\r\n this.searchCriteria.selectedSearchId = searchId;\r\n this.onSubmit();\r\n }\r\n }\r\n },\r\n mounted() {\r\n Promise.all([\r\n this.fetchClientSettings()\r\n ]);\r\n AdvertisementGroupService.getAllAds(\"PROJECT_SEARCH\").then(({ data }) => {\r\n var results = data.map(({ id, imgAltText, imgSrc, linkTitleText, linkToUrl }) => ({ id, imgAltText, imgSrc, linkTitleText, linkToUrl }));\r\n if(results.length >1){\r\n var mid = Math.round(results.length/2);\r\n this.adOneImages = results.slice(0,mid);\r\n this.adTwoImages = results.slice(mid);\r\n }else{\r\n this.adOneImages = results;\r\n }\r\n this.hasData = true;\r\n });\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-advanced-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-advanced-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-advanced-search.vue?vue&type=template&id=7c18cf74&scoped=true&\"\nimport script from \"./project-advanced-search.vue?vue&type=script&lang=js&\"\nexport * from \"./project-advanced-search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./project-advanced-search.vue?vue&type=style&index=0&id=7c18cf74&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c18cf74\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\",attrs:{\"id\":\"exampleModalLabel\"}},[_vm._v(\"Save Project Search\")])]),_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-form-label font-weight-bold\",attrs:{\"for\":\"name\"}},[_vm._v(\"Name \"),_c('span',{staticClass:\"red-dot ml-3\"})]),_c('input',{directives:[{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"},{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],staticClass:\"w-100 rounded p-1 px-2\",class:{ 'input-validation-error': _vm.errors.has('name') },attrs:{\"id\":\"name\",\"name\":\"name\",\"placeholder\":\"Enter search name\",\"autocomplete\":\"off\",\"type\":\"text\",\"data-vv-as\":\"Name\"},domProps:{\"value\":(_vm.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}}),(_vm.errors.has('name'))?_c('span',{staticClass:\"field-validation-error\"},[_vm._v(\"The Name field is required.\")]):_vm._e()]),(_vm.$permissions().isClientAdmin || _vm.$permissions().isSysAdmin)?_c('div',[_c('div',{staticClass:\"form-check form-check-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isPublic),expression:\"isPublic\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"isPublic\",\"id\":\"isPublicFalse\",\"value\":\"false\"},domProps:{\"checked\":_vm._q(_vm.isPublic,\"false\")},on:{\"change\":function($event){_vm.isPublic=\"false\"}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"isPublicFalse\"}},[_vm._v(\"Private\")])]),_c('div',{staticClass:\"form-check form-check-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isPublic),expression:\"isPublic\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"isPublic\",\"value\":\"true\"},domProps:{\"checked\":_vm._q(_vm.isPublic,\"true\")},on:{\"change\":function($event){_vm.isPublic=\"true\"}}}),_c('label',{staticClass:\"form-check-label\",attrs:{\"for\":\"isPublicTrue\"}},[_vm._v(\"Public\")])])]):_vm._e()]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeModal}},[_vm._v(\"Close\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <fragment>\r\n <form v-on:submit.prevent=\"onSubmit\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Save Project Search</h5>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"form-group\">\r\n <label class=\"col-form-label font-weight-bold\" for=\"name\">Name <span class=\"red-dot ml-3\"></span></label>\r\n <input\r\n class=\"w-100 rounded p-1 px-2\"\r\n :class=\"{ 'input-validation-error': errors.has('name') }\"\r\n id=\"name\"\r\n name=\"name\"\r\n placeholder=\"Enter search name\"\r\n autocomplete=\"off\"\r\n type=\"text\"\r\n v-validate=\"'required'\"\r\n v-model=\"name\"\r\n data-vv-as=\"Name\"\r\n />\r\n <span class=\"field-validation-error\" v-if=\"errors.has('name')\">The Name field is required.</span>\r\n </div>\r\n <div v-if=\"$permissions().isClientAdmin || $permissions().isSysAdmin\">\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" v-model=\"isPublic\" name=\"isPublic\" id=\"isPublicFalse\" value=\"false\">\r\n <label class=\"form-check-label\" for=\"isPublicFalse\">Private</label>\r\n </div>\r\n <div class=\"form-check form-check-inline\">\r\n <input class=\"form-check-input\" type=\"radio\" v-model=\"isPublic\" name=\"isPublic\" value=\"true\">\r\n <label class=\"form-check-label\" for=\"isPublicTrue\">Public</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button type=\"submit\" class=\"btn btn-primary\">Save</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" @click=\"closeModal\">Close</button>\r\n </div>\r\n </form>\r\n </fragment>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from \"vuex\";\r\n\r\nexport default {\r\n name: \"project-saved-search\",\r\n props: [\"searchCriteria\"],\r\n data: function() {\r\n return {\r\n name: null,\r\n isPublic: false\r\n };\r\n },\r\n computed: {\r\n ...mapGetters([\"getCurrentUser\"])\r\n },\r\n methods: {\r\n async onSubmit() {\r\n var isFormValid = await this.$validator.validate();\r\n\r\n if (!isFormValid) {\r\n return;\r\n }\r\n\r\n let model = {\r\n name: this.name,\r\n isPublic: this.isPublic,\r\n userId: this.getCurrentUser.id,\r\n ...this.searchCriteria\r\n };\r\n\r\n this.saveProjectSearch(model).then(() => {\r\n this.$root.$bvToast.toast(\"Successfully saved!\", {\r\n noCloseButton: true,\r\n autoHideDelay: 3000,\r\n toaster: \"b-toaster-bottom-right\",\r\n variant: \"success\",\r\n appendToast: true,\r\n isStatus: true\r\n });\r\n this.$bvModal.hide(\"bv-modal-project-saved-search\");\r\n });\r\n },\r\n closeModal() {\r\n this.$bvModal.hide(\"bv-modal-project-saved-search\");\r\n },\r\n ...mapActions([\"saveProjectSearch\"])\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-saved-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-saved-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-saved-search.vue?vue&type=template&id=591a6c92&\"\nimport script from \"./project-saved-search.vue?vue&type=script&lang=js&\"\nexport * from \"./project-saved-search.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('data-table',{attrs:{\"data\":_vm.searchResults.results,\"columns\":_vm.columns,\"total\":_vm.searchResults.total,\"query\":_vm.searchCriteria,\"selectedRows\":_vm.selectedRecords,\"isLoading\":_vm.isDataLoading,\"column-filter\":_vm.$permissions().hasProjectSearchColumns,\"onRowDblClick\":_vm.goToProject,\"rowClass\":_vm.setContextualClass},on:{\"selected-columns-changed\":_vm.onSelectedColumnsChanged,\"column-sort-changed\":_vm.onColumnSortChanged,\"page-size-changed\":_vm.onPageSizeChanged},scopedSlots:_vm._u([{key:\"header-custom-btns\",fn:function(){return [_c('button',{staticClass:\"btn btn-outline-dark\",attrs:{\"type\":\"button\",\"disabled\":_vm.searchResults.total === 0},on:{\"click\":_vm.goToMapView}},[_vm._v(\"View Map\")]),(_vm.$permissions().hasProjectExcelExport)?_c('button',{staticClass:\"btn btn-outline-dark ld-ext-right\",class:{ 'running' : _vm.isExporting },attrs:{\"type\":\"button\",\"disabled\":_vm.isExporting || _vm.searchResults.results.length === 0},on:{\"click\":function($event){return _vm.exportDataset(false)}}},[_vm._v(\" Export to Excel \"),_c('div',{staticClass:\"ld ld-ring ld-spin\"})]):_vm._e(),(_vm.$permissions().hasProjectExcelExport)?_c('button',{staticClass:\"btn btn-outline-dark ld-ext-right\",class:{ 'running' : _vm.isExporting },attrs:{\"type\":\"button\",\"disabled\":_vm.isExporting || _vm.searchResults.results.length === 0},on:{\"click\":function($event){return _vm.exportDataset(true)}}},[_vm._v(\" Export All to Excel \"),_c('div',{staticClass:\"ld ld-ring ld-spin\"})]):_vm._e(),_c('button',{staticClass:\"btn btn-outline-dark\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.print}},[_vm._v(\"Print\")])]},proxy:true},{key:\"ocaaNumber\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.ocaaNumber))]}},{key:\"lcaNumber\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.lcaNumber))]}},{key:\"title\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.title))]}},{key:\"classificationOfWork\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.classificationOfWork))]}},(_vm.showDocumentSearch)?{key:\"keywordDensity\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',{domProps:{\"innerHTML\":_vm._s(row.keywordDensity)}},[_vm._v(_vm._s(row.keywordDensity))])]}}:null,{key:\"closingDate\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(_vm._f(\"datetime\")(row.closingDate,'MMM dd, yyyy h:mm a'))+\" \"+_vm._s(row.timeZone.code))]}},{key:\"owner.owner.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.owner || '---'))]}},{key:\"ownerType.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.ownerType || '---'))]}},{key:\"addenda\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.addenda))]}},{key:\"siteMeeting\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.siteMeetings.length ? row.siteMeetings[0].text : '---'))]}},{key:\"belongZone.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.belongZone))]}},{key:\"city\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(_vm.getCitiesDisplay(row.addresses)))]}},{key:\"tenderStage.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.tenderStage))]}},{key:\"procurementType\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.procurementType))]}},{key:\"funding.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.funding))]}},{key:\"budget\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(row.budget))]}},{key:\"ownerSolicitationNumber\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(\" \"+_vm._s(row.ownerSolicitationNumber)+\" \")]}},{key:\"bids.company.name\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._l((_vm.filteredRowBids(row.bids)),function(bidder,index){return _c('span',{key:'search-result-bidder-' + index},[_vm._v(\" \"+_vm._s(bidder.companyName)+\" \"),_c('br')])}),(row.bids.length === 0)?_c('span',[_vm._v(\"---\")]):_vm._e()]}},{key:\"contact.companyName\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._l((row.contacts),function(contact,index){return _c('span',{key:'search-result-contact-' + index},[_vm._v(\" \"+_vm._s(contact.companyName)+\" \"),_c('br')])}),(row.contacts.length === 0)?_c('span',[_vm._v(\"---\")]):_vm._e()]}},{key:\"addendaInfo\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',{staticStyle:{\"white-space\":\"pre\"}},[_vm._v(_vm._s(row.addendaInfo || '---'))])]}},{key:\"createdOn\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(_vm._f(\"datetime\")(row.createdOn,'MMM dd, yyyy h:mm a'))+\" \"+_vm._s(row.timeZone.code))]}},{key:\"updatedOn\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(_vm._s(_vm._f(\"datetime\")(row.updatedOn,'MMM dd, yyyy h:mm a'))+\" \"+_vm._s(row.updatedOn != null && row.updatedOn != undefined ? row.timeZone.code:\"\"))]}},{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('td',{staticStyle:{\"width\":\"125px\"}},[(row.allowView)?_c('follow-button',{staticClass:\"btn btn-link btn-sm\",attrs:{\"projectId\":row.id,\"projectTitle\":row.title,\"value\":row.isUserFollowing},scopedSlots:_vm._u([{key:\"is-following\",fn:function(){return [_c('i',{staticClass:\"far fa-check-circle\"}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Unfollow\")])]},proxy:true},{key:\"is-not-following\",fn:function(){return [_c('i',{staticClass:\"fas fa-rss\"}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Follow\")])]},proxy:true}],null,true)}):_vm._e(),_c('router-link',{staticClass:\"btn btn-link btn-sm\",attrs:{\"to\":{ name: 'project-info', params: { id: row.id, qs: _vm.$route.query } },\"role\":\"button\",\"aria-label\":'View ' + row.title}},[_c('i',{staticClass:\"far fa-eye\"})]),(row.allowEdit)?_c('router-link',{staticClass:\"btn btn-link btn-sm\",attrs:{\"to\":'/project/edit/' + row.id,\"role\":\"button\",\"aria-label\":'Edit ' + row.title}},[_c('i',{staticClass:\"far fa-edit\"})]):_vm._e()],1)]}},{key:\"loading\",fn:function(){return [_c('loading',{attrs:{\"active\":_vm.isDataLoading,\"is-full-page\":false},on:{\"update:active\":function($event){_vm.isDataLoading=$event}}})]},proxy:true},{key:\"no-records\",fn:function(){return [(_vm.isInitialLoad === true)?_c('div',{staticClass:\"alert alert-info\",attrs:{\"role\":\"alert\"}},[_vm._v(\" Please use the filters on the left and then hit 'Search' or select a saved search from 'My Searches'. \"),_c('hr'),_c('button',{staticClass:\"btn-primary btn btn-block\",attrs:{\"type\":\"submit\"},on:{\"click\":_vm.triggerSearch}},[_vm._v(\"Search\")])]):_vm._e(),(_vm.isInitialLoad === false)?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" No records found. \")]):_vm._e()]},proxy:true}],null,true)}),_c('b-modal',{attrs:{\"id\":\"bv-modal-bulletin-report\",\"size\":\"lg\",\"hide-header\":\"\",\"hide-footer\":\"\",\"no-close-on-backdrop\":true}},[_c('project-bullet-report')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\",attrs:{\"id\":\"exampleModalLabel\"}},[_vm._v(\"Generate Bulletin Report\")])]),_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-4 col-form-label\",attrs:{\"for\":\"staticEmail\"}},[_vm._v(\"Choose a Template \"),_c('span',{staticClass:\"red-dot\"})]),_c('div',{staticClass:\"col-sm-8\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportRequest.template),expression:\"reportRequest.template\"},{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"custom-select\",class:{ 'is-invalid': _vm.errors.has('template') },attrs:{\"id\":\"template\",\"name\":\"template\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.reportRequest, \"template\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"bulletin_report\"}},[_vm._v(\"Bulletin Report\")]),_c('option',{attrs:{\"value\":\"project_details\"}},[_vm._v(\"Project Details\")]),_c('option',{attrs:{\"value\":\"search_report\"}},[_vm._v(\"Projet Search Report\")]),_c('option',{attrs:{\"value\":\"lows_awards\"}},[_vm._v(\"Lows and Awards\")])]),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Please select a template.\")])])]),_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-4 col-form-label\",attrs:{\"for\":\"inputPassword\"}},[_vm._v(\"Report Name\")]),_c('div',{staticClass:\"col-sm-8\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportRequest.name),expression:\"reportRequest.name\"},{name:\"validate\",rawName:\"v-validate\",value:('max:140'),expression:\"'max:140'\"}],staticClass:\"form-control\",class:{ 'is-invalid': _vm.errors.has('name') },attrs:{\"id\":\"name\",\"name\":\"name\",\"type\":\"text\",\"autocomplete\":\"off\",\"maxlength\":\"140\"},domProps:{\"value\":(_vm.reportRequest.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.reportRequest, \"name\", $event.target.value)}}}),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Max allowed characters is 140.\")])])]),_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-4 col-form-label\",attrs:{\"for\":\"inputPassword\"}},[_vm._v(\"Report Format \"),_c('span',{staticClass:\"red-dot\"})]),_c('div',{staticClass:\"col-sm-8\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportRequest.format),expression:\"reportRequest.format\"},{name:\"validate\",rawName:\"v-validate\",value:('required'),expression:\"'required'\"}],staticClass:\"custom-select\",class:{ 'is-invalid': _vm.errors.has('format') },attrs:{\"id\":\"format\",\"name\":\"format\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.reportRequest, \"format\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"pdf\"}},[_vm._v(\"PDF\")]),_c('option',{attrs:{\"value\":\"html\"}},[_vm._v(\"HTML\")]),_c('option',{attrs:{\"value\":\"word\"}},[_vm._v(\"Word\")]),_c('option',{attrs:{\"value\":\"excel\"}},[_vm._v(\"Excel\")])]),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Please select a format.\")])])]),_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"col-sm-4 col-form-label\",attrs:{\"for\":\"manipulateBy\"}},[_vm._v(\"Project Order\")]),_c('div',{staticClass:\"col-sm-4\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportRequest.manipulateBy),expression:\"reportRequest.manipulateBy\"}],staticClass:\"custom-select\",attrs:{\"id\":\"manipulateBy\",\"name\":\"manipulateBy\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.reportRequest, \"manipulateBy\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},_vm.onManipulateByChanged]}},[_c('option',{attrs:{\"value\":\"sortBy\"}},[_vm._v(\"Sort By\")]),_c('option',{attrs:{\"value\":\"groupBy\"}},[_vm._v(\"Group By\")])])]),_c('div',{staticClass:\"col-sm-4\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportRequest.manipulateDirection),expression:\"reportRequest.manipulateDirection\"}],staticClass:\"custom-select\",attrs:{\"id\":\"manipulateDirection\",\"name\":\"manipulateDirection\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.reportRequest, \"manipulateDirection\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.manipulateDirectionValues),function(option){return _c('option',{key:option.key,domProps:{\"value\":option.key}},[_vm._v(_vm._s(option.value))])}),0)])])]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Generate Report\")]),_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onReset}},[_vm._v(\"Reset\")]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onCloseModal}},[_vm._v(\"Close\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <fragment>\r\n <form @submit.prevent>\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Generate Bulletin Report</h5>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"form-group row\">\r\n <label for=\"staticEmail\" class=\"col-sm-4 col-form-label\">Choose a Template <span class=\"red-dot\"></span></label>\r\n <div class=\"col-sm-8\">\r\n <select id=\"template\" name=\"template\" class=\"custom-select\" :class=\"{ 'is-invalid': errors.has('template') }\"\r\n v-model=\"reportRequest.template\" v-validate=\"'required'\">\r\n <option value=\"bulletin_report\">Bulletin Report</option>\r\n <option value=\"project_details\">Project Details</option>\r\n <option value=\"search_report\">Projet Search Report</option>\r\n <option value=\"lows_awards\">Lows and Awards</option>\r\n </select>\r\n <div class=\"invalid-feedback\">Please select a template.</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label for=\"inputPassword\" class=\"col-sm-4 col-form-label\">Report Name</label>\r\n <div class=\"col-sm-8\">\r\n <input id=\"name\" name=\"name\" type=\"text\" class=\"form-control\" :class=\"{ 'is-invalid': errors.has('name') }\"\r\n autocomplete=\"off\" maxlength=\"140\" v-model=\"reportRequest.name\" v-validate=\"'max:140'\" />\r\n <div class=\"invalid-feedback\">Max allowed characters is 140.</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label for=\"inputPassword\" class=\"col-sm-4 col-form-label\">Report Format <span class=\"red-dot\"></span></label>\r\n <div class=\"col-sm-8\">\r\n <select id=\"format\" name=\"format\" class=\"custom-select\" :class=\"{ 'is-invalid': errors.has('format') }\"\r\n v-model=\"reportRequest.format\" v-validate=\"'required'\">\r\n <option value=\"pdf\">PDF</option>\r\n <option value=\"html\">HTML</option>\r\n <option value=\"word\">Word</option>\r\n <option value=\"excel\">Excel</option>\r\n </select>\r\n <div class=\"invalid-feedback\">Please select a format.</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label for=\"manipulateBy\" class=\"col-sm-4 col-form-label\">Project Order</label>\r\n <div class=\"col-sm-4\">\r\n <select id=\"manipulateBy\" name=\"manipulateBy\" class=\"custom-select\" v-model=\"reportRequest.manipulateBy\" @change=\"onManipulateByChanged\">\r\n <option value=\"sortBy\">Sort By</option>\r\n <option value=\"groupBy\">Group By</option>\r\n </select>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <select id=\"manipulateDirection\" name=\"manipulateDirection\" class=\"custom-select\" v-model=\"reportRequest.manipulateDirection\">\r\n <option v-for=\"option in manipulateDirectionValues\" :key=\"option.key\" :value=\"option.key\">{{ option.value }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-success\" @click=\"onSubmit\">Generate Report</button>\r\n <button type=\"button\" class=\"btn btn-success\" @click=\"onReset\">Reset</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" @click=\"onCloseModal\">Close</button>\r\n </div>\r\n </form>\r\n </fragment>\r\n</template>\r\n\r\n<script>\r\nimport Toast from \"@/utils/toast\";\r\nimport { ProjectService } from '@/services/'\r\n\r\nexport default {\r\n name: \"project-bullet-report\",\r\n data: function() {\r\n return {\r\n reportRequest: {\r\n template: null,\r\n name: null,\r\n format: null,\r\n manipulateBy: null,\r\n manipulateDirection: null\r\n },\r\n manipulateByGroupByOptions: [\r\n { key: 'stage', value: 'Stage' }, { key: 'zone', value: 'Zone' }, { key: 'funding', value: 'Funding Type' }\r\n ],\r\n manipulateBySortByOptions: [\r\n { key: 'projectTitle', value: 'Project Title' }, { key: 'closingDate', value: 'Closing Date' }, { key: 'tenderStage', value: 'Tender Stage' }\r\n ]\r\n };\r\n },\r\n computed: {\r\n manipulateDirectionValues () {\r\n if (this.reportRequest.manipulateBy === 'groupBy')\r\n return this.manipulateByGroupByOptions;\r\n if (this.reportRequest.manipulateBy === 'sortBy')\r\n return this.manipulateBySortByOptions;\r\n\r\n return [];\r\n }\r\n },\r\n methods: {\r\n onManipulateByChanged () {\r\n if (this.reportRequest.manipulateBy === 'groupBy') {\r\n this.reportRequest.manipulateDirection = this.manipulateByGroupByOptions[0].key;\r\n }\r\n else if (this.reportRequest.manipulateBy === 'sortBy') {\r\n this.reportRequest.manipulateDirection = this.manipulateBySortByOptions[0].key;\r\n }\r\n },\r\n onReset() {\r\n this.reportRequest.template = null;\r\n this.reportRequest.name = null;\r\n this.reportRequest.format = null;\r\n this.reportRequest.manipulateBy = null;\r\n this.reportRequest.manipulateDirection = null;\r\n\r\n this.$validator.reset();\r\n },\r\n async onSubmit() {\r\n var isFormValid = await this.$validator.validate();\r\n\r\n if (!isFormValid) {\r\n return;\r\n }\r\n\r\n try {\r\n ProjectService.bulletinReport(this.reportRequest)\r\n .then(() => Toast.success(this, \"Successfully downloaded bulletin report!\"))\r\n .catch(() => Toast.danger(this, \"Oops! An error has occured\"));\r\n\r\n this.$validator.reset();\r\n } catch {\r\n Toast.danger(this, \"Oops! An error has occured\");\r\n }\r\n },\r\n onCloseModal() {\r\n this.$bvModal.hide(\"bv-modal-bulletin-report\");\r\n }\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-bulletin-report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-bulletin-report.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-bulletin-report.vue?vue&type=template&id=964d9bfa&\"\nimport script from \"./project-bulletin-report.vue?vue&type=script&lang=js&\"\nexport * from \"./project-bulletin-report.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <fragment>\r\n <data-table\r\n :data=\"searchResults.results\"\r\n :columns=\"columns\"\r\n :total=\"searchResults.total\"\r\n :query=\"searchCriteria\"\r\n :selectedRows=\"selectedRecords\"\r\n :isLoading=\"isDataLoading\"\r\n :column-filter=\"$permissions().hasProjectSearchColumns\"\r\n @selected-columns-changed=\"onSelectedColumnsChanged\"\r\n @column-sort-changed=\"onColumnSortChanged\"\r\n @page-size-changed=\"onPageSizeChanged\"\r\n :onRowDblClick=\"goToProject\"\r\n :rowClass=\"setContextualClass\"\r\n >\r\n <template v-slot:header-custom-btns>\r\n <button type=\"button\" class=\"btn btn-outline-dark\" @click=\"goToMapView\" :disabled=\"searchResults.total === 0\">View Map</button>\r\n <button type=\"button\" class=\"btn btn-outline-dark ld-ext-right\" :class=\"{ 'running' : isExporting }\" @click=\"exportDataset(false)\"\r\n :disabled=\"isExporting || searchResults.results.length === 0\" v-if=\"$permissions().hasProjectExcelExport\"\r\n >\r\n Export to Excel\r\n <div class=\"ld ld-ring ld-spin\"></div>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-outline-dark ld-ext-right\" :class=\"{ 'running' : isExporting }\" @click=\"exportDataset(true)\"\r\n :disabled=\"isExporting || searchResults.results.length === 0\" v-if=\"$permissions().hasProjectExcelExport\"\r\n >\r\n Export All to Excel\r\n <div class=\"ld ld-ring ld-spin\"></div>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-outline-dark\" @click=\"print\">Print</button>\r\n <!-- <button type=\"button\" class=\"btn btn-outline-dark\" @click=\"openBulletinReportModal\" v-if=\"$permissions().hasProjectBulletinReportExport\">Bulletin Report</button> -->\r\n </template>\r\n <template v-slot:ocaaNumber=\"{ row }\">{{ row.ocaaNumber }}</template>\r\n <template v-slot:lcaNumber=\"{ row }\">{{ row.lcaNumber }}</template>\r\n <template v-slot:title=\"{ row }\">{{ row.title }}</template>\r\n <template v-slot:classificationOfWork=\"{ row }\">{{ row.classificationOfWork }}</template>\r\n <template v-if=\"showDocumentSearch\" v-slot:keywordDensity=\"{ row }\"><span v-html=\"row.keywordDensity\">{{ row.keywordDensity }}</span></template>\r\n <template v-slot:closingDate=\"{ row }\">{{ row.closingDate | datetime('MMM dd, yyyy h:mm a') }} {{ row.timeZone.code }}</template>\r\n <template v-slot:owner.owner.name=\"{ row }\">{{ row.owner || '---' }}</template>\r\n <template v-slot:ownerType.name=\"{ row }\">{{ row.ownerType || '---' }}</template>\r\n <template v-slot:addenda=\"{ row }\">{{ row.addenda }}</template>\r\n <template v-slot:siteMeeting=\"{ row }\">{{ row.siteMeetings.length ? row.siteMeetings[0].text : '---' }}</template>\r\n <template v-slot:belongZone.name=\"{ row }\">{{ row.belongZone }}</template>\r\n <template v-slot:city=\"{ row }\">{{ getCitiesDisplay(row.addresses) }}</template>\r\n <template v-slot:tenderStage.name=\"{ row }\">{{ row.tenderStage }}</template>\r\n <template v-slot:procurementType=\"{ row }\">{{ row.procurementType }}</template>\r\n <template v-slot:funding.name=\"{ row }\">{{ row.funding }}</template>\r\n <template v-slot:budget=\"{ row }\">{{ row.budget }}</template>\r\n <template v-slot:ownerSolicitationNumber=\"{ row }\"> {{ row.ownerSolicitationNumber }} </template>\r\n <template v-slot:bids.company.name=\"{ row }\">\r\n <span v-for=\"(bidder, index) in filteredRowBids(row.bids)\" :key=\"'search-result-bidder-' + index\">\r\n {{ bidder.companyName }} <br />\r\n </span>\r\n <span v-if=\"row.bids.length === 0\">---</span>\r\n </template>\r\n <template v-slot:contact.companyName=\"{ row }\">\r\n <span v-for=\"(contact, index) in row.contacts\" :key=\"'search-result-contact-' + index\">\r\n {{ contact.companyName }} <br />\r\n </span>\r\n <span v-if=\"row.contacts.length === 0\">---</span>\r\n </template>\r\n <template v-slot:addendaInfo=\"{ row }\">\r\n <span style=\"white-space: pre;\">{{ row.addendaInfo || '---' }}</span>\r\n </template>\r\n <template v-slot:createdOn=\"{ row }\">{{ row.createdOn | datetime('MMM dd, yyyy h:mm a') }} {{ row.timeZone.code }}</template>\r\n <template v-slot:updatedOn=\"{ row }\">{{ row.updatedOn | datetime('MMM dd, yyyy h:mm a') }} {{ row.updatedOn != null && row.updatedOn != undefined ? row.timeZone.code:\"\" }}</template>\r\n <template v-slot=\"{ row }\">\r\n <td style=\"width: 125px;\">\r\n <follow-button v-if=\"row.allowView\" class=\"btn btn-link btn-sm\" :projectId=\"row.id\" :projectTitle=\"row.title\" :value=\"row.isUserFollowing\">\r\n <template v-slot:is-following>\r\n <i class=\"far fa-check-circle\"></i>\r\n <span class=\"sr-only\">Unfollow</span>\r\n </template>\r\n <template v-slot:is-not-following>\r\n <i class=\"fas fa-rss\"></i>\r\n <span class=\"sr-only\">Follow</span>\r\n </template>\r\n </follow-button>\r\n\r\n <router-link :to=\"{ name: 'project-info', params: { id: row.id, qs: $route.query } }\" class=\"btn btn-link btn-sm\" role=\"button\" :aria-label=\"'View ' + row.title\">\r\n <i class=\"far fa-eye\"></i>\r\n </router-link>\r\n\r\n <router-link v-if=\"row.allowEdit\" :to=\"'/project/edit/' + row.id\" class=\"btn btn-link btn-sm\" role=\"button\" :aria-label=\"'Edit ' + row.title\">\r\n <i class=\"far fa-edit\"></i>\r\n </router-link>\r\n </td>\r\n </template>\r\n <template v-slot:loading>\r\n <loading :active.sync=\"isDataLoading\" :is-full-page=\"false\"></loading>\r\n </template>\r\n <template v-slot:no-records>\r\n <div v-if=\"isInitialLoad === true\" class=\"alert alert-info\" role=\"alert\">\r\n Please use the filters on the left and then hit 'Search' or select a saved search from 'My Searches'.\r\n <hr />\r\n <button type=\"submit\" class=\"btn-primary btn btn-block\" @click=\"triggerSearch\">Search</button>\r\n </div>\r\n <div v-if=\"isInitialLoad === false\" class=\"alert alert-warning\" role=\"alert\">\r\n No records found.\r\n </div>\r\n </template>\r\n </data-table>\r\n <b-modal id=\"bv-modal-bulletin-report\" size=\"lg\" hide-header hide-footer :no-close-on-backdrop=\"true\">\r\n <project-bullet-report></project-bullet-report>\r\n </b-modal>\r\n </fragment>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from \"vuex\";\r\nimport FileDownload from \"@/utils/fileDownload\";\r\nimport { ProjectService } from \"@/services/\";\r\nimport { DataTable } from \"@/components/datatable/\";\r\nimport Toast from \"@/utils/toast\";\r\nimport ProjectFollowButton from \"@/views/project/components/project-follow-button.vue\";\r\nimport ProjectBulletinReport from \"@/views/project/components/project-bulletin-report.vue\";\r\nimport { alpha as alphaSort } from \"@/utils/sort\";\r\n\r\nconst STORAGE_KEY_PROJECT_TABLE_SELECTED_COLUMNS = 'project-table-selected-columns';\r\nconst STORAGE_KEY_PROJECT_TABLE_COLUMN_SORTING = 'project-table-column-sorting';\r\nconst STORAGE_KEY_PROJECT_TABLE_PAGE_SIZE = 'project-table-page-size';\r\n\r\nexport default {\r\n name: \"project-search-results\",\r\n props: [\"isDataLoading\", \"projects\", \"searchCriteria\", \"searchResults\", \"documentSearch\", \"searchParams\"],\r\n components: { DataTable, \"follow-button\": ProjectFollowButton, \"project-bullet-report\": ProjectBulletinReport },\r\n data: function() {\r\n return {\r\n isExporting: false,\r\n isInitialLoad: true,\r\n selectedRecords: [],\r\n columns: [\r\n { display: \"Project Number\", field: \"ocaaNumber\", exportFieldName: \"ocaaNumber\", sortable: true },\r\n { display: \"LCA Number\", field: \"lcaNumber\", exportFieldName: \"lcaNumber\", sortable: true,isVisible:false },\r\n { display: \"Project Title\", field: \"title\", exportFieldName: \"title\", sortable: true },\r\n { display: \"Classification of Work\", field: \"classificationOfWork\", exportFieldName: \"classificationOfWork\", sortable: true, isVisible: false },\r\n { display: \"Closing Date\", field: \"closingDate\", exportFieldName: \"closingDate\", sortable: true },\r\n { display: \"Owner\", field: \"owner.owner.name\", exportFieldName: \"owner\", sortable: true },\r\n { display: \"Owner Type\", field: \"ownerType.name\", exportFieldName: \"ownerType\", sortable: true, isVisible:false },\r\n { display: \"Addenda\", field: \"addenda\", exportFieldName: \"addenda\", sortable: true },\r\n { display: \"Site Meeting\", field: \"siteMeeting\", exportFieldName: \"siteMeetings\", sortable: true, isVisible: false },\r\n { display: \"Project Location Zone\", field: \"belongZone.name\", exportFieldName: \"zone\", sortable: true, isVisible: false },\r\n { display: \"City\", field: \"city\", exportFieldName: \"city\", sortable: true },\r\n { display: \"Tender Stage\", field: \"tenderStage.name\", exportFieldName: \"tenderStage\", sortable: true },\r\n { display: \"Procurement Type\", field: \"procurementType\", exportFieldName: \"procurementType\", sortable: true, isVisible:false },\r\n { display: \"Funding\", field: \"funding.name\", exportFieldName: \"funding\", sortable: true, isVisible: false },\r\n { display: \"Budget\", field: \"budget\", exportFieldName: \"budget\", sortable: true, isVisible: false },\r\n { display: \"Owner Number\", field: \"ownerSolicitationNumber\", exportFieldName: \"ownerSolicitationNumber\", sortable: true, isVisible: false },\r\n { display: \"Bidders\", field: \"bids.company.name\", exportFieldName: \"bidders\", sortable: true, isVisible: false },\r\n { display: \"Project Contact(s)\", field: \"contact.companyName\", exportFieldName: \"projectContacts\", sortable: true, isVisible: false },\r\n { display: \"Addenda Notes\", field: \"addendaInfo\", exportFieldName: \"addendaInfo\", sortable: true, isVisible: false },\r\n { display: \"Created Date\", field: \"createdOn\", exportFieldName: \"createdOn\", sortable: true, isVisible: false },\r\n { display: \"Last Updated Date\", field: \"updatedOn\", exportFieldName: \"updatedOn\", sortable: true, isVisible: false },\r\n { ignore: true }\r\n ],\r\n query: {}\r\n };\r\n },\r\n computed: {\r\n visibleColumnNames() {\r\n return this.columns\r\n .filter(column => !column.ignore && column.isVisible)\r\n .map(column => column.exportFieldName);\r\n },\r\n hasEditProjectPermission() {\r\n return this.$permissions().hasEditProjectPermission;\r\n },\r\n showDocumentSearch() {\r\n return (this.getUseDocumentSearch || '').toUpperCase() === 'TRUE'\r\n },\r\n ...mapGetters([\r\n \"getProjects\",\r\n \"getFundingTypes\",\r\n \"getTenderStages\",\r\n \"getZones\",\r\n \"getUseDocumentSearch\"\r\n ])\r\n },\r\n methods: {\r\n ...mapActions([\r\n \"fetchClientSettings\"\r\n ]),\r\n exportDataset(exportAll) {\r\n let params = { ...this.searchParams };\r\n\r\n this.isExporting = true;\r\n\r\n if (params['createdStart'] || params['createdEnd']) {\r\n params.created = {};\r\n\r\n if (params['createdStart']) {\r\n params.created.start = params['createdStart'];\r\n delete params['createdStart'];\r\n }\r\n if (params['createdEnd']) {\r\n params.created.end = params['createdEnd'];\r\n delete params['createdEnd'];\r\n }\r\n }\r\n\r\n if (params['closingStart'] || params['closingEnd']) {\r\n params.closing = {};\r\n\r\n if (params['closingStart']) {\r\n params.closing.start = params['closingStart'];\r\n delete params['closingStart'];\r\n }\r\n if (params['closingEnd']) {\r\n params.closing.end = params['closingEnd'];\r\n delete params['closingEnd'];\r\n }\r\n }\r\n\r\n if (params['lastUpdatedStart'] || params['lastUpdatedEnd']) {\r\n params.lastUpdated = {};\r\n\r\n if (params['lastUpdatedStart']) {\r\n params.lastUpdated.start = params['lastUpdatedStart'];\r\n delete params['lastUpdatedStart'];\r\n }\r\n if (params['lastUpdatedEnd']) {\r\n params.lastUpdated.end = params['lastUpdatedEnd'];\r\n delete params['lastUpdatedEnd'];\r\n }\r\n }\r\n\r\n if (params['siteMeetingStart'] || params['siteMeetingEnd']) {\r\n params.siteMeeting = {};\r\n\r\n if (params['siteMeetingStart']) {\r\n params.siteMeeting.start = params['siteMeetingStart'];\r\n delete params['siteMeetingStart'];\r\n }\r\n if (params['siteMeetingEnd']) {\r\n params.siteMeeting.end = params['siteMeetingEnd'];\r\n delete params['siteMeetingEnd'];\r\n }\r\n }\r\n\r\n if (!exportAll) {\r\n let exportParams = {\r\n search: params,\r\n columns: this.visibleColumnNames\r\n };\r\n\r\n return ProjectService.export(exportParams)\r\n .then(response => FileDownload(\"ProjectExport.xlsx\", response.data))\r\n .finally(() => this.isExporting = false);\r\n } else {\r\n let exportParams = {\r\n search: params,\r\n columns: this.columns.filter(column => !column.ignore).map(column => column.exportFieldName)\r\n };\r\n\r\n return ProjectService.export(exportParams)\r\n .then(response => FileDownload(\"ProjectExport-AllFields.xlsx\", response.data))\r\n .finally(() => this.isExporting = false);\r\n }\r\n },\r\n filteredRowBids(bids) {\r\n return bids.filter((s1, pos, arr) => arr.findIndex((s2) => s2.companyName === s1.companyName) === pos);\r\n },\r\n getCitiesDisplay(addresses) {\r\n if (!addresses || addresses.length === 0) return \"---\";\r\n\r\n return addresses.map(a => a.city).sort((a, b) => alphaSort(a, b)).join(\", \");\r\n },\r\n getFundingTypeName(id) {\r\n let selectedFundingType = this.getFundingTypes.find(\r\n type => type.id === id\r\n );\r\n return (selectedFundingType && selectedFundingType.name) || \"\";\r\n },\r\n getSiteMeetingDisplay(siteMeeting) {\r\n return (siteMeeting && siteMeeting.text) || \"---\";\r\n },\r\n getTenderStageName(id) {\r\n let selectedTenderStage = this.getTenderStages.find(\r\n stage => stage.id === id\r\n );\r\n return (selectedTenderStage && selectedTenderStage.name) || \"\";\r\n },\r\n getZoneName(id) {\r\n let selectedZone = this.getZones.find(zone => zone.id == id);\r\n return (selectedZone && selectedZone.name) || \"\";\r\n },\r\n goToMapView() {\r\n this.$emit(\"change-tab\", \"MAPS\");\r\n },\r\n goToProject(item) {\r\n this.$router.push({ name: 'project-info', params: { id: item.id, qs: this.$route.query } });\r\n },\r\n openBulletinReportModal () {\r\n this.$bvModal.show(\"bv-modal-bulletin-report\");\r\n },\r\n onPageSizeChanged (pageSize) {\r\n window.localStorage.setItem(STORAGE_KEY_PROJECT_TABLE_PAGE_SIZE, JSON.stringify(pageSize));\r\n },\r\n onSelectedColumnsChanged(columns) {\r\n let activeColumns = columns.map(column => ({ field: column.field, isVisible: column.isVisible }));\r\n window.localStorage.setItem(STORAGE_KEY_PROJECT_TABLE_SELECTED_COLUMNS, JSON.stringify(activeColumns));\r\n },\r\n onColumnSortChanged(sort) {\r\n window.localStorage.setItem(STORAGE_KEY_PROJECT_TABLE_COLUMN_SORTING, JSON.stringify(sort));\r\n },\r\n print () {\r\n window.print();\r\n },\r\n setContextualClass(row) {\r\n if (!row.showProject) return 'table-warning';\r\n if (row.isPrivate) return 'table-info';\r\n return null;\r\n },\r\n subscribeToProject(projectId, isUserFollowing) {\r\n if (isUserFollowing) return;\r\n\r\n ProjectService.subscribe(projectId)\r\n .then(() => Toast.success(this, \"Successfully following project!\"))\r\n .catch(() => Toast.danger(this, \"Oops! An error has occured\"));\r\n },\r\n triggerSearch () {\r\n this.$emit('trigger-search');\r\n }\r\n },\r\n async mounted () {\r\n\r\n this.isInitialLoad = Object.keys(this.$route.query).length === 0 && this.$route.query.constructor === Object;\r\n\r\n this.fetchClientSettings().then(() => {\r\n if (!this.showDocumentSearch){\r\n this.columns.map(e => {\r\n if (e.title === \"keywordDensity\") {\r\n this.columns.splice(2,1);\r\n }\r\n })\r\n }\r\n else {\r\n //Get the saved version of density \r\n let savedColumns = JSON.parse(window.localStorage.getItem(STORAGE_KEY_PROJECT_TABLE_SELECTED_COLUMNS)) || [];\r\n let savedDensity = savedColumns.find(c => c.field==\"keywordDensity\");\r\n\r\n //Used saved version, or insert new\r\n if(savedDensity == null || savedDensity==undefined){\r\n this.columns.splice(2, 0, { display: \"Keyword Density\", field: \"keywordDensity\", exportFieldName: \"keywordDensity\", sortable: !!this.documentSearch, isVisible: true});\r\n }else{\r\n this.columns.splice(2, 0, { display: \"Keyword Density\", field: \"keywordDensity\", exportFieldName: \"keywordDensity\", sortable: !!this.documentSearch, isVisible: savedDensity.isVisible});\r\n }\r\n }\r\n });\r\n\r\n let savedColumns = JSON.parse(window.localStorage.getItem(STORAGE_KEY_PROJECT_TABLE_SELECTED_COLUMNS)) || [];\r\n this.columns.forEach(column => Object.assign(column, savedColumns.find(i => i.field === column.field)));\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-search-results.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-search-results.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-search-results.vue?vue&type=template&id=10e77432&\"\nimport script from \"./project-search-results.vue?vue&type=script&lang=js&\"\nexport * from \"./project-search-results.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fragment',[_c('div',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-link\",on:{\"click\":_vm.goToResultsView}},[_c('i',{staticClass:\"fas fa-arrow-left\",attrs:{\"aria-hidden\":\"true\"}}),_c('strong',[_vm._v(\"Go Back to Results\")])])]),_c('div',{staticClass:\"map-container\"},[_c('google-map-loader',{key:_vm.reloadKey,attrs:{\"mapConfig\":_vm.mapConfig,\"markers\":_vm.markers,\"apiKey\":_vm.getGoogleMapKey},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar google = ref.google;\nvar map = ref.map;\nvar info = ref.info;\nreturn _vm._l((_vm.markers),function(marker){return _c('google-map-marker',{key:marker.id,attrs:{\"marker\":marker,\"google\":google,\"map\":map,\"info\":info}})})}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{ref:\"googleMap\",staticClass:\"google-map\",attrs:{\"id\":\"map\"}}),(this.google && this.map && this.info)?[_vm._t(\"default\",null,{\"google\":_vm.google,\"map\":_vm.map,\"info\":_vm.info})]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div>\r\n <div id=\"map\" class=\"google-map\" ref=\"googleMap\"></div>\r\n <template v-if=\"this.google && this.map && this.info\">\r\n <slot :google=\"google\" :map=\"map\" :info=\"info\" />\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n#map {\r\n width: 100%;\r\n height: 600px;\r\n background-color: grey;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport GoogleMapsApiLoader from \"google-maps-api-loader\";\r\n\r\nexport default {\r\n props: { mapConfig: Object, apiKey: String, markers: { type: Array } },\r\n data() {\r\n return {\r\n google: null,\r\n map: null,\r\n info: null\r\n };\r\n },\r\n methods: {\r\n initializeMap() {\r\n const mapContainer = this.$refs.googleMap;\r\n this.map = new this.google.maps.Map(mapContainer, this.mapConfig);\r\n this.info = new this.google.maps.InfoWindow();\r\n\r\n let bounds = new this.google.maps.LatLngBounds();\r\n this.markers.forEach(marker => bounds.extend(marker.position));\r\n this.map.fitBounds(bounds);\r\n this.map.setZoom(this.mapConfig.zoom || 10);\r\n }\r\n },\r\n async mounted() {\r\n const googleMapApi = await GoogleMapsApiLoader({ apiKey: this.apiKey });\r\n this.google = googleMapApi;\r\n this.initializeMap();\r\n }\r\n};\r\n</script>\r\n","var render, staticRenderFns\nimport script from \"./google-map-marker.vue?vue&type=script&lang=js&\"\nexport * from \"./google-map-marker.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./google-map-loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./google-map-loader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./google-map-loader.vue?vue&type=template&id=554a38e6&scoped=true&\"\nimport script from \"./google-map-loader.vue?vue&type=script&lang=js&\"\nexport * from \"./google-map-loader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./google-map-loader.vue?vue&type=style&index=0&id=554a38e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"554a38e6\",\n null\n \n)\n\nexport default component.exports","<script>\r\nexport default {\r\n name: 'google-map-marker',\r\n props: {\r\n google: { type: Object, required: true },\r\n map: { type: Object, required: true },\r\n info: { type: Object, required: true },\r\n marker: { type: Object, required: true }\r\n },\r\n render () {\r\n return null;\r\n },\r\n mounted () {\r\n let marker = new this.google.maps.Marker({\r\n title: this.marker.title,\r\n position: this.marker.position,\r\n map: this.map\r\n });\r\n\r\n marker.addListener('click', () => {\r\n this.info.setContent(this.marker.content);\r\n this.info.open(this.map, marker)\r\n });\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./google-map-marker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./google-map-marker.vue?vue&type=script&lang=js&\"","<template>\r\n <fragment>\r\n <div class=\"text-right\">\r\n <button class=\"btn btn-link\" @click=\"goToResultsView\">\r\n <i class=\"fas fa-arrow-left\" aria-hidden=\"true\"></i>\r\n <strong>Go Back to Results</strong>\r\n </button>\r\n </div>\r\n\r\n <div class=\"map-container\">\r\n <google-map-loader :mapConfig=\"mapConfig\" :markers=\"markers\" :apiKey=\"getGoogleMapKey\" :key=\"reloadKey\">\r\n <template slot-scope=\"{ google, map, info }\">\r\n <google-map-marker\r\n v-for=\"marker in markers\"\r\n :key=\"marker.id\"\r\n :marker=\"marker\"\r\n :google=\"google\"\r\n :map=\"map\"\r\n :info=\"info\"\r\n />\r\n </template>\r\n </google-map-loader>\r\n </div>\r\n </fragment>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from \"vuex\";\r\nimport { GoogleMapLoader, GoogleMapMarker } from \"@/components/google-maps\";\r\n\r\nexport default {\r\n name: \"project-search-maps\",\r\n components: { GoogleMapLoader, GoogleMapMarker },\r\n props: [\"apiKey\", \"projects\"],\r\n data() {\r\n return {\r\n reloadKey: 'google-map-loader-key-' + Date.now(),\r\n markers: [],\r\n mapConfig: {\r\n zoom: 13\r\n }\r\n };\r\n },\r\n watch: {\r\n projects: function() {\r\n this.markers = this.generateMarkers();\r\n this.reloadKey = 'google-map-loader-key-' + Date.now();\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\"getGoogleMapKey\"])\r\n },\r\n methods: {\r\n generateMarkers() {\r\n let constructMarkers = project => project.addresses.filter(address => filterMarkers(address)).map(address => constructMarker(project,address));\r\n let filterMarkers = (address) => {\r\n return !(address==undefined || address.latitude == undefined || address.latitude == null || address.latitude == ''|| address.longitude == undefined || address.longitude == null || address.longitude == '');\r\n }\r\n let constructMarker = (project, address) => {\r\n let closingDate = this.$options.filters.datetime(project.closingDate);\r\n let url = `<a href=\"/project/info/${project.id}\">View Project Details</a>`;\r\n\r\n let content = `\r\n <div>${project.title}</div>\r\n <div>${project.owner?.name || 'N/A' }</div>\r\n <div>${closingDate}</div>\r\n <div>${url}</div>\r\n `;\r\n\r\n return {\r\n id: address.id,\r\n title: project.title,\r\n content: content,\r\n position: { lat: address.latitude, lng: address.longitude }\r\n };\r\n };\r\n\r\n return this.projects.flatMap(constructMarkers);\r\n },\r\n goToResultsView() {\r\n this.$emit(\"change-tab\", \"RESULTS\");\r\n }\r\n },\r\n mounted() {\r\n this.markers = this.generateMarkers();\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-search-maps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-search-maps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-search-maps.vue?vue&type=template&id=2512892c&\"\nimport script from \"./project-search-maps.vue?vue&type=script&lang=js&\"\nexport * from \"./project-search-maps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <fragment>\r\n <div :class=\"['sidebar_page', { 'left_side_closed': !showSidebar }]\">\r\n <app-navbar></app-navbar>\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <loading :active.sync=\"isPageLoading\" is-full-page></loading>\r\n\r\n <project-advanced-search :showSidebar=\"showSidebar\" :searchCriteria.sync=\"searchCriteria\" ref=\"projectAdvanceSearch\"></project-advanced-search>\r\n\r\n <div class=\"col-xl-9 px-xl-4 py-4 right_side\">\r\n <div class=\"page-title d-flex align-items-center\">\r\n <button type=\"button\" class=\"mr-1 bg-transparent border-0 d-print-none\" @click=\"toggleSidebar()\" aria-label=\"Toggle search\">\r\n <i class=\"fas fa-lg\" v-bind:class=\"[showSidebar ? 'fa-chevron-left': 'fa-chevron-right' ]\"></i>\r\n </button>\r\n <h1>Find A Project</h1>\r\n </div>\r\n\r\n <div class=\"page-content\">\r\n <component\r\n v-bind:is=\"currentTabComponent\"\r\n :isDataLoading.sync=\"isDataLoading\"\r\n :projects=\"searchResults.results\"\r\n :searchCriteria=\"searchCriteria\"\r\n :searchResults=\"searchResults\"\r\n :searchParams=\"searchParams\"\r\n :documentSearch=\"searchCriteria.documentSearch\"\r\n @change-tab=\"changeTab\"\r\n @trigger-search=\"triggerAdvancedSearchSubmit\"\r\n ></component>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <b-modal\r\n id=\"bv-modal-project-saved-search\"\r\n hide-header\r\n hide-footer\r\n :no-close-on-backdrop=\"true\"\r\n >\r\n <project-saved-search :searchCriteria.sync=\"searchCriteria\" />\r\n </b-modal>\r\n </fragment>\r\n</template>\r\n\r\n<script>\r\nimport { ProjectService } from \"@/services/\";\r\nimport { mapGetters, mapActions } from \"vuex\";\r\nimport { DocumentSearchService } from \"@/services/\";\r\nimport AppNavBar from \"@/components/app-navbar.vue\";\r\nimport ProjectAdvancedSearch from \"@/views/project/components/project-advanced-search.vue\";\r\nimport ProjectSavedSearch from \"@/views/project/components/project-saved-search.vue\";\r\nimport ProjectSearchResults from \"@/views/project/components/project-search-results.vue\";\r\nimport ProjectSearchMaps from \"@/views/project/components/project-search-maps.vue\";\r\nimport Toast from \"@/utils/toast\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\nconst STORAGE_KEY_PROJECT_TABLE_COLUMN_SORTING = 'project-table-column-sorting';\r\nconst STORAGE_KEY_PROJECT_TABLE_PAGE_SIZE = 'project-table-page-size';\r\n\r\nconst defaultSearchCriteria = {\r\n keyword: '',\r\n documentSearch: false,\r\n city: null,\r\n zoneIds: [],\r\n provideFollowedOnly: false,\r\n provideHiddenOnly: false,\r\n createdStart: null,\r\n createdEnd: null,\r\n lastUpdatedStart: null,\r\n lastUpdatedEnd: null,\r\n siteMeetingStart: null,\r\n siteMeetingEnd: null,\r\n classificationTypeId: null,\r\n classificationOfWorkIds: [],\r\n ownerTypeId: null,\r\n tenderStageIds: ['ba1408eb-83d9-4c94-a2ba-6d9436773b36'], // open\r\n procurementTypeId: null,\r\n fundingTypeIds: [],\r\n page: 1,\r\n pageSize: 10,\r\n sortOrder: null,\r\n sortDirection: null,\r\n selectedSearchId: \"00000000-0000-0000-0000-000000000000\"\r\n};\r\n\r\nexport default {\r\n components: {\r\n \"app-navbar\": AppNavBar,\r\n ProjectAdvancedSearch,\r\n ProjectSearchResults,\r\n ProjectSavedSearch,\r\n ProjectSearchMaps\r\n },\r\n data: function() {\r\n return {\r\n isInitialLoad: true,\r\n isPageLoading: true,\r\n isDataLoading: false,\r\n currentTabComponent: ProjectSearchResults,\r\n showSidebar: true,\r\n projects: [],\r\n searchResults: { total: 0, results: [] },\r\n searchCriteria: null,\r\n searchParams: null,\r\n };\r\n },\r\n watch: {\r\n \"searchCriteria.page\": function(newValue, oldValue) {\r\n if (this.isInitialLoad === false && typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n this.$router.push({ query: { ...this.$route.query, ...{ page: newValue } } }).catch(() => {}); // catch duplicated navigation\r\n }\r\n },\r\n \"searchCriteria.pageSize\": function(newValue, oldValue) {\r\n if (this.isInitialLoad === false && typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n this.$router.push({ query: { ...this.$route.query, ...{ page: 1, pageSize: newValue } } }).catch(() => {}); // catch duplicated navigation\r\n }\r\n },\r\n \"searchCriteria.sortDirection\": function(newValue, oldValue) {\r\n if (this.isInitialLoad === false && typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n this.getSearchResults();\r\n }\r\n },\r\n \"searchCriteria.sortOrder\": function(newValue, oldValue) {\r\n if (this.isInitialLoad === false && typeof oldValue !== 'undefined' && newValue !== oldValue) {\r\n this.getSearchResults();\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\"getCurrentUser\"])\r\n },\r\n methods: {\r\n triggerAdvancedSearchSubmit () {\r\n this.$refs.projectAdvanceSearch.onSubmit();\r\n },\r\n changeTab(tab) {\r\n switch (tab) {\r\n case \"RESULTS\":\r\n this.currentTabComponent = ProjectSearchResults;\r\n break;\r\n case \"MAPS\":\r\n this.currentTabComponent = ProjectSearchMaps;\r\n break;\r\n default:\r\n }\r\n },\r\n toggleSidebar() {\r\n this.showSidebar = !this.showSidebar;\r\n },\r\n async getSearchResults() {\r\n if (!this.isPageLoading) {\r\n this.isDataLoading = true;\r\n }\r\n\r\n let params = { ...this.searchCriteria };\r\n\r\n // convert query string flattened values into nested objects\r\n const qsConverter = function (obj, key) {\r\n var _items = Object.keys(obj).filter(i => i.indexOf(key) >= 0);\r\n\r\n if (!_items.length) return obj;\r\n\r\n obj[key] = {};\r\n\r\n _items.forEach(i => {\r\n let v = i.replace(key, '');\r\n obj[key][v] = obj[i];\r\n delete obj[i];\r\n })\r\n\r\n return obj;\r\n };\r\n\r\n qsConverter(params, 'created');\r\n qsConverter(params, 'closing');\r\n qsConverter(params, 'lastUpdated');\r\n qsConverter(params, 'siteMeeting');\r\n qsConverter(params, 'awardedDate');\r\n\r\n\r\n let originalResult;\r\n\r\n if (params['documentSearch'] === 'true' || params['documentSearch'] === true) {\r\n params.pageSize = 100;\r\n this.searchCriteria.pageSize = 100;\r\n originalResult = await ProjectService.searchWithKeywordDensity(params);\r\n this.searchResults.results = originalResult.data.results;\r\n } else {\r\n originalResult = await ProjectService.search(params);\r\n this.searchResults.results = originalResult.data.results.map( r => { r.keywordDensity = \"---\"; return r });\r\n }\r\n\r\n this.searchResults = originalResult.data;\r\n this.isDataLoading = false;\r\n this.searchParams = cloneDeep(this.searchCriteria);\r\n },\r\n getKeywordDensity(keyword, projectId) {\r\n return DocumentSearchService.getKeywordDensityByProjectId(keyword, projectId).then(response => {\r\n return new Promise( resolve => {\r\n if(response.status === 200){\r\n resolve(response.data.keywordDensityTotal);\r\n }else{\r\n resolve(0);\r\n }\r\n });\r\n })\r\n .catch( error => {\r\n throw(error);\r\n });\r\n },\r\n saveSearch() {\r\n this.$bvModal.show(\"bv-modal-project-saved-search\");\r\n },\r\n onSubmit() {\r\n this.getSearchResults();\r\n },\r\n ...mapActions([\r\n \"fetchClientSettings\",\r\n \"fetchProcurementTypes\",\r\n \"fetchProjects\",\r\n \"fetchProjectSearches\",\r\n \"fetchFundingTypes\",\r\n \"fetchOwnerTypes\",\r\n \"fetchClassificationTypes\",\r\n \"fetchTenderStages\",\r\n \"fetchZones\",\r\n \"fetchUser\"\r\n ])\r\n },\r\n beforeMount() {\r\n let savedColumnSort = JSON.parse(window.localStorage.getItem(STORAGE_KEY_PROJECT_TABLE_COLUMN_SORTING)) || {};\r\n let savedPageSort = JSON.parse(window.localStorage.getItem(STORAGE_KEY_PROJECT_TABLE_PAGE_SIZE)) || {};\r\n this.searchCriteria = { ...defaultSearchCriteria, ...savedPageSort, ...this.$route.query, ...savedColumnSort };\r\n this.searchParams = cloneDeep(this.searchCriteria)\r\n\r\n // this is a hack to correct when only array option is selected, it will get bound as a string on page reload\r\n if (this.searchCriteria.zoneIds && !Array.isArray(this.searchCriteria.zoneIds)) {\r\n this.searchCriteria.zoneIds = [this.searchCriteria.zoneIds];\r\n }\r\n if (this.searchCriteria.classificationOfWorkIds && !Array.isArray(this.searchCriteria.classificationOfWorkIds)) {\r\n this.searchCriteria.classificationOfWorkIds = [this.searchCriteria.classificationOfWorkIds];\r\n }\r\n if (this.searchCriteria.tenderStageIds && !Array.isArray(this.searchCriteria.tenderStageIds)) {\r\n this.searchCriteria.tenderStageIds = [this.searchCriteria.tenderStageIds];\r\n }\r\n\r\n // this is a hack to correct above code from setting stage to 'open' when user select 'all', which is a null value\r\n if (Object.keys(this.$route.query).length > 1 && !this.$route.query['tenderStageId']) {\r\n this.searchCriteria.tenderStageId = null\r\n }\r\n\r\n // if tenderStageId (singular) is passed, then we'll assign it to the collection and set to null\r\n if (Object.keys(this.$route.query).length > 1 && this.$route.query['tenderStageId']) {\r\n this.searchCriteria.tenderStageIds = [...this.searchCriteria.tenderStageIds, ...[this.$route.query['tenderStageId']]];\r\n this.searchCriteria.tenderStageId = null;\r\n }\r\n\r\n if ((!Object.keys(this.$route.query).length) || (Object.keys(this.$route.query).length == 1 && this.$route.query['page'])) {\r\n let _user = this.getCurrentUser;\r\n\r\n this.fetchUser(_user.id).then(user => {\r\n if (user.isClientAdmin || user.isSystemAdmin) {\r\n let _zoneIds = user.zones.map(({ zoneId }) => zoneId);\r\n this.searchCriteria.zoneIds = [...new Set(_zoneIds)];\r\n } else {\r\n let _targetedZoneIds = user.companies.map(function(e) { return e.targetedZoneIds; }).flat();\r\n this.searchCriteria.zoneIds = [...new Set(_targetedZoneIds)];\r\n }\r\n });\r\n }\r\n },\r\n mounted: function() {\r\n this.isInitialLoad = Object.keys(this.$route.query).length === 0 && this.$route.query.constructor === Object;\r\n\r\n Promise.all([\r\n this.fetchClientSettings(),\r\n this.fetchProcurementTypes(),\r\n this.fetchProjectSearches(),\r\n this.fetchFundingTypes(),\r\n this.fetchTenderStages(),\r\n this.fetchOwnerTypes(),\r\n this.fetchClassificationTypes(),\r\n this.fetchZones(),\r\n this.isInitialLoad || this.getSearchResults()\r\n ])\r\n .then(() => {\r\n this.isPageLoading = false;\r\n })\r\n .catch(() => {\r\n this.isPageLoading = false;\r\n let message = this.$createElement('span', {}, ['Oops! An error has occured and some data could not be loaded', this.$createElement('br'), 'Please contact an administrator']);\r\n Toast.danger(this, [message], { autoHideDelay: 7500 });\r\n });\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./search.vue?vue&type=template&id=0e5fb620&\"\nimport script from \"./search.vue?vue&type=script&lang=js&\"\nexport * from \"./search.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const FileDownload = function (filename, blob) {\r\n const url = window.URL.createObjectURL(new Blob([blob]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.target = \"_blank\";\r\n link.rel = 'noopener' // tabnabbing\r\n link.setAttribute(\"download\", filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n}\r\n\r\nexport default FileDownload;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-advanced-search.vue?vue&type=style&index=0&id=7c18cf74&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-primary\"},[_c('div',{staticClass:\"dropdown\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\",\"title\":\"Link to Dashboard\"}},[_c('img',{staticClass:\"mr-2\",attrs:{\"src\":\"/img/navbar-logo.png\",\"alt\":\"logo\",\"height\":\"40\"}})])],1),_vm._m(0),_c('div',{staticClass:\"collapse navbar-collapse d-lg-flex justify-content-end\",attrs:{\"id\":\"navbarNavDropdown\"}},[(_vm.getCurrentUser)?_c('ul',{staticClass:\"navbar-nav mr-auto ml-3\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link text-white\",attrs:{\"to\":\"/dashboard\",\"title\":\"Link to Dashboard\"}},[_vm._v(\"Dashboard\")])],1),_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle text-white\",attrs:{\"href\":\"#\",\"role\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\"Projects\")]),_c('div',{staticClass:\"dropdown-menu\"},[_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/project/search\",\"href\":\"#\",\"title\":\"Link to Project Search\"}},[_vm._v(\"Project Search\")]),(_vm.$permissions().hasAddProjectPermission || _vm.$permissions().hasAddPrivateProjectPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/project/new\",\"href\":\"#\",\"title\":\"Link to Add Project\"}},[_vm._v(\"Add Project\")]):_vm._e()],1)]),(_vm.$permissions().hasViewCompanyPermission)?_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle text-white\",attrs:{\"href\":\"#\",\"role\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\"Companies\")]),_c('div',{staticClass:\"dropdown-menu\"},[_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/company/search\",\"href\":\"#\",\"title\":\"Link to Company Search\"}},[_vm._v(\"Company Search\")]),(_vm.$permissions().hasAddCompanyPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/company/new\",\"href\":\"#\",\"title\":\"Link to Add Company\"}},[_vm._v(\"Add Company\")]):_vm._e()],1)]):_vm._e(),(_vm.$permissions().hasConfigurePermissions)?_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle text-white\",attrs:{\"href\":\"#\",\"role\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\"Configure\")]),_c('div',{staticClass:\"dropdown-menu\"},[(_vm.$permissions().hasSendBidInvitations)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/addressbook\",\"title\":\"Link to Address Books\"}},[_vm._v(\"Address Books\")]):_vm._e(),(_vm.$permissions().hasViewAdvertisementPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/advertisements\",\"title\":\"Link to Advertisements\"}},[_vm._v(\"Advertisements\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/contact-types\",\"title\":\"Link to Contact Types\"}},[_vm._v(\"Contact Types\")]):_vm._e(),(_vm.isNewsAvailable)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/news\",\"title\":\"Link to News\"}},[_vm._v(\"News\")]):_vm._e(),(_vm.$permissions().hasViewOwnerPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/owners\",\"title\":\"Link to Owners\"}},[_vm._v(\"Owners\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/owner-types\",\"title\":\"Link to Owner Types\"}},[_vm._v(\"Owner Types\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/participant-types\",\"title\":\"Link to Participant Types\"}},[_vm._v(\"Participant Types\")]):_vm._e(),(_vm.isPaymentReportsAvailable)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/payments\",\"title\":\"Link to Payment Reports\"}},[_vm._v(\"Payment Reports\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/procurement-types\",\"title\":\"Link to Procurement Types\"}},[_vm._v(\"Procurement Types\")]):_vm._e(),(_vm.$permissions().hasViewRolePermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/roles\",\"title\":\"Link to Roles\"}},[_vm._v(\"Roles\")]):_vm._e(),(_vm.$permissions().hasViewServiceRegionPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/service-regions\",\"title\":\"Link to Service Regions\"}},[_vm._v(\"Service Regions\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/tender-stages\",\"title\":\"Link to Tender Stages\"}},[_vm._v(\"Tender Stages\")]):_vm._e(),(_vm.$permissions().isSysAdmin)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/trade-agreements\",\"title\":\"Link to Trade Agreements\"}},[_vm._v(\"Trade Agreements\")]):_vm._e(),(_vm.$permissions().hasViewUserPermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/users\",\"title\":\"Link to Users\"}},[_vm._v(\"Users\")]):_vm._e(),(_vm.$permissions().hasViewZonePermission)?_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/configuration/zones\",\"title\":\"Link to Zones\"}},[_vm._v(\"Zones\")]):_vm._e()],1)]):_vm._e(),(_vm.isBidCentralClient)?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link text-white\",attrs:{\"href\":_vm.myPlanroomLink,\"target\":\"_blank\",\"title\":\"Link to myplanroom\"}},[_vm._v(\"myPlanroom\")])]):_vm._e(),(_vm.isBidCentralClient)?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link text-white\",attrs:{\"href\":_vm.permitsLink,\"target\":\"_blank\",\"title\":\"Link to Permits\"}},[_vm._v(\"Permits\")])]):_vm._e(),(_vm.usePublicDirectoryLink)?_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link text-white\",attrs:{\"href\":_vm.publicDirectoryLink,\"target\":\"_blank\",\"title\":\"Link to Public Directory\"}},[_vm._v(\"Directory\")])]):_vm._e()]):_vm._e(),(_vm.getCurrentUser)?_c('div',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link text-white dropdown-toggle p-0\",attrs:{\"href\":\"#\",\"id\":\"navbarDropdownUser\",\"role\":\"button\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_c('app-avatar',{staticClass:\"mr-2\",attrs:{\"name\":_vm.getUserName,\"size\":40}}),_c('span',[_vm._v(_vm._s(_vm.getUserName))])],1),_c('div',{staticClass:\"dropdown-menu dropdown-menu-right\",attrs:{\"aria-labelledby\":\"navbarDropdownUser\"}},[_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/account/settings\",\"title\":\"Link to Account\"}},[_vm._v(\"Account\")]),(_vm.isMembershipPurchaseAvailable)?_c('button',{staticClass:\"dropdown-item\",attrs:{\"title\":\"Link to Account\"},on:{\"click\":_vm.toUpgradeMembership}},[_vm._v(\"Upgrade Membership\")]):_vm._e(),_c('router-link',{staticClass:\"dropdown-item\",attrs:{\"to\":\"/logout\",\"title\":\"Link to Logout\"}},[_vm._v(\"Logout\")])],1)]):_vm._e(),(!_vm.getCurrentUser)?_c('div',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link text-white\",attrs:{\"to\":\"/login\",\"href\":\"#\",\"title\":\"Click to go to Login Page\"}},[_vm._v(\"Login\")])],1):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"navbar-toggler text-white\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#navbarNavDropdown\",\"aria-controls\":\"navbarNavDropdown\",\"aria-expanded\":\"false\",\"aria-label\":\"Toggle navigation\"}},[_c('span',{staticClass:\"navbar-toggler-icon\"})])}]\n\nexport { render, staticRenderFns }","<template>\r\n <nav class=\"navbar navbar-expand-lg navbar-dark bg-primary\">\r\n <div class=\"dropdown\">\r\n <router-link to=\"/dashboard\" title=\"Link to Dashboard\">\r\n <img src=\"/img/navbar-logo.png\" class=\"mr-2\" alt=\"logo\" height=\"40\"/>\r\n </router-link>\r\n </div>\r\n\r\n <button\r\n class=\"navbar-toggler text-white\"\r\n type=\"button\"\r\n data-toggle=\"collapse\"\r\n data-target=\"#navbarNavDropdown\"\r\n aria-controls=\"navbarNavDropdown\"\r\n aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\"\r\n >\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div class=\"collapse navbar-collapse d-lg-flex justify-content-end\" id=\"navbarNavDropdown\">\r\n <ul class=\"navbar-nav mr-auto ml-3\" v-if=\"getCurrentUser\">\r\n <li class=\"nav-item\">\r\n <router-link to=\"/dashboard\" class=\"nav-link text-white\" title=\"Link to Dashboard\">Dashboard</router-link>\r\n </li>\r\n\r\n <li class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle text-white\" href=\"#\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Projects</a>\r\n <div class=\"dropdown-menu\">\r\n <router-link to=\"/project/search\" class=\"dropdown-item\" href=\"#\" title=\"Link to Project Search\">Project Search</router-link>\r\n <router-link v-if=\"$permissions().hasAddProjectPermission || $permissions().hasAddPrivateProjectPermission\" to=\"/project/new\" class=\"dropdown-item\" href=\"#\" title=\"Link to Add Project\">Add Project</router-link>\r\n </div>\r\n </li>\r\n\r\n <li class=\"nav-item dropdown\" v-if=\"$permissions().hasViewCompanyPermission\">\r\n <a class=\"nav-link dropdown-toggle text-white\" href=\"#\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Companies</a>\r\n <div class=\"dropdown-menu\">\r\n <router-link to=\"/company/search\" class=\"dropdown-item\" href=\"#\" title=\"Link to Company Search\">Company Search</router-link>\r\n <router-link v-if=\"$permissions().hasAddCompanyPermission\" to=\"/company/new\" class=\"dropdown-item\" href=\"#\" title=\"Link to Add Company\">Add Company</router-link>\r\n </div>\r\n </li>\r\n\r\n <li class=\"nav-item dropdown\" v-if=\"$permissions().hasConfigurePermissions\">\r\n <a class=\"nav-link dropdown-toggle text-white\" href=\"#\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">Configure</a>\r\n <div class=\"dropdown-menu\">\r\n <router-link v-if=\"$permissions().hasSendBidInvitations\" to=\"/configuration/addressbook\" class=\"dropdown-item\" title=\"Link to Address Books\">Address Books</router-link>\r\n <router-link v-if=\"$permissions().hasViewAdvertisementPermission\" to=\"/configuration/advertisements\" class=\"dropdown-item\" title=\"Link to Advertisements\">Advertisements</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/contact-types\" class=\"dropdown-item\" title=\"Link to Contact Types\">Contact Types</router-link>\r\n <router-link v-if=\"isNewsAvailable\" to=\"/configuration/news\" class=\"dropdown-item\" title=\"Link to News\">News</router-link>\r\n <router-link v-if=\"$permissions().hasViewOwnerPermission\" to=\"/configuration/owners\" class=\"dropdown-item\" title=\"Link to Owners\">Owners</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/owner-types\" class=\"dropdown-item\" title=\"Link to Owner Types\">Owner Types</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/participant-types\" class=\"dropdown-item\" title=\"Link to Participant Types\">Participant Types</router-link>\r\n <router-link v-if=\"isPaymentReportsAvailable\" to=\"/configuration/payments\" class=\"dropdown-item\" title=\"Link to Payment Reports\">Payment Reports</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/procurement-types\" class=\"dropdown-item\" title=\"Link to Procurement Types\">Procurement Types</router-link>\r\n <router-link v-if=\"$permissions().hasViewRolePermission\" to=\"/configuration/roles\" class=\"dropdown-item\" title=\"Link to Roles\">Roles</router-link>\r\n <router-link v-if=\"$permissions().hasViewServiceRegionPermission\" to=\"/configuration/service-regions\" class=\"dropdown-item\" title=\"Link to Service Regions\">Service Regions</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/tender-stages\" class=\"dropdown-item\" title=\"Link to Tender Stages\">Tender Stages</router-link>\r\n <router-link v-if=\"$permissions().isSysAdmin\" to=\"/configuration/trade-agreements\" class=\"dropdown-item\" title=\"Link to Trade Agreements\">Trade Agreements</router-link>\r\n <router-link v-if=\"$permissions().hasViewUserPermission\" to=\"/configuration/users\" class=\"dropdown-item\" title=\"Link to Users\">Users</router-link>\r\n <router-link v-if=\"$permissions().hasViewZonePermission\" to=\"/configuration/zones\" class=\"dropdown-item\" title=\"Link to Zones\">Zones</router-link>\r\n </div>\r\n </li>\r\n\r\n <li class=\"nav-item\" v-if=\"isBidCentralClient\">\r\n <a :href=\"myPlanroomLink\" class=\"nav-link text-white\" target=\"_blank\" title=\"Link to myplanroom\">myPlanroom</a>\r\n </li>\r\n\r\n <li class=\"nav-item\" v-if=\"isBidCentralClient\">\r\n <a :href=\"permitsLink\" class=\"nav-link text-white\" target=\"_blank\" title=\"Link to Permits\">Permits</a>\r\n </li>\r\n\r\n <li class=\"nav-item\" v-if=\"usePublicDirectoryLink\">\r\n <a :href=\"publicDirectoryLink\" class=\"nav-link text-white\" target=\"_blank\" title=\"Link to Public Directory\">Directory</a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"nav-item dropdown\" v-if=\"getCurrentUser\">\r\n <a class=\"nav-link text-white dropdown-toggle p-0\" href=\"#\" id=\"navbarDropdownUser\" role=\"button\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <app-avatar class=\"mr-2\" :name=\"getUserName\" :size=\"40\"></app-avatar>\r\n <span>{{ getUserName }}</span>\r\n </a>\r\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"navbarDropdownUser\">\r\n <router-link to=\"/account/settings\" class=\"dropdown-item\" title=\"Link to Account\">Account</router-link>\r\n <button v-if=\"isMembershipPurchaseAvailable\" @click=\"toUpgradeMembership\" class=\"dropdown-item\" title=\"Link to Account\">Upgrade Membership</button>\r\n <router-link to=\"/logout\" class=\"dropdown-item\" title=\"Link to Logout\">Logout</router-link>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" v-if=\"!getCurrentUser\">\r\n <router-link to=\"/login\" class=\"nav-link text-white\" href=\"#\" title=\"Click to go to Login Page\">Login</router-link>\r\n </div>\r\n </div>\r\n </nav>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex'\r\nimport Avatar from '@/components/app-avatar.vue';\r\nimport Toast from \"@/utils/toast\";\r\n\r\nexport default {\r\n name: 'app-navbar',\r\n components: { 'app-avatar': Avatar },\r\n data: function () {\r\n return {\r\n publicDirectoryLink: null,\r\n useMembershipPayment: false,\r\n useNews: false,\r\n usePaymentReports: false,\r\n usePublicDirectoryLink: false,\r\n myPlanroomLink: \"https://apps.bidcentral.ca/my-planroom/\",\r\n permitsLink: \"https://apps.bidcentral.ca/permits/\"\r\n }\r\n },\r\n computed: {\r\n getUserName: function () {\r\n return `${ this.getCurrentUser.firstName } ${ this.getCurrentUser.lastName }`\r\n },\r\n getCurrentRoute() { \r\n return this.$router.name\r\n },\r\n hasCompanies () {\r\n return !!this.getCurrentUser.companies.length;\r\n },\r\n hasPaidMembership () { \r\n var roles = []\r\n this.getUser.companies.forEach(company => \r\n company.memberships.forEach(\r\n membership => {\r\n roles.push(membership.role.toLowerCase())\r\n }))\r\n return roles.some(c => c !== \"public sign up membership\")\r\n },\r\n isBidCentralClient () {\r\n return process.env.VUE_APP_TENANT_NAME.toLowerCase().includes('bidcentral')\r\n },\r\n isMembershipPurchaseAvailable () {\r\n if (!this.useMembershipPayment) {\r\n return false;\r\n }\r\n return !this.$permissions().isSysAdmin && !this.$permissions().isClientAdmin && this.hasCompanies;\r\n },\r\n isNewsAvailable () {\r\n if (!this.useNews) {\r\n return false;\r\n }\r\n return this.$permissions().isSysAdmin || this.$permissions().isClientAdmin;\r\n },\r\n isPaymentReportsAvailable () {\r\n if (!this.usePaymentReports) {\r\n return false;\r\n }\r\n return this.$permissions().hasViewPaymentPermission;\r\n },\r\n ...mapGetters([\"getUser\",\"getCurrentUser\", \"getUseDisplayNews\", \"getPublicDirectoryLink\", \"getUseMembershipPayment\", \"getUsePaymentReports\"])\r\n },\r\n methods: {\r\n ...mapActions([\"fetchClientSettings\", \"fetchUser\"]),\r\n\r\n toUpgradeMembership(){\r\n if(this.$router.history.current.path !== \"/membership/upgrade\"){\r\n if(this.isMembershipPurchaseAvailable && this.hasPaidMembership){\r\n this.$router.push('/membership/upgrade')\r\n }else{\r\n var message = this.$createElement(\"span\", {},\r\n [\" If you currently have a free public membership please contact your local association to upgrade your membership. See list of associations \", \r\n this.$createElement('a',{attrs: {href: 'https://www.link2build.ca/about/become-a-member/', target: '_blank'}}, ['here'])]\r\n );\r\n \r\n Toast.danger(this, [message], { autoHideDelay: 15000 }); \r\n }\r\n } \r\n }\r\n },\r\n created () {\r\n this.fetchClientSettings().then(() => {\r\n this.usePublicDirectoryLink = !!this.getPublicDirectoryLink;\r\n this.publicDirectoryLink = this.getPublicDirectoryLink;\r\n this.useMembershipPayment = (this.getUseMembershipPayment || '').toUpperCase() === 'TRUE';\r\n this.useNews = (this.getUseDisplayNews || '').toUpperCase() === 'TRUE';\r\n this.usePaymentReports = (this.getUsePaymentReports || '').toUpperCase() === 'TRUE';\r\n this.fetchUser(this.getCurrentUser.id)\r\n });\r\n }\r\n}\r\n</script>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-navbar.vue?vue&type=template&id=3d1be955&\"\nimport script from \"./app-navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./app-navbar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAvailable)?_c('button',{attrs:{\"type\":\"button\",\"title\":_vm.buttonTitleAttr},on:{\"click\":function($event){return _vm.setSubscriptionToProject(_vm.projectId)}}},[(_vm.value)?_vm._t(\"is-following\"):_vm._e(),(!_vm.value)?_vm._t(\"is-not-following\"):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <button v-if=\"isAvailable\" type=\"button\" @click=\"setSubscriptionToProject(projectId)\" :title=\"buttonTitleAttr\">\r\n <slot name=\"is-following\" v-if=\"value\"></slot>\r\n <slot name=\"is-not-following\" v-if=\"!value\"></slot>\r\n </button>\r\n</template>\r\n\r\n<script>\r\nimport { ProjectService } from \"@/services/\";\r\nimport Toast from \"@/utils/toast\";\r\nimport MessageBox from \"@/utils/messagebox\";\r\n\r\nexport default {\r\n name: \"project-search-results-follow-button\",\r\n props: {\r\n value: { type: Boolean, default: () => false },\r\n projectId: { type: String, required: true },\r\n projectTitle: { type: String },\r\n },\r\n computed: {\r\n buttonTitleAttr() {\r\n if (!this.projectTitle) return null;\r\n return (this.value ? \"Following \" : \"Follow \") + this.projectTitle;\r\n },\r\n isAvailable () {\r\n return this.$permissions().isClientAdmin === false && this.$permissions().isSysAdmin === false;\r\n }\r\n },\r\n methods: {\r\n async setSubscriptionToProject(projectId) {\r\n try {\r\n if (this.value === false) {\r\n await ProjectService.subscribe(projectId);\r\n this.$emit('input', true);\r\n Toast.success(this, `You are now following ${ this.projectTitle }`);\r\n }\r\n else if (this.value === true) {\r\n let confirm = await MessageBox.confirm(this, \"Unsubscribe from project\", `Are you sure you want to unsubscribe from ${ this.projectTitle }?`);\r\n\r\n if (confirm) {\r\n await ProjectService.unsubscribe(projectId);\r\n this.$emit('input', false);\r\n Toast.success(this, \"Successfully unsubscribed from project!\");\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n Toast.danger(this, \"Oops! An error has occured\");\r\n }\r\n }\r\n },\r\n mounted() {\r\n this.isFollowing = this.value;\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-follow-button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./project-follow-button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./project-follow-button.vue?vue&type=template&id=735cf374&\"\nimport script from \"./project-follow-button.vue?vue&type=script&lang=js&\"\nexport * from \"./project-follow-button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar Promise = require('es6-promise').Promise;\nvar urlBuilder = require('../lib/url-builder.js');\n\nvar googleApi;\n\nfunction loadAutoCompleteAPI(params) {\n var script = document.createElement('script');\n\n script.type = 'text/javascript';\n\n script.src = urlBuilder({\n base: 'https://maps.googleapis.com/maps/api/js',\n libraries: params.libraries || [],\n callback: 'googleMapsAutoCompleteAPILoad',\n apiKey: params.apiKey,\n client: params.client,\n language: params.language,\n version: params.version\n });\n\n document.querySelector('head').appendChild(script);\n}\n\n/**\n * googleMapsApiLoader\n *\n * @param {object} params\n * @param {object} params.libraries\n *\n * @return {promise}\n */\nfunction googleMapsApiLoader(params) {\n if (googleApi) {\n return Promise.resolve(googleApi);\n }\n\n return new Promise(function(resolve, reject) {\n loadAutoCompleteAPI(params);\n\n window.googleMapsAutoCompleteAPILoad = function() {\n googleApi = window.google;\n resolve(googleApi);\n };\n\n setTimeout(function() {\n if (!window.google) {\n reject(new Error('Loading took too long'));\n }\n }, 5000);\n });\n}\n\nmodule.exports = googleMapsApiLoader;\n\n","const defaultOptions = {\r\n noCloseButton: true,\r\n autoHideDelay: 3000,\r\n toaster: \"b-toaster-top-right\",\r\n isStatus: true\r\n};\r\n\r\nconst success = function (context, message, overrideOptions) {\r\n let options = { variant: 'success', ...defaultOptions, ...overrideOptions };\r\n context.$root.$bvToast.toast(message, options);\r\n}\r\n\r\nconst danger = function (context, message, overrideOptions) {\r\n let options = { variant: 'danger', ...defaultOptions, ...overrideOptions };\r\n context.$root.$bvToast.toast(message, options);\r\n}\r\n\r\nexport default { success, danger }\r\n","module.exports = require('./src/google-maps-api-loader.js');\n"],"sourceRoot":""}