<form id="search-form" class="search-form" data-custom-modal-search-value="" data-page="" data-module="" data-search-id="" data-gui-title="" data-gui-id="" data-gui-columns='[]' data-options='{ }' data-show-status="true" data-create-parent="true" data-actions='[ ]'>
<div class="search-panel card">
<ul class="filter-options" style="display: none">
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="guiSearch" data-title="GUI" data-type="simple" data-advanced="" data-advanced-crit="" data-return="" data-dropdown='[]' data-range='[]' data-return="" data-return-display=""
data-custom-modal-search-value="" data-columns='[]' data-options='[]' data-actions='[]'>GUI</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="chrShortTitle" data-title="Title" data-type="simple" data-advanced="" data-advanced-crit="" data-return="" data-dropdown='[]' data-range='[]' data-return="" data-return-display=""
data-custom-modal-search-value="" data-columns='[]' data-options='[]' data-actions='[]'>Title</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="chrFirstNamedInvestigator" data-title="Internal Investigator" data-type="advanced" data-advanced="people" data-advanced-crit="Surname" data-return="chrStaffNumber" data-dropdown='[]'
data-range='[]' data-return="chrStaffNumber" data-return-display="" data-custom-modal-search-value="test" data-columns='[ { "name": "chrSurname", "title": "Surname" }, { "name": "chrFirstName", "title": "First Name" }, { "name": "chrTier3Name", "title": "Department" }, { "name": "chrEmail", "title": "Email" }]'
data-options='[ { "name": "IncludeLinked", "title": "Include Linked", "type": "checkbox" }, { "name": "FirstNamed", "title": "First Named", "type": "checkbox" }, { "name": "SearchValue2", "title": "Initials", "type": "text" }, { "name": "SearchValue3", "title": "Operator", "type": "dropdown", "list": [ { "value": "contains", "title": "contains" } , { "value": "begins", "title": "begins with" } , { "value": "sounds", "title": "sounds like" } ] }]'
data-actions='[ { "name": "details", "icon": "details" }]'>Internal Investigator</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="externalInvestigator" data-title="External Investigator" data-type="advanced" data-advanced="externals" data-advanced-crit="Surname" data-return="chrCode" data-dropdown='[]'
data-range='[]' data-return="chrCode" data-return-display="" data-custom-modal-search-value="test" data-columns='[ { "name": "chrSurname", "title": "Surname" }, { "name": "chrFirstName", "title": "First Name" }, { "name": "chrTier3Name", "title": "Institution" }, { "name": "chrEmail", "title": "Email" }]'
data-options='[ { "name": "IncludeLinked", "title": "Include Linked", "type": "checkbox" }, { "name": "SearchValue2", "title": "Initials", "type": "text" }, { "name": "SearchValue3", "title": "Operator", "type": "dropdown", "list": [ { "value": "contains", "title": "contains" } , { "value": "begins", "title": "begins with" } , { "value": "sounds", "title": "sounds like" } ] }]'
data-actions='[ { "name": "details", "icon": "details" }]'>External Investigator</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="guiDepartments" data-title="Department" data-type="advanced" data-advanced="departments" data-advanced-crit="Department name" data-return="chrTier3Code" data-dropdown='[]'
data-range='[]' data-return="chrTier3Code" data-return-display="$chrTier3Name" data-custom-modal-search-value="department" data-columns='[ { "name": "chrTier3Name", "title": "Department" }]' data-options='[]' data-actions='[ { "name": "details", "icon": "details" }]'>Department</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="startDate" data-title="Starting Year" data-type="range" data-advanced="" data-advanced-crit="" data-return="" data-dropdown='[]' data-range='["chrGrantStartDate","chrCompletionDate"]'
data-return="" data-return-display="" data-custom-modal-search-value="" data-columns='[]' data-options='[]' data-actions='[]'>Starting Year</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="chrApprovalDate" data-title="Approval Date" data-type="date" data-advanced="" data-advanced-crit="" data-return="" data-dropdown='[]' data-range='[]' data-return="" data-return-display=""
data-custom-modal-search-value="" data-columns='[]' data-options='[]' data-actions='[]'>Approval Date</li>
<li class="dropdown-item filter-item" role="menuitem" data-active="true" data-name="chrStatus" data-title="Status" data-type="dropdown" data-advanced="" data-advanced-crit="" data-return="" data-dropdown='["active","awarded","closed","completed","draft","grants completed","new","pending","test","wind-down"]'
data-range='[]' data-return="" data-return-display="" data-custom-modal-search-value="" data-columns='[]' data-options='[]' data-actions='[]'>Status</li>
</ul>
<div class="card-section">
<div class="card-inner">
<h3 class="card-heading card-title">
<div class="text">Searching </div>
<div class="save-search">
<button type="button" class="btn btn-link js-btn-load-search js-btn-modal" data-modal="load-search">
<span class="fa fa-folder-open-o"></span>
<span class="link link-strong">My Searches</span>
</button>
<button type="button" class="btn btn-link js-btn-save-search js-btn-modal" data-modal="save-search">
<span class="fa fa-floppy-o"></span>
<span class="link link-strong">Save Search</span>
</button>
</div>
</h3>
<div class="search-subheading">
<h4 class="card-subheading" data-col="12">
<span data-span="10">Search Fields</span>
<span class="subheading-right" data-span="2">Add / Remove</span>
</h4>
<p class="card-note">Use the 'Lookup' function to complete relevant fields</p>
</div>
<div class="form-container">
<div class="create-filters">
</div>
</div>
<button class="btn btn-default btn-submit"><span>Show</span> Records</button>
</div>
</div>
</div>
</form>
<div class="modal modal-advanced-search js-modal js-modal-exit -nav-padded -with-overlay" data-modal="advanced-search">
<div class="modal-inner inner">
<div class="modal-panel advanced-search-container">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">Advanced Lookup</span>
</h3>
</div>
<div class="modal-section advanced-search-form modal-advanced-form">
<div data-col="6">
<div class="form-field advanced-search-field" data-flex="4" data-col="4" data-required="true" data-min-length="2">
<label class="advanced-search-label" data-flex="1" for="SearchValue"></label>
<input data-flex="3" name="SearchValue" class="advanced-search-input"></input>
</div>
<div class="criteria-text form-field advanced-search-field" data-col="6" data-flex="2">
<div data-flex="2"></div>
<label class="advanced-search-label" data-flex="2" for="SearchValue"></label>
<input data-flex="2" name="SearchValue" class="advanced-search-input"></input>
</div>
</div>
<div class="advanced-search-criteria" data-col="6">
<div class="criteria-dropdown form-field advanced-search-field" data-col="6" data-flex="6"></div>
<div class="criteria-checkbox form-field advanced-search-field" data-col="3" data-flex="3"></div>
<div class="btn-container" data-flex="3">
<a class="btn btn-create-record js-parent-create-record">
<span class="fa fa-plus-circle"></span>
<span class="link link-strong">Create a new record</span>
</a>
<button type="button" class="btn btn-default btn-update-advanced js-btn-update-advanced">
<div class="text">Show Records</div>
</button>
</div>
</div>
</div>
<div class="modal-section modal-results advanced-search-results">
</div>
</div>
</div>
</div>
<div class="modal -with-overlay -nav-padded js-modal js-modal-exit" data-modal="save-search">
<div class="modal-inner inner">
<div class="modal-panel">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">Save search</span>
</h3>
</div>
<div class="modal-section modal-form">
<div class="form-field save-field" data-col="6" data-required="true" data-min-length="5">
<label for="save-search-title" data-flex="1">Save As</label>
<input name="save-search-title" placeholder="…">
<button type="button" class="btn svg-wrap btn-save-as js-save-as" aria-label="Save as existing search">
<svg viewBox="0 0 25 25">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-arrow-down"></use>
</svg>
</button>
</div>
</div>
<div class="modal-section modal-results">
</div>
<div class="modal-section modal-buttons">
<button class="btn btn-default js-save-search js-modal-submit" type="button">
<span class="text">Save this search</span>
</button>
<button class="btn btn-default js-modal-exit" type="button">
<span class="text">Cancel</span>
</button>
</div>
</div>
</div>
</div>
<div class="modal modal-load-search -with-overlay -nav-padded js-modal js-modal-exit" data-modal="load-search">
<div class="modal-inner inner">
<div class="modal-panel">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">My saved searches</span>
</h3>
</div>
<div class="modal-section modal-results">
</div>
<div class="modal-section modal-buttons">
<button class="btn btn-default js-load-search js-modal-exit js-modal-submit" type="button">
<span class="text">Load search</span>
</button>
<button class="btn btn-default js-modal-exit" type="button">
<span class="text">Cancel</span>
</button>
</div>
</div>
</div>
</div>
<div class="modal modal-gui-new -with-overlay -nav-padded js-modal js-modal-exit" data-modal="gui-new">
<div class="modal-inner inner">
<div class="modal-panel">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">Create new custom GUI</span>
</h3>
</div>
<div class="modal-section modal-form">
<div class="form-field save-field" data-col="6" data-required="true" data-min-length="5">
<label for="new-gui-title" data-flex="1">GUI name</label>
<input name="new-gui-title" placeholder="…">
</div>
</div>
<div class="modal-section modal-results">
</div>
<div class="modal-section modal-buttons">
<button class="btn btn-default js-gui-new js-modal-submit" type="button">
<span class="text">Create GUI</span>
</button>
<button class="btn btn-default js-modal-exit" type="button">
<span class="text">Cancel</span>
</button>
</div>
</div>
</div>
</div>
<div class="modal modal-gui-select -with-overlay -nav-padded js-modal js-modal-exit" data-modal="gui-select">
<div class="modal-inner inner">
<div class="modal-panel">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">My custom GUI</span>
</h3>
</div>
<div class="modal-section modal-results">
</div>
<div class="modal-section modal-buttons">
<button class="btn btn-default js-load-gui js-modal-exit js-modal-submit" type="button">
<span class="text">Load GUI</span>
</button>
<button class="btn btn-default js-modal-exit" type="button">
<span class="text">Cancel</span>
</button>
</div>
</div>
</div>
</div>
<div class="modal modal-gui-update -with-overlay -nav-padded js-modal js-modal-exit" data-modal="gui-update">
<div class="modal-inner inner">
<div class="modal-panel">
<div class="modal-header">
<button type="button" class="btn btn-default btn-modal-exit js-modal-exit svg-wrap" aria-label="Exit Modal">
<span class="fa fa-times"></span>
</button>
<h3 class="modal-title">
<span class="text">Update current GUI</span>
</h3>
</div>
<div class="modal-section modal-form">
<div class="form-field save-field" data-col="6" data-required="true" data-min-length="5">
<label for="new-gui-title" data-flex="1">GUI name</label>
<input name="new-gui-title" placeholder="…" disabled>
</div>
</div>
<div class="modal-section modal-results">
</div>
<div class="modal-section modal-buttons">
<button class="btn btn-default js-gui-new js-modal-submit" type="button">
<span class="text">Update GUI</span>
</button>
<button class="btn btn-default js-modal-exit" type="button">
<span class="text">Cancel</span>
</button>
</div>
</div>
</div>
</div>
<form id="search-form" class="search-form"
data-custom-modal-search-value="{{ searchOptions.customModalSearchValue }}"
data-page="{{ pageClass }}{{ pageTitle }}"
data-module="{{ searchOptions.module }}"
data-search-id="{{ searchOptions.searchID }}"
data-gui-title="{{ searchOptions.guiTitle }}"
data-gui-id="{{ searchOptions.guiID }}"
data-gui-columns='[{{#each searchOptions.guiColumns }} { "name": "{{ this.name }}", "title": "{{ this.title }}", "width": "{{ this.width }}"{{#if this.em }}, "em": {{ this.em }}{{/if}} }{{#if @last }}{{else}},{{/if}}{{/each}}]'
data-options='{ {{#each searchOptions.options }}"{{ @key }}": "{{ this }}"{{#if @last }}{{else}}, {{/if}}{{/each}} }'
data-show-status="true"
data-create-parent="true"
data-actions='[ {{#each searchOptions.actions }}{ "name": "{{ this.name }}", "icon": "{{ this.icon }}", "label": "{{ this.label }}"{{#if this.data }}, "data": { {{#each this.data as |value key| }}"{{ key }}": "{{ value }}"{{#if @last }}{{else}}, {{/if}}{{/each}} } {{/if}} } {{#if @last }}{{else}}, {{/if}}{{/each}} ]' >
<div class="search-panel card">
<ul class="filter-options" style="display: none">
{{> '@search-filter-list' }}
</ul>
<div class="card-section">
<div class="card-inner">
<h3 class="card-heading card-title">
<div class="text">Searching {{ pageTitle }}</div>
<div class="save-search">
<button type="button" class="btn btn-link js-btn-load-search js-btn-modal" data-modal="load-search">
<span class="fa fa-folder-open-o"></span>
<span class="link link-strong">My Searches</span>
</button>
<button type="button" class="btn btn-link js-btn-save-search js-btn-modal" data-modal="save-search">
<span class="fa fa-floppy-o"></span>
<span class="link link-strong">Save Search</span>
</button>
</div>
</h3>
<div class="search-subheading">
<h4 class="card-subheading" data-col="12">
<span data-span="10">Search Fields</span>
<span class="subheading-right" data-span="2">Add / Remove</span>
</h4>
<p class="card-note">Use the 'Lookup' function to complete relevant fields</p>
</div>
<div class="form-container">
<div class="create-filters">
</div>
</div>
<button class="btn btn-default btn-submit"><span>Show</span> Records</button>
</div>
</div>
</div>
</form>
{{> '@modal--search' }}
{{> '@modal--save-search' }}
{{> '@modal--load-search' }}
{{> '@modal--new-gui' }}
{{> '@modal--load-gui' }}
{{> '@modal--update-gui' }}
{
"filterOptions": [
{
"name": "guiSearch",
"title": "GUI",
"type": "simple",
"active": true
},
{
"name": "chrShortTitle",
"title": "Title",
"type": "simple",
"active": true
},
{
"name": "chrFirstNamedInvestigator",
"title": "Internal Investigator",
"type": "advanced",
"active": true,
"advanced": "people",
"advancedCrit": "Surname",
"return": "chrStaffNumber",
"customModalSearchValue": "test",
"columns": [
{
"title": "Surname",
"name": "chrSurname"
},
{
"title": "First Name",
"name": "chrFirstName"
},
{
"title": "Department",
"name": "chrTier3Name"
},
{
"title": "Email",
"name": "chrEmail"
}
],
"options": [
{
"name": "IncludeLinked",
"title": "Include Linked",
"type": "checkbox"
},
{
"name": "FirstNamed",
"title": "First Named",
"type": "checkbox"
},
{
"name": "SearchValue2",
"title": "Initials",
"type": "text"
},
{
"name": "SearchValue3",
"title": "Operator",
"type": "dropdown",
"list": [
{
"value": "contains",
"title": "contains"
},
{
"value": "begins",
"title": "begins with"
},
{
"value": "sounds",
"title": "sounds like"
}
]
}
],
"actions": [
{
"name": "details",
"icon": "details"
}
]
},
{
"name": "externalInvestigator",
"title": "External Investigator",
"advanced": "externals",
"advancedCrit": "Surname",
"type": "advanced",
"active": true,
"return": "chrCode",
"customModalSearchValue": "test",
"columns": [
{
"title": "Surname",
"name": "chrSurname"
},
{
"title": "First Name",
"name": "chrFirstName"
},
{
"title": "Institution",
"name": "chrTier3Name"
},
{
"title": "Email",
"name": "chrEmail"
}
],
"options": [
{
"name": "IncludeLinked",
"title": "Include Linked",
"type": "checkbox"
},
{
"name": "SearchValue2",
"title": "Initials",
"type": "text"
},
{
"name": "SearchValue3",
"title": "Operator",
"type": "dropdown",
"list": [
{
"value": "contains",
"title": "contains"
},
{
"value": "begins",
"title": "begins with"
},
{
"value": "sounds",
"title": "sounds like"
}
]
}
],
"actions": [
{
"name": "details",
"icon": "details"
}
]
},
{
"name": "guiDepartments",
"title": "Department",
"advanced": "departments",
"advancedCrit": "Department name",
"type": "advanced",
"active": true,
"return": "chrTier3Code",
"returnDisplay": "$chrTier3Name",
"customModalSearchValue": "department",
"columns": [
{
"title": "Department",
"name": "chrTier3Name"
}
],
"actions": [
{
"name": "details",
"icon": "details"
}
]
},
{
"name": "startDate",
"title": "Starting Year",
"type": "range",
"range": [
"chrGrantStartDate",
"chrCompletionDate"
],
"active": true
},
{
"name": "chrApprovalDate",
"title": "Approval Date",
"type": "date",
"active": true
},
{
"name": "chrStatus",
"title": "Status",
"dropdown": [
"active",
"awarded",
"closed",
"completed",
"draft",
"grants completed",
"new",
"pending",
"test",
"wind-down"
],
"type": "dropdown",
"active": true
}
]
}
.search-form {
transition-duration: $transition;
.card {
background: $color-irma-white;
}
.save-search {
position: absolute;
right: 0;
top: 0;
color: $color-irma-link;
@include font-size;
.btn {
display: inline-block;
&:not(:first-child) {
margin-left: 10rem;
}
}
}
.search-subheading {
position: relative;
margin-top: 6rem;
.subheading-right {
text-align: right;
}
}
.form-container {
margin-top: 5rem;
}
.create-filters {
position: relative;
transition: {
property: opacity, visibility;
duration: $transition;
}
&.-loading {
height: 20rem;
overflow: hidden;
&::before {
content: '';
position: absolute;
top: 5rem;
left: 50%;
transform: translate(-50%, 0);
display: block;
width: 10rem;
height: 10rem;
background: {
image: url('../img/spinner.png');
size: 100%;
repeat: no-repeat;
position: center;
}
animation: spin 1s linear infinite;
}
.search-box {
visibility: hidden;
opacity: 0;
}
}
&.-max-filters {
.btn-filter-ctrl {
&:first-child {
opacity: (1 / 6);
pointer-events: none;
}
}
}
&.-locked-filters {
.search-box {
.filter-select {
pointer-events: none;
.dropdown-label {
&::after {
display: none;
}
}
}
}
}
}
.btn-submit {
margin-top: 5rem;
}
}
.search-panel {
.search-box {
&[data-search-type='simple'] {
.search-box-input {
display: block;
}
}
&[data-search-type='advanced'] {
.search-box-input, .search-tags, .search-advanced {
display: block;
}
}
&[data-search-type='dropdown'] {
.search-select {
display: inline-block;
}
}
&[data-search-type='range'] {
.search-range {
display: flex;
}
}
&[data-search-type='date'] {
.search-date {
display: block;
}
}
.search-box-input, .search-select, .search-date, .search-range, .search-tags, .search-advanced {
display: none;
}
.search-advanced {
top: 50%;
right: 9em;
transform: translateY(-50%);
}
.search-box-filter {
padding: {
left: 2rem;
right: 7.5em;
}
}
.search-tags {
left: calc(25% + 5rem);
}
}
}
.search-box {
position: relative;
transition: {
property: opacity, visibility;
duration: $transition;
}
&:not(:first-child) {
margin-top: 5rem;
}
&:first-child {
.filter-controls {
.btn-filter-ctrl {
&:last-child {
visibility: hidden;
}
}
}
}
&.-hidden {
visibility: hidden;
opacity: 0;
}
&.-tagged {
.dropdown {
pointer-events: none;
.dropdown-label {
&::after {
display: none;
}
}
}
.search-box-input {
pointer-events: none;
&::placeholder {
opacity: 0;
}
}
// .search-tags {
// margin-top: 10px;
// }
}
.filter-select {
.dropdown-label {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@include font-primary-bold;
}
}
.dropdown {
&.search-select {
.dropdown-label {
background: white;
}
}
}
.search-select {
display: none;
.dropdown {
text-transform: capitalize;
}
}
.search-range {
display: none;
.range-to {
display: inline-block;
width: 20rem;
height: 10rem;
vertical-align: top;
text-align: center;
// background: $color-irma-stone;
// color: white;
line-height: 10rem;
}
.date-field {
flex: 1 1 auto;
max-width: calc((100% - 20rem) / 2);
input {
width: 100%;
}
}
}
.search-date {
input {
width: 100%;
}
}
.search-advanced {
position: absolute;
@include font-primary-bold;
color: $color-irma-link;
.fa {
margin-right: 1rem;
}
}
.filter-controls {
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
display: inline-block;
width: 6.5em;
text-align: right;
.btn-filter-ctrl {
display: inline-block;
vertical-align: middle;
line-height: 2.1em;
}
}
}
.search-tags {
position: absolute;
top: 50%;
transform: translateY(-50%);
.tag-item {
position: relative;
display: inline-block;
width: 100%;
height: 6rem;
padding: 0 6rem 0 3rem;
background: $color-irma-secondary;
border-radius: 2px;
color: $color-irma-navy;
line-height: 6rem;
transition: background $transition;
// margin-left: 8px;
.remove-tag {
position: absolute;
right: 1.5rem;
top: 50%;
transform: translateY(-50%);
opacity: 0.7;
transition: all $transition;
&:hover, &:focus {
opacity: 1;
}
}
}
}
/*
* _search-panel.js
*/
irma.searchPanel = (function () {
'use strict';
var lookupURL = irma.baseURL + "getSearchResults.asp?" + irma.urlParams,
searchURL = '',
saveSearchURL = '',
loadSearchURL = '',
getDesignerFieldsURL = '',
saveCustomURL = '',
getCustomURL = '',
currentData = {},
advancedPageLength = 25,
tableHeadings = [
],
testData = [
],
savedSearch,
currentSearch;
// •••••••••••••
var getCurrentSearch = function () {
return currentSearch;
};
var getRecords = function (name) {
return irma.records[name];
};
var setRecords = function (name, rec) {
irma.records[name] = rec;
};
var exportResults = function (format) {
var results;
if (format == 'csv') {
results = [[]];
_.forEach(irma.records.main.columns, function (column, i) {
results[0][i] = column.title;
});
_.forEach(_.flatten(irma.records.main.pages), function (row, i) {
results[i + 1] = [];
_.forEach(row.columns, function (column, j) {
results[i + 1][j] = column.value;
});
});
irma.files.exportCSV("irma_search-results_" + moment().format() + ".csv", results);
}
else if (format == 'xml') {
results = [];
_.forEach(_.flatten(irma.records.main.pages), function (row, i) {
results[i] = {};
_.forEach(row.columns, function (column, j) {
results[i][irma.records.main.columns[j].title.toLowerCase().replace(/ /g, '_')] = column.value;
});
});
$.get(irma.assetPath + '/templates/search-results/search-results--xml.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var xml = templateScript({
results: results
});
var blob = new Blob([xml], { type: 'text/xml;charset=utf-8;' });
irma.files.exportFile("irma_search-results_" + moment().format() + ".xml", blob);
});
}
};
// ******* CUSTOM GUI ******* //
var newGUI = function ($scope, gui) {
var url = getDesignerFieldsURL;
if (gui) {
$scope.find('.save-field input').val(gui.title);
}
$scope.addClass('-loading')
.find('.modal-results').empty();
$.ajax({
url: url
}).done(function (results) {
showGUIFields(results.data, $scope, gui);
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
var showGUIFields = function (data, $scope, gui) {
var results = [];
_.forEach(data, function (field, i) {
var currentField = [];
if (gui !== undefined) {
currentField = _.filter(gui.columns, { name: field.chrField, id: field.intGUIfieldCode });
}
results[i] = {
columns: [
{
name: "field",
value: field.chrGUIFieldName
},
{
name: field.chrField,
value: currentField.length ? currentField[0].title : field.chrGUIFieldName
}
],
checkbox: {
id: "gui_" + i,
checked: currentField.length > 0
},
data: {
name: field.chrField,
id: field.intGUIfieldCode
}
};
});
var title = "Choose from " + results.length + " field";
title = results.length > 1 ? title + "s" : title;
var context = {
checkbox: true,
columns: [
{
title: "field",
width: 50
},
{
title: "display name",
width: 50,
input: true
}
],
tableData: results,
totalResults: results.length,
title: title,
rowClass: "-with-input",
actions: [
],
data: {
}
};
$.get(irma.assetPath + '/templates/table/table.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var html = templateScript(context);
$scope.find('.modal-results').html(html);
$scope.removeClass('-loading');
});
};
var saveGUI = function (title, data) {
var state = JSON.stringify(data);
var url = saveCustomURL + "&searchTitle=" + title + "&searchState=" + state;
$.ajax({
url: url
}).done(function (results) {
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
var loadGUIList = function () {
var url = getCustomURL,
$scope = $('.modal-gui-select');
$scope.addClass('-loading')
.find('.modal-results').empty();
$.ajax({
url: url
}).done(function (results) {
showGUIList(results.data, $scope);
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
var showGUIList = function (data, $scope) {
var results = [];
if (data[0].chrTitle) {
_.forEach(data, function (search, i) {
results[i] = {
columns: [
{
name: "name",
value: _.capitalize(search.chrTitle)
},
{
name: "date",
value: moment(search.chrLastUpdated).format("D MMM YYYY")
}
],
data: {
gui: search.chrState.replace(/"/g, '\"'),
title: search.chrTitle,
id: search.IDcolumn
}
};
});
}
var title = "Saved GUI";
title = results.length > 1 ? title + "s" : title;
var context = {
totalColumns: 5,
columns: [
{
title: "name"
},
{
title: "date"
}
],
rowClass: "js-select-my-gui table-link",
currentPage: results,
totalResults: results.length,
title: title,
actionsTitle: "Delete",
actions: [
{
name: "gui-delete",
icon: "delete"
}
],
data: {
}
};
$.get(irma.assetPath + '/templates/search-results/search-results--lookup.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var html = templateScript(context);
$scope.find('.modal-results').html(html);
$scope.removeClass('-loading');
});
};
var loadGUI = function (customGUI) {
irma.settings.save('customGUI', customGUI);
if ($('.search-results-container .search-results').length) {
$('#search-form .btn-submit').trigger('click');
}
};
var deleteGUI = function (title, id) {
var url = saveCustomURL + "&searchTitle=" + encodeURI(title) + "&searchID=" + id + "&searchType=delete";
$.ajax({
url: url
}).done(function (results) {
loadGUIList();
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
// ******* SAVED SEARCH ******* //
var saveSearch = function (title, $form, localOnly) {
var data = [],
$fields = $form.find('.search-box');
if ($fields.find('.filter-select').length) {
_.forEach($fields, function (field, i) {
var $field = $(field),
$filter = $field.find('.filter-select'),
$input;
var d = {
name: $filter.data().name,
type: $filter.data().type
};
if (d.type == 'dropdown') {
$input = $field.find('.search-select input');
d.value = $input.val();
}
else if (d.type == 'advanced') {
$input = $field.find('.search-tags input').eq(0);
d.display = $input.next('.text').text();
d.value = $input.val();
}
else if (d.type == 'range') {
$input = $field.find('.search-range .date-input-submit');
d.value = [];
for (var j = 0; j <= 1; j++) {
d.value[j] = {
value: $input.eq(j).val(),
name: $input.eq(j).attr('name')
};
}
}
else if (d.type == 'date') {
$input = $field.find('.search-date .date-input-submit');
d.value = $input.val();
}
else {
$input = $field.find('.search-box-input');
d.value = $input.val();
}
data[i] = d;
});
}
else {
var $input = $fields.find('input[name]');
data[0] = {
name: $input.attr('name'),
value: $input.val(),
display: $input.siblings('.text').text()
};
}
var json = JSON.stringify(data);
savedSearch = json;
if (localOnly === undefined || !localOnly) {
submitSavedSearch(title, savedSearch);
}
else {
var page = "";
irma.form.setRecentSearch({ criteria: savedSearch });
}
};
var submitSavedSearch = function (title, savedSearch) {
var url = saveSearchURL + "&searchTitle=" + title + "&searchState=" + savedSearch;
$.ajax({
url: url
}).done(function (results) {
irma.modal.closeModal();
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
var toggleSaveAs = function ($modal, collapse) {
if ($modal.is('.-expanded') || collapse) {
$modal.removeClass('-loading -expanded');
}
else {
$modal.addClass('-loading');
$modal.addClass('-expanded');
loadSavedSearches($modal);
}
};
var loadSearch = function (data) {
var $createFilters = $('.create-filters');
if (data.length && $createFilters.length) {
$createFilters.empty().addClass('-loading');
newFilter(data[0], null, 0, data);
}
else {
irma.form.addTag(data[0].name, data[0].display, data[0].value);
}
};
var loadSavedSearches = function ($scope) {
var url = loadSearchURL + '&searchTitle=';
$.ajax({
url: url
}).done(function (results) {
showSavedSearches(results.data, $scope);
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
});
};
var showSavedSearches = function (data, $scope) {
var results = [];
if (data[0].chrTitle) {
_.forEach(data, function (search, i) {
results[i] = {
columns: [
{
name: "name",
value: _.capitalize(search.chrTitle)
},
{
name: "date",
value: moment(search.chrLastUpdated).format("D MMM YYYY")
}
],
data: {
filters: search.chrState.replace(/"/g, '\"').replace(/[\t\r\n]/g, ''),
title: search.chrTitle,
id: search.IDcolumn
}
};
});
}
var title = "Saved search";
title = results.length > 1 ? title + "es" : title;
var context = {
totalColumns: 5,
columns: [
{
title: "name"
},
{
title: "date"
}
],
rowClass: "js-select-my-search table-link",
currentPage: results,
totalResults: results.length,
title: title,
actionsTitle: "Delete",
actions: [
{
name: "search-delete",
icon: "delete"
}
],
data: {
}
};
$.get(irma.assetPath + '/templates/search-results/search-results--lookup.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var html = templateScript(context);
$scope.find('.modal-results').html(html);
$scope.removeClass('-loading');
});
};
// ******* SORT TABLE ******* //
var sortBy = function ($column) {
var name = $column.attr('data-name');
currentSearch.data.options.sortBy = name;
currentSearch.data.options.sortDirection = $column.is('.-asc') ? "desc" : "asc";
irma.records.main.index = 0;
submitSearch(currentSearch.$inputs, currentSearch.data);
};
// ******* MAIN SEARCH RESULTS ******* //
var toggleSearch = function (hidePanel) {
var $panel = $('.search-form');
if (hidePanel) {
$('body').addClass('-search-results');
$('body, html').scrollTop(0);
$panel.height($panel.find('.search-panel').height());
$panel.height(0);
}
else {
$('body').removeClass('-search-results');
$panel.height($panel.find('.search-panel').height());
setTimeout(function () {
$panel.removeAttr('style');
}, 5);
}
if ($('.secondary-nav').length) {
irma.secondaryNav.update();
}
};
var submitSearch = function ($inputs, data) {
var query = "";
var direction = data.options.sortDirection ? data.options.sortDirection : "asc";
$inputs.each(function (i) {
var index = i + 1;
query += "&SearchName" + index + "=" + $(this).attr('name') + "&SearchValue" + index + "=" + $(this).val();
});
query += "&SearchSortBy=" + data.options.sortBy + "&SearchSortByOrder=" + direction.toUpperCase() + "&SearchPageLength=" + data.options.pageLength + "&SearchPageNumber=" + (irma.records.main.index + 1).toString();
if (irma.records.main.totalResults > 0) {
query += "&SearchType=suppressed";
}
var url = searchURL + query;
$.ajax({
url: url
}).done(function (results) {
irma.storage.set('searchResults', {
results: results.data,
status: results.status,
totalResults: results.recCount,
data: data
});
irma.records.main.totalResults = results.recCount == 'suppressed' ? irma.records.main.totalResults : results.recCount;
sortRecords(results.data, data, data.status);
}).fail(function (jqXHR, textStatus) {
irma.logger.postLog(textStatus, url);
sortRecords([], data, 'failed');
});
};
var sortRecords = function (res, data, status) {
$('.search-results-container').removeClass('-loading');
var currentPage = [], pages = [],
noResults = false,
customGUI = irma.storage.get('userSettings').customGUI,
guiColumns = customGUI.columns;
_.forEach(guiColumns, function (column, i) {
if (column.name == data.options.sortBy) {
guiColumns[i].sortBy = true;
guiColumns[i].sortDirection = data.options.sortDirection;
}
else {
guiColumns[i].sortBy = false;
guiColumns[i].sortDirection = null;
}
});
data.guiColumns = customGUI.columns;
data.guiId = customGUI.id;
data.guiTitle = customGUI.title;
irma.form.setRecentSearch({ data: data });
if (status == "failed" || status == "no matching records") {
noResults = true;
}
else {
_.forEach(res, function (result, i) {
var r = { columns: [], data: {} };
_.forEach(guiColumns, function (column, j) {
var value = result[column.name] ? result[column.name] : "n/a";
r.columns[j] = {
value: value
};
_.forEach(column, function (value, key) {
r.columns[j][key] = value;
});
});
r.data = {
id: result[irma.searchId],
value: result[irma.searchId]
};
r.submitted = result.hasOwnProperty('chrSubmitted') && result.chrSubmitted && result.chrSubmitted.toLowerCase() == 'yes' ? "submitted" : "unsubmitted";
currentPage.push(r);
});
for (var i = 0; i < Math.ceil(/*currentPage.length*/ irma.records.main.totalResults / data.options.pageLength); i++) {
pages[i] = {
number: i + 1
};
}
}
var totalColumns = guiColumns.length,
r = [
irma.records.main.index * data.options.pageLength + 1,
(irma.records.main.index + 1) * data.options.pageLength
];
if (currentPage.length < data.options.pageLength) {
r[1] = r[0] + currentPage.length - 1;
}
var range = "" + r[0] + " - " + r[1] + "";
if (data.actions) {
totalColumns++;
}
var context = {
withWrapper: !data.simpleSearch,
fixedSearch: data.fixedSearch || false,
totalColumns: totalColumns,
columns: guiColumns,
showStatus: data.showStatus,
actions: data.actions,
actionsWidth: data.actions.length > 2 ? data.actions.length * 10 : 20,
rowClass: "table-link js-edit-record",
index: irma.records.main.index,
pages: pages,
range: range,
noResults: noResults,
currentPage: currentPage,
totalResults: irma.records.main.totalResults,
title: $('main.section').data().title,
data: {
"search-type": "main"
},
tData: {
module: irma.searchModule
},
toggle: 'toggle' in data ? data.toggle : data.simpleSearch ? false : true,
template: "search-results",
scope: '.search-results-container',
pageLength: data.options.pageLength
};
if (data.hasOwnProperty('customModalSearchValue')) {
context.customModalSearchValue = data.customModalSearchValue;
}
irma.records.main = context;
irma.form.showRecords(irma.records.main);
};
// ******* SEARCH FILTER ROWS ******* //
var rebuildFilter = function ($filter, data, index, callbackData) {
var $filterSelect = $filter.find('.filter-select'),
$filterList = $filterSelect.find('.dropdown-options'),
filterName = $filterSelect.attr('data-name'),
page = $('.search-form').attr('data-page').replace(/\s+/g, ''),
filterOptions = irma.storage.get('filterOptions')[page];
$.get(irma.assetPath + '/templates/search-filter-list/search-filter-list.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template),
context = {
filterOptions: filterOptions
};
var html = templateScript(context);
$filterList.html(html);
/*******/
$filterSelect.trigger('click')
.find('.filter-item').filter('[data-name=\'' + data.name + '\']').trigger('click');
$filterSelect.data('open', false);
$filterSelect.removeClass('-active')
.find('.dropdown-options').attr('aria-hidden', true);
var $input;
if (data.type == 'dropdown') {
var checkCount = 0;
var checkDropdown = function () {
$filter = $('.search-box').filter(function () {
return $(this).index() == $filter.index();
});
$input = $filter.find('.search-select input');
if ($input.length) {
$input.val(data.value);
$filter.find('.search-select .dropdown-label .text').text(data.value);
}
else if (checkCount < 10) {
setTimeout(function () {
checkDropdown();
}, 100);
}
checkCount++;
};
checkDropdown();
}
else if (data.type == 'advanced') {
$input = $filter.find('.search-tags input').eq(0);
if (data.display.length) {
irma.form.addTag(data.name, data.display, data.value);
}
}
else if (data.type == 'range') {
$input = $filter.find('.search-range .date-input');
$input.each(function (i) {
$(this).val(moment(data.value[i].value).format('DD/MM/YYYY'))
.siblings('.date-input-submit').val(data.value[i].value);
});
}
else if (data.type == 'date') {
$input = $filter.find('.search-date .date-input');
$input.val(moment(data.value).format('DD/MM/YYYY'))
.siblings('.date-input-submit').val(data.value);
}
else {
$input = $filter.find('.search-box-input');
$input.val(data.value);
}
if (index < callbackData.length) {
newFilter(callbackData[index], null, index, callbackData);
}
else {
$('.create-filters').removeClass('-loading');
$('.btn-submit').focus();
}
});
};
var newFilter = function (data, $searchBox, index, callbackData) {
$.get(irma.assetPath + '/templates/search-box/search-box.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var html = templateScript({
index: index
});
if ($searchBox) {
$searchBox.after(html);
}
else {
$('.create-filters').append(html);
}
var page = $('.search-form').attr('data-page').replace(/\s+/g, ''),
filterOptions = irma.storage.get('filterOptions')[page],
option = _.find(filterOptions, 'active'),
$newFilter = $searchBox ? $searchBox.next('.search-box') : $('.search-box').last();
if (data) {
updateDropdown();
rebuildFilter($newFilter, data, index + 1, callbackData);
}
else {
$newFilter.data(option).attr('data-name', option.name)
.find('.filter-select').data(option).attr('data-name', option.name)
.find('.dropdown-label .text').text(option.title);
updateFilter($newFilter, option);
}
});
};
var removeFilter = function ($searchBox) {
$searchBox.remove();
updateDropdown();
};
var updateFilter = function ($searchBox, data) {
var $dropdown = $searchBox.find('.filter-select'),
$searchBoxInput = $searchBox.find('.search-box-input'),
$range = $searchBox.find('.search-range .date-input-submit'),
$select = $searchBox.find('.search-select');
var searchBoxData = $searchBox.data();
$searchBox.data(data);
$searchBox.data(searchBoxData);
$searchBox.attr('data-name', data.name);
$select.empty();
$range.removeAttr('name');
$searchBoxInput.removeAttr('name').removeClass('js-advanced-search-input js-keypress-modal');
$searchBox.attr('data-search-type', data.type);
if (data.type == 'dropdown') {
$.get(irma.assetPath + '/templates/dropdown/dropdown.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template);
var options = [];
_.forEach(data.dropdown, function (item, i) {
var option = item.trim();
options[i] = {
name: option,
title: option
};
});
var html = templateScript({
name: data.name,
options: options,
label: $searchBox.find('.filter-select-container .dropdown-label .text').text()
});
$select.html(html);
});
}
else if (data.type == 'simple') {
$searchBox.find('.search-box-input').attr('name', data.name);
}
else if (data.type == 'range') {
for (var i = 0; i <= 1; i++) {
$range.eq(i).attr('name', data.range[i].trim());
}
}
else if (data.type == 'date') {
$searchBox.find('.search-date .date-input-submit').attr('name', data.name);
}
else if (data.type == 'advanced') {
$searchBoxInput.addClass('js-advanced-search-input js-keypress-modal');
}
updateDropdown();
};
// ******* SEARCH FILTER DROPDOWN ******* //
var buildDropdown = function () {
var filterOptions = irma.storage.get('filterOptions') || {},
$searchForm = $('.search-form'),
page = $searchForm.length > 0 ? $searchForm.attr('data-page').replace(/\s+/g, '') : null;
if (page) {
filterOptions[page] = [];
$('.filter-options .filter-item').each(function (i) {
filterOptions[page][i] = $(this).data();
});
irma.storage.set('filterOptions', filterOptions);
}
};
var updateDropdown = function () {
var filterOptions = irma.storage.get('filterOptions') || {},
page = $('.search-form').attr('data-page').replace(/\s+/g, ''),
active = [];
$('.search-form .create-filters .filter-select').each(function (i) {
active.push($(this).data().name);
});
_.forEach(filterOptions[page], function (option, i) {
if (_.indexOf(active, option.name) > -1) {
option.active = false;
}
else {
option.active = true;
}
return option;
});
irma.storage.set('filterOptions', filterOptions);
if ($('.search-box').length >= filterOptions[page].length) {
$('.search-form .create-filters').addClass('-max-filters');
}
else {
$('.search-form .create-filters').removeClass('-max-filters');
}
if (active.length == filterOptions[page].length) {
$('.search-form .create-filters').addClass('-locked-filters');
}
else {
$('.search-form .create-filters').removeClass('-locked-filters');
}
};
var showDropdown = function ($dropdown) {
var $dropdownList = $dropdown.find('.dropdown-options'),
dropdownName = $dropdown.attr('data-name'),
page = $('.search-form').attr('data-page').replace(/\s+/g, ''),
filterOptions = irma.storage.get('filterOptions')[page];
$.get(irma.assetPath + '/templates/search-filter-list/search-filter-list.hbs?v=' + irma.templateVersion, function (template) {
var templateScript = Handlebars.compile(template),
context = {
filterOptions: filterOptions
};
var html = templateScript(context);
$dropdownList.html(html);
});
};
// ******* INIT ******* //
var init = function () {
searchURL = irma.baseURL + "getMultipleSearchResults.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
saveSearchURL = irma.baseURL + "saveMySearchState.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
loadSearchURL = irma.baseURL + "getMySearchState.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
getDesignerFieldsURL = irma.baseURL + "getDesignerFields.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
saveCustomURL = irma.baseURL + "saveMyCustomState.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
getCustomURL = irma.baseURL + "getMyCustomState.asp?" + irma.urlParams + "&SearchModule=" + irma.searchModule;
irma.newSearch = false;
if ($('.filter-options').length) {
buildDropdown();
}
var recentSearches = irma.storage.get('recentSearches'),
searchData, customGUI;
// check if recent search exists
if (recentSearches && recentSearches[irma.pageId] && recentSearches[irma.pageId].criteria) {
var search = recentSearches[irma.pageId];
var criteria = JSON.parse(search.criteria);
searchData = search.data;
loadSearch(criteria);
searchData.options.pageLength = parseInt(searchData.options.pageLength);
currentSearch = {
data: searchData
};
var $inputs = $('');
_.forEach(criteria, function (crit, i) {
if (crit.type == 'range') {
for (var j = 0; j <= 1; j++) {
$inputs = $inputs.add($('<input>').attr('name', crit.value[j].name).val(crit.value[j].value));
}
} else {
$inputs = $inputs.add($('<input>').attr('name', crit.name).val(crit.value));
}
});
currentSearch.$inputs = $inputs;
irma.records.main.index = search.index;
irma.records.main.totalResults = 0;
$('.search-results-container').addClass('-loading');
irma.newSearch = true;
customGUI = {
columns: searchData.guiColumns,
title: searchData.guiTitle,
id: searchData.guiId
};
irma.settings.save('customGUI', customGUI);
submitSearch(currentSearch.$inputs, searchData);
}
else {
searchData = $('.search-form').data();
if (!searchData.fixedSearch) {
newFilter();
}
customGUI = {
columns: searchData.guiColumns,
title: searchData.guiTitle,
id: searchData.guiId
};
irma.settings.save('customGUI', customGUI);
}
// ------
$(document).on('click', '.js-refine-search', function (e) {
e.stopPropagation();
$('.js-refine-dropdown').toggleClass('-active');
}).on('submit', '.search-form:not(.js-simple-search)', function (e) {
e.preventDefault();
var $inputs = $(this).find('input:not(".advanced-search-input")').filter(function (i) {
return $(this).val().length > 0 && $(this).attr('name');
});
var data = $(this).data();
data.simpleSearch = false;
data.options.pageLength = parseInt(data.options.pageLength);
currentSearch = {
$inputs: $inputs,
data: data
};
irma.records.main.index = 0;
irma.records.main.totalResults = 0;
$('.search-results-container').addClass('-loading');
irma.newSearch = true;
submitSearch($inputs, data);
saveSearch("", $(this), true);
}).on('submit', '.js-simple-search', function (e) {
e.preventDefault();
var $inputs = $(this).find('input[name]').filter(function (i) {
return $(this).val().length > 0;
});
var data = $(this).data();
data.simpleSearch = true;
data.options.pageLength = parseInt(data.options.pageLength);
currentSearch = {
$inputs: $inputs,
data: data
};
irma.records.main.index = 0;
irma.records.main.totalResults = 0;
$('.search-results-container').addClass('-loading');
irma.newSearch = true;
submitSearch($inputs, data);
saveSearch("", $(this), true);
}).on('click', '.js-new-filter', function () {
newFilter(null, $(this).closest('.search-box'));
}).on('click', '.js-remove-filter', function () {
removeFilter($(this).closest('.search-box'));
}).on('click focus', '.search-form .filter-select.js-dropdown', function () {
showDropdown($(this));
}).on('click', '.search-form .filter-select .filter-item', function () {
updateDropdown();
var $searchBox = $(this).closest('.search-box');
var data = $(this).data();
updateFilter($searchBox, data);
}).on('click', '.js-refine-search', function () {
toggleSearch(false);
});
// Custom GUI
$(document).on('click', '.js-gui-new', function () {
var valid = !(irma.form.validateInput($(this).closest('.js-modal').find('[data-required] input')));
if (valid) {
var $scope = $(this).closest('.modal'),
title = $scope.find('.save-field input').val(),
$checked = $scope.find('input[type=\'checkbox\']').filter(':checked'),
data = [],
currentGUI = $scope.is('.modal-gui-new') ? null : irma.storage.get('userSettings').customGUI,
totalWidth = 0;
$checked.each(function (i) {
var $field = $(this).closest('.table-row'),
$input = $field.find('input[type=\'text\']'),
name = $input.attr('name'),
id = $field.data().id,
width;
data[i] = {
name: name,
title: $input.val(),
id: id
};
if (currentGUI) {
var currentField = _.filter(currentGUI.columns, { name: name, id: id });
if (currentField.length) {
width = parseInt(currentField[0].width);
}
else {
width = 100 / $checked.length;
}
}
else {
width = 100 / $checked.length;
}
totalWidth += width;
data[i].width = width;
});
if (totalWidth != 100) {
var ratio = 100 / totalWidth;
_.forEach(data, function (column, i) {
data[i].width = data[i].width * ratio;
});
}
loadGUI({ columns: data, title: title });
saveGUI(title, data);
irma.modal.closeModal($scope);
}
}).on('click', '.js-select-my-gui', function () {
$('.js-select-my-gui').removeClass('-active');
$(this).addClass('-active');
}).on('click', '.js-load-gui', function () {
var data = $(this).closest('.modal').find('.js-select-my-gui.-active').data();
if (!data.gui[0].width) {
var width = 100 / data.gui.length;
_.forEach(data.gui, function (datum, i) {
data.gui[i] = {
name: datum.name,
title: datum.title,
width: width
};
});
}
var customGUI = {
title: data.title,
id: data.id,
columns: data.gui
};
loadGUI(customGUI);
});
// Save/load search
$(document).on('click', '.js-save-search', function () {
var valid = !(irma.form.validateInput($(this).closest('.js-modal').find('[data-required] input')));
var title = $(this).closest('.js-modal').find('input[name=\'save-search-title\']').val();
if (valid) {
saveSearch(title, $('.search-form'));
}
}).on('click', '.js-save-as', function () {
toggleSaveAs($(this).closest('.js-modal'));
}).on('click', '.js-load-search', function () {
var data = $(this).closest('.modal').find('.js-select-my-search.-active').data().filters;
loadSearch(data);
}).on('click', '.js-btn-save-search', function () {
var $modal = $('.js-modal[data-modal=\'save-search\']');
$modal.find('input').val('');
toggleSaveAs($modal, true);
}).on('click', '.js-btn-load-search', function () {
loadSavedSearches($('.js-modal[data-modal=\'load-search\']'));
}).on('click', '.js-select-my-search', function () {
$('.js-select-my-search').removeClass('-active');
$(this).addClass('-active');
}).on('click', '[data-modal=\'save-search\'] .js-select-my-search', function () {
var name = $(this).find('.table-cell:first-child').text(),
$modal = $(this).closest('.js-modal');
$modal.find('.form-field').removeClass('-invalid')
.find('input').val(name);
}).on('keyup change', '.save-field input', function (e) {
var $modal = $(this).closest('.js-modal');
$modal.find('.js-select-my-search.-active').removeClass('-active');
});
// Other
$(document).on('click', '.js-table-sort', function (e) {
sortBy($(this).closest('.table-cell'));
});
// ajax table
$('.ajax-table .search-form').each(function () {
var data = $(this).data();
var $inputs = $(this).find('input[name]');
data.options.pageLength = parseInt(data.options.pageLength);
currentSearch = {
$inputs: $inputs,
data: data
};
irma.records.main.index = 0;
irma.records.main.totalResults = 0;
$('.search-results-container').addClass('-loading');
irma.newSearch = true;
submitSearch($inputs, data);
});
};
return {
init: init,
exportResults: exportResults,
sortRecords: sortRecords,
getRecords: getRecords,
loadSavedSearches: loadSavedSearches,
newGUI: newGUI,
loadGUIList: loadGUIList,
deleteGUI: deleteGUI,
submitSearch: submitSearch,
getCurrentSearch: getCurrentSearch,
toggleSearch: toggleSearch
};
}());
There are no notes for this item.