Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
41eebcf4
Commit
41eebcf4
authored
Aug 07, 2020
by
kevalbhatt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-3900: UI: Allow user to select the date range for date attribute in basic search
parent
1b41b980
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
540 additions
and
259 deletions
+540
-259
package-lock.json
dashboardv2/package-lock.json
+3
-3
package.json
dashboardv2/package.json
+1
-1
override.scss
dashboardv2/public/css/scss/override.scss
+24
-1
CommonViewFunction.js
dashboardv2/public/js/utils/CommonViewFunction.js
+38
-51
Enums.js
dashboardv2/public/js/utils/Enums.js
+37
-1
QueryBuilderView.js
dashboardv2/public/js/views/search/QueryBuilderView.js
+166
-70
package-lock.json
dashboardv3/package-lock.json
+3
-3
package.json
dashboardv3/package.json
+1
-1
override.scss
dashboardv3/public/css/scss/override.scss
+22
-1
main.js
dashboardv3/public/js/main.js
+0
-1
SearchDefaultLayoutView_tmpl.html
...lic/js/templates/search/SearchDefaultLayoutView_tmpl.html
+3
-3
CommonViewFunction.js
dashboardv3/public/js/utils/CommonViewFunction.js
+37
-51
Enums.js
dashboardv3/public/js/utils/Enums.js
+37
-1
QueryBuilderView.js
dashboardv3/public/js/views/search/QueryBuilderView.js
+166
-70
EntityTreeLayoutView.js
...ardv3/public/js/views/search/tree/EntityTreeLayoutView.js
+2
-1
No files found.
dashboardv2/package-lock.json
View file @
41eebcf4
...
@@ -357,9 +357,9 @@
...
@@ -357,9 +357,9 @@
"integrity"
:
"sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
"integrity"
:
"sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
},
},
"bootstrap-daterangepicker"
:
{
"bootstrap-daterangepicker"
:
{
"version"
:
"
2.1.25
"
,
"version"
:
"
3.1.0
"
,
"resolved"
:
"https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-
2.1.25
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-
3.1.0
.tgz"
,
"integrity"
:
"sha
1-/Ni6C3VaBU0zDXo7fE3Yu4Vc/7c
="
,
"integrity"
:
"sha
512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g=
="
,
"requires"
:
{
"requires"
:
{
"jquery"
:
">=1.10"
,
"jquery"
:
">=1.10"
,
"moment"
:
"^2.9.0"
"moment"
:
"^2.9.0"
...
...
dashboardv2/package.json
View file @
41eebcf4
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
"backgrid-select-all"
:
"0.3.5"
,
"backgrid-select-all"
:
"0.3.5"
,
"backgrid-sizeable-columns"
:
"0.1.1"
,
"backgrid-sizeable-columns"
:
"0.1.1"
,
"bootstrap"
:
"3.3.7"
,
"bootstrap"
:
"3.3.7"
,
"bootstrap-daterangepicker"
:
"
2.1.25
"
,
"bootstrap-daterangepicker"
:
"
3.1.0
"
,
"d3"
:
"3.5.17"
,
"d3"
:
"3.5.17"
,
"d3-tip"
:
"0.6.8"
,
"d3-tip"
:
"0.6.8"
,
"dagre-d3"
:
"0.6.4"
,
"dagre-d3"
:
"0.6.4"
,
...
...
dashboardv2/public/css/scss/override.scss
View file @
41eebcf4
...
@@ -300,7 +300,7 @@
...
@@ -300,7 +300,7 @@
}
}
.rule-operator-container
{
.rule-operator-container
{
width
:
1
05
px
;
width
:
1
50
px
;
.form-control
{
.form-control
{
width
:
100%
!
important
;
width
:
100%
!
important
;
...
@@ -507,4 +507,26 @@ div.columnmanager-dropdown-container {
...
@@ -507,4 +507,26 @@ div.columnmanager-dropdown-container {
overflow
:
hidden
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
}
}
}
.daterangepicker
{
max-height
:
400px
;
overflow-y
:
scroll
;
.ranges
{
max-height
:
328px
;
overflow
:
auto
;
}
.ranges
li
.active
,
td
.active
{
background-color
:
$color_havelock_blue_approx
;
}
.drp-buttons
{
.applyBtn
{
background-color
:
$color_havelock_blue_approx
;
border-color
:
$color_havelock_blue_approx
;
}
}
}
}
\ No newline at end of file
dashboardv2/public/js/utils/CommonViewFunction.js
View file @
41eebcf4
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* limitations under the License.
* limitations under the License.
*/
*/
define
([
'require'
,
'utils/Utils'
,
'modules/Modal'
,
'utils/Messages'
,
'utils/Enums'
,
'moment'
,
'utils/Globals'
],
function
(
require
,
Utils
,
Modal
,
Messages
,
Enums
,
moment
,
Globals
)
{
define
([
'require'
,
'utils/Utils'
,
'modules/Modal'
,
'utils/Messages'
,
'utils/Enums'
,
'moment'
,
'utils/Globals'
,
'moment-timezone'
],
function
(
require
,
Utils
,
Modal
,
Messages
,
Enums
,
moment
,
Globals
)
{
'use strict'
;
'use strict'
;
var
CommonViewFunction
=
{};
var
CommonViewFunction
=
{};
...
@@ -387,9 +387,13 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -387,9 +387,13 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
function
objToString
(
filterObj
)
{
function
objToString
(
filterObj
)
{
var
generatedQuery
=
_
.
map
(
filterObj
.
rules
,
function
(
obj
,
key
)
{
var
generatedQuery
=
_
.
map
(
filterObj
.
rules
,
function
(
obj
,
key
)
{
var
obj
=
$
.
extend
(
true
,
{},
obj
);
// not to update the timezone abbr on original obj , copy of obj is used
if
(
_
.
has
(
obj
,
'condition'
))
{
if
(
_
.
has
(
obj
,
'condition'
))
{
return
' <span class="operator">'
+
obj
.
condition
+
'</span> '
+
'('
+
objToString
(
obj
)
+
')'
;
return
' <span class="operator">'
+
obj
.
condition
+
'</span> '
+
'('
+
objToString
(
obj
)
+
')'
;
}
else
{
}
else
{
if
(
obj
.
type
===
"date"
)
{
obj
.
value
=
obj
.
value
+
" ("
+
moment
.
tz
(
moment
.
tz
.
guess
()).
zoneAbbr
()
+
")"
;
}
return
'<span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span> <span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span> <span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span>"
;
return
'<span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span> <span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span> <span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span>"
;
}
}
});
});
...
@@ -487,6 +491,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -487,6 +491,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if
(
Globals
[
value
[
skey
].
typeName
])
{
if
(
Globals
[
value
[
skey
].
typeName
])
{
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
}
}
if
(
Globals
.
_ALL_CLASSIFICATION_TYPES
&&
Globals
.
_ALL_CLASSIFICATION_TYPES
.
attributeDefs
)
{
attributeDefs
=
attributeDefs
.
concat
(
Globals
.
_ALL_CLASSIFICATION_TYPES
.
attributeDefs
);
}
}
}
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
}
else
if
(
k
==
"entityFilters"
)
{
}
else
if
(
k
==
"entityFilters"
)
{
...
@@ -503,6 +510,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -503,6 +510,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if
(
Globals
[
value
[
skey
].
typeName
])
{
if
(
Globals
[
value
[
skey
].
typeName
])
{
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
}
}
if
(
Globals
.
_ALL_ENTITY_TYPES
&&
Globals
.
_ALL_ENTITY_TYPES
.
attributeDefs
)
{
attributeDefs
=
attributeDefs
.
concat
(
Globals
.
_ALL_ENTITY_TYPES
.
attributeDefs
);
}
}
}
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
}
else
if
(
_
.
contains
([
"includeDE"
,
"excludeST"
,
"excludeSC"
],
k
))
{
}
else
if
(
_
.
contains
([
"includeDE"
,
"excludeST"
,
"excludeSC"
],
k
))
{
...
@@ -544,7 +554,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -544,7 +554,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
var
type
=
(
obj
.
type
||
obj
.
attributeType
),
var
type
=
(
obj
.
type
||
obj
.
attributeType
),
//obj.value will come as an object when selected type is Date and operator is isNull or not_null;
//obj.value will come as an object when selected type is Date and operator is isNull or not_null;
value
=
((
_
.
isString
(
obj
.
value
)
&&
_
.
contains
([
"is_null"
,
"not_null"
],
obj
.
operator
)
&&
type
===
'date'
)
||
_
.
isObject
(
obj
.
value
)
?
""
:
_
.
trim
(
obj
.
value
||
obj
.
attributeValue
)),
value
=
((
_
.
isString
(
obj
.
value
)
&&
_
.
contains
([
"is_null"
,
"not_null"
],
obj
.
operator
)
&&
type
===
'date'
)
||
_
.
isObject
(
obj
.
value
)
?
""
:
_
.
trim
(
obj
.
value
||
obj
.
attributeValue
)),
url
=
[(
obj
.
id
||
obj
.
attributeName
),
mapApiOperatorToUI
(
obj
.
operator
),
(
type
===
'date'
&&
formatedDateToLong
&&
value
.
length
?
Date
.
parse
(
value
)
:
value
)];
url
=
[(
obj
.
id
||
obj
.
attributeName
),
mapApiOperatorToUI
(
obj
.
operator
),
value
];
if
(
obj
.
operator
===
"TIME_RANGE"
)
{
if
(
value
.
indexOf
(
"-"
)
>
-
1
)
{
url
[
2
]
=
value
.
split
(
'-'
).
map
(
function
(
udKey
)
{
return
Date
.
parse
(
udKey
.
trim
()).
toString
()
}).
join
(
","
)
}
else
{
url
[
2
]
=
Enums
.
queryBuilderDateRangeUIValueToAPI
[
_
.
trim
(
value
)]
||
value
;
}
}
else
if
(
value
.
length
&&
type
===
'date'
&&
formatedDateToLong
)
{
url
[
2
]
=
Date
.
parse
(
value
);
}
if
(
type
)
{
if
(
type
)
{
url
.
push
(
type
);
url
.
push
(
type
);
}
}
...
@@ -561,30 +582,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -561,30 +582,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
}
}
function
mapApiOperatorToUI
(
oper
)
{
function
mapApiOperatorToUI
(
oper
)
{
if
(
oper
==
"eq"
)
{
// Enum will be in effect once we click on save search.
return
"="
;
return
Enums
.
queryBuilderApiOperatorToUI
[
oper
]
||
oper
;
}
else
if
(
oper
==
"neq"
)
{
return
"!="
;
}
else
if
(
oper
==
"lt"
)
{
return
"<"
;
}
else
if
(
oper
==
"lte"
)
{
return
"<="
;
}
else
if
(
oper
==
"gt"
)
{
return
">"
;
}
else
if
(
oper
==
"gte"
)
{
return
">="
;
}
else
if
(
oper
==
"startsWith"
)
{
return
"begins_with"
;
}
else
if
(
oper
==
"endsWith"
)
{
return
"ends_with"
;
}
else
if
(
oper
==
"contains"
)
{
return
"contains"
;
}
else
if
(
oper
==
"notNull"
)
{
return
"not_null"
;
}
else
if
(
oper
==
"isNull"
)
{
return
"is_null"
;
}
return
oper
;
}
}
},
},
extractUrl
:
function
(
options
)
{
extractUrl
:
function
(
options
)
{
...
@@ -594,30 +593,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -594,30 +593,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
spliter
=
1
,
spliter
=
1
,
apiObj
=
options
.
apiObj
,
apiObj
=
options
.
apiObj
,
mapUiOperatorToAPI
=
function
(
oper
)
{
mapUiOperatorToAPI
=
function
(
oper
)
{
if
(
oper
==
"="
)
{
return
Enums
.
queryBuilderUIOperatorToAPI
[
oper
]
||
oper
;
return
"eq"
;
}
else
if
(
oper
==
"!="
)
{
return
"neq"
;
}
else
if
(
oper
==
"<"
)
{
return
"lt"
;
}
else
if
(
oper
==
"<="
)
{
return
"lte"
;
}
else
if
(
oper
==
">"
)
{
return
"gt"
;
}
else
if
(
oper
==
">="
)
{
return
"gte"
;
}
else
if
(
oper
==
"begins_with"
)
{
return
"startsWith"
;
}
else
if
(
oper
==
"ends_with"
)
{
return
"endsWith"
;
}
else
if
(
oper
==
"contains"
)
{
return
"contains"
;
}
else
if
(
oper
==
"not_null"
)
{
return
"notNull"
;
}
else
if
(
oper
==
"is_null"
)
{
return
"isNull"
;
}
return
oper
;
},
},
createObject
=
function
(
urlObj
)
{
createObject
=
function
(
urlObj
)
{
var
finalObj
=
{};
var
finalObj
=
{};
...
@@ -636,13 +612,24 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -636,13 +612,24 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
rule
=
{};
rule
=
{};
if
(
apiObj
)
{
if
(
apiObj
)
{
rule
=
{
attributeName
:
temp
[
0
],
operator
:
mapUiOperatorToAPI
(
temp
[
1
]),
attributeValue
:
_
.
trim
(
temp
[
2
])
}
rule
=
{
attributeName
:
temp
[
0
],
operator
:
mapUiOperatorToAPI
(
temp
[
1
]),
attributeValue
:
_
.
trim
(
temp
[
2
])
}
rule
.
attributeValue
=
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
attributeValue
.
length
?
moment
(
parseInt
(
rule
.
attributeValue
)).
format
(
Globals
.
dateTimeFormat
)
:
rule
.
attributeValue
;
rule
.
attributeValue
=
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
attributeValue
.
length
?
moment
(
parseInt
(
rule
.
attributeValue
)).
format
(
Globals
.
dateTimeFormat
)
:
rule
.
attributeValue
;
}
else
{
}
else
{
rule
=
{
id
:
temp
[
0
],
operator
:
temp
[
1
],
value
:
_
.
trim
(
temp
[
2
])
}
rule
=
{
id
:
temp
[
0
],
operator
:
temp
[
1
],
value
:
_
.
trim
(
temp
[
2
])
}
if
(
temp
[
3
])
{
if
(
temp
[
3
])
{
rule
[
'type'
]
=
temp
[
3
];
rule
[
'type'
]
=
temp
[
3
];
}
}
rule
.
value
=
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
value
.
length
?
moment
(
parseInt
(
rule
.
value
)).
format
(
Globals
.
dateTimeFormat
)
:
rule
.
value
;
if
(
rule
.
operator
===
"TIME_RANGE"
)
{
if
(
temp
[
2
].
indexOf
(
","
)
>
-
1
)
{
rule
.
value
=
temp
[
2
].
split
(
","
).
map
(
function
(
udKey
)
{
return
moment
(
parseInt
(
udKey
.
trim
())).
format
(
Globals
.
dateTimeFormat
)
}).
join
(
" - "
)
}
else
{
rule
.
value
=
Enums
.
queryBuilderDateRangeAPIValueToUI
[
_
.
trim
(
rule
.
value
)]
||
rule
.
value
;
}
}
else
if
(
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
value
.
length
)
{
rule
.
value
=
moment
(
parseInt
(
rule
.
value
)).
format
(
Globals
.
dateTimeFormat
)
}
}
}
return
rule
;
return
rule
;
}
}
...
...
dashboardv2/public/js/utils/Enums.js
View file @
41eebcf4
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* limitations under the License.
* limitations under the License.
*/
*/
define
([
'require'
],
function
(
require
)
{
define
([
"require"
,
"backbone"
],
function
(
require
)
{
'use strict'
;
'use strict'
;
var
Enums
=
{};
var
Enums
=
{};
...
@@ -219,5 +219,40 @@ define(['require'], function(require) {
...
@@ -219,5 +219,40 @@ define(['require'], function(require) {
0
:
"false"
,
0
:
"false"
,
1
:
"true"
1
:
"true"
};
};
Enums
.
queryBuilderUIOperatorToAPI
=
{
"="
:
"eq"
,
"!="
:
"neq"
,
"<"
:
"lt"
,
"<="
:
"lte"
,
">"
:
"gt"
,
">="
:
"gte"
,
"begins_with"
:
"startsWith"
,
"ends_with"
:
"endsWith"
,
"not_null"
:
"notNull"
,
"is_null"
:
"isNull"
,
"TIME_RANGE"
:
"timerange"
};
Enums
.
queryBuilderApiOperatorToUI
=
_
.
invert
(
Enums
.
queryBuilderUIOperatorToAPI
);
Enums
.
queryBuilderDateRangeUIValueToAPI
=
{
"Today"
:
"TODAY"
,
"Yesterday"
:
"YESTERDAY"
,
"Last 7 Days"
:
"LAST_7_DAYS"
,
"Last 30 Days"
:
"LAST_30_DAYS"
,
"This Month"
:
"THIS_MONTH"
,
"Last Month"
:
"LAST_MONTH"
,
"This Quarter"
:
"THIS_QUARTER"
,
"Last Quarter"
:
"LAST_QUARTER"
,
"This Year"
:
"THIS_YEAR"
,
"Last Year"
:
"LAST_YEAR"
,
"Last 3 Months"
:
"LAST_3_MONTHS"
,
"Last 6 Months"
:
"LAST_6_MONTHS"
,
"Last 12 Months"
:
"LAST_12_MONTHS"
};
Enums
.
queryBuilderDateRangeAPIValueToUI
=
_
.
invert
(
Enums
.
queryBuilderDateRangeUIValueToAPI
);
return
Enums
;
return
Enums
;
});
});
\ No newline at end of file
dashboardv2/public/js/views/search/QueryBuilderView.js
View file @
41eebcf4
...
@@ -24,9 +24,10 @@ define(['require',
...
@@ -24,9 +24,10 @@ define(['require',
'utils/CommonViewFunction'
,
'utils/CommonViewFunction'
,
'utils/Enums'
,
'utils/Enums'
,
'utils/Globals'
,
'utils/Globals'
,
'moment'
,
'query-builder'
,
'query-builder'
,
'daterangepicker'
'daterangepicker'
],
function
(
require
,
Backbone
,
QueryBuilderTmpl
,
UserDefineTmpl
,
Utils
,
CommonViewFunction
,
Enums
,
Globals
)
{
],
function
(
require
,
Backbone
,
QueryBuilderTmpl
,
UserDefineTmpl
,
Utils
,
CommonViewFunction
,
Enums
,
Globals
,
moment
)
{
var
QueryBuilderView
=
Backbone
.
Marionette
.
LayoutView
.
extend
(
var
QueryBuilderView
=
Backbone
.
Marionette
.
LayoutView
.
extend
(
/** @lends QueryBuilderView */
/** @lends QueryBuilderView */
...
@@ -58,6 +59,22 @@ define(['require',
...
@@ -58,6 +59,22 @@ define(['require',
_
.
extend
(
this
,
_
.
pick
(
options
,
'attrObj'
,
'value'
,
'typeHeaders'
,
'entityDefCollection'
,
'enumDefCollection'
,
'classificationDefCollection'
,
'businessMetadataDefCollection'
,
'tag'
,
'type'
,
'searchTableFilters'
,
'systemAttrArr'
,
'adminAttrFilters'
));
_
.
extend
(
this
,
_
.
pick
(
options
,
'attrObj'
,
'value'
,
'typeHeaders'
,
'entityDefCollection'
,
'enumDefCollection'
,
'classificationDefCollection'
,
'businessMetadataDefCollection'
,
'tag'
,
'type'
,
'searchTableFilters'
,
'systemAttrArr'
,
'adminAttrFilters'
));
this
.
attrObj
=
_
.
sortBy
(
this
.
attrObj
,
'name'
);
this
.
attrObj
=
_
.
sortBy
(
this
.
attrObj
,
'name'
);
this
.
filterType
=
this
.
tag
?
'tagFilters'
:
'entityFilters'
;
this
.
filterType
=
this
.
tag
?
'tagFilters'
:
'entityFilters'
;
this
.
defaultRange
=
"Last 7 Days"
;
this
.
dateRangesMap
=
{
'Today'
:
[
moment
(),
moment
()],
'Yesterday'
:
[
moment
().
subtract
(
1
,
'days'
),
moment
().
subtract
(
1
,
'days'
)],
'Last 7 Days'
:
[
moment
().
subtract
(
6
,
'days'
),
moment
()],
'Last 30 Days'
:
[
moment
().
subtract
(
29
,
'days'
),
moment
()],
'This Month'
:
[
moment
().
startOf
(
'month'
),
moment
().
endOf
(
'month'
)],
'Last Month'
:
[
moment
().
subtract
(
1
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 3 Months'
:
[
moment
().
subtract
(
3
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 6 Months'
:
[
moment
().
subtract
(
6
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 12 Months'
:
[
moment
().
subtract
(
12
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'This Quarter'
:
[
moment
().
startOf
(
'quarter'
),
moment
().
endOf
(
'quarter'
)],
'Last Quarter'
:
[
moment
().
subtract
(
1
,
'quarter'
).
startOf
(
'quarter'
),
moment
().
subtract
(
1
,
'quarter'
).
endOf
(
'quarter'
)],
'This Year'
:
[
moment
().
startOf
(
'year'
),
moment
().
endOf
(
'year'
)],
'Last Year'
:
[
moment
().
subtract
(
1
,
'year'
).
startOf
(
'year'
),
moment
().
subtract
(
1
,
'year'
).
endOf
(
'year'
)]
}
},
},
bindEvents
:
function
()
{},
bindEvents
:
function
()
{},
getOperator
:
function
(
type
,
skipDefault
)
{
getOperator
:
function
(
type
,
skipDefault
)
{
...
@@ -71,7 +88,7 @@ define(['require',
...
@@ -71,7 +88,7 @@ define(['require',
}
}
}
}
if
(
type
===
"date"
)
{
if
(
type
===
"date"
)
{
obj
.
operators
=
[
'
>'
,
'<
'
];
obj
.
operators
=
[
'
='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
,
'TIME_RANGE
'
];
}
}
if
(
type
===
"int"
||
type
===
"byte"
||
type
===
"short"
||
type
===
"long"
||
type
===
"float"
||
type
===
"double"
)
{
if
(
type
===
"int"
||
type
===
"byte"
||
type
===
"short"
||
type
===
"long"
||
type
===
"float"
||
type
===
"double"
)
{
obj
.
operators
=
[
'='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
];
obj
.
operators
=
[
'='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
];
...
@@ -266,20 +283,7 @@ define(['require',
...
@@ -266,20 +283,7 @@ define(['require',
}
}
if
(
obj
.
type
===
"date"
)
{
if
(
obj
.
type
===
"date"
)
{
obj
[
'plugin'
]
=
'daterangepicker'
;
obj
[
'plugin'
]
=
'daterangepicker'
;
obj
[
'plugin_config'
]
=
{
obj
[
'plugin_config'
]
=
this
.
getDateConfig
(
rules
,
obj
.
id
);
"singleDatePicker"
:
true
,
"showDropdowns"
:
true
,
"timePicker"
:
true
,
locale
:
{
format
:
Globals
.
dateTimeFormat
}
};
if
(
rules
)
{
var
valueObj
=
_
.
find
(
rules
,
{
id
:
obj
.
id
});
if
(
valueObj
)
{
obj
.
plugin_config
[
"startDate"
]
=
valueObj
.
value
;
}
}
_
.
extend
(
obj
,
this
.
getOperator
(
obj
.
type
));
_
.
extend
(
obj
,
this
.
getOperator
(
obj
.
type
));
return
obj
;
return
obj
;
}
}
...
@@ -316,6 +320,86 @@ define(['require',
...
@@ -316,6 +320,86 @@ define(['require',
return
obj
;
return
obj
;
}
}
},
},
getDateConfig
:
function
(
ruleObj
,
id
,
operator
)
{
var
valueObj
=
ruleObj
?
(
_
.
find
(
ruleObj
.
rules
,
{
id
:
id
})
||
{})
:
{},
isTimeRange
=
(
valueObj
.
operator
&&
valueObj
.
operator
===
"TIME_RANGE"
&&
operator
===
"TIME_RANGE"
)
||
(
operator
===
"TIME_RANGE"
),
obj
=
{
opens
:
"center"
,
autoApply
:
true
,
autoUpdateInput
:
false
,
timePickerSeconds
:
true
,
timePicker
:
true
,
locale
:
{
format
:
Globals
.
dateTimeFormat
}
};
if
(
isTimeRange
)
{
var
defaultRangeDate
=
this
.
dateRangesMap
[
this
.
defaultRange
];
obj
.
startDate
=
defaultRangeDate
[
0
];
obj
.
endDate
=
defaultRangeDate
[
1
];
obj
.
singleDatePicker
=
false
;
obj
.
ranges
=
this
.
dateRangesMap
;
}
else
{
obj
.
singleDatePicker
=
true
;
obj
.
startDate
=
moment
();
obj
.
endDate
=
obj
.
startDate
;
}
if
(
!
_
.
isEmpty
(
valueObj
)
&&
operator
===
valueObj
.
operator
)
{
if
(
isTimeRange
)
{
if
(
valueObj
.
value
.
indexOf
(
"-"
)
>
-
1
)
{
var
dates
=
valueObj
.
value
.
split
(
"-"
);
obj
.
startDate
=
dates
[
0
].
trim
();
obj
.
endDate
=
dates
[
1
].
trim
();
}
else
{
var
dates
=
this
.
dateRangesMap
[
valueObj
.
value
]
obj
.
startDate
=
dates
[
0
];
obj
.
endDate
=
dates
[
1
];
}
obj
.
singleDatePicker
=
false
;
}
else
{
obj
.
startDate
=
moment
(
valueObj
.
value
);
obj
.
endDate
=
moment
(
valueObj
.
value
);
obj
.
singleDatePicker
=
true
;
}
}
return
obj
;
},
setDateValue
:
function
(
rule
,
rules_widgets
)
{
if
(
rule
.
filter
.
type
===
"date"
&&
rule
.
operator
.
nb_inputs
)
{
var
inputEl
=
rule
.
$el
.
find
(
".rule-value-container"
).
find
(
"input"
),
datepickerEl
=
rule
.
$el
.
find
(
".rule-value-container"
).
find
(
"input"
).
data
(
"daterangepicker"
)
inputEl
.
attr
(
'readonly'
,
true
);
if
(
datepickerEl
)
{
datepickerEl
.
remove
();
var
configObj
=
this
.
getDateConfig
(
rules_widgets
,
rule
.
filter
.
id
,
rule
.
operator
.
type
)
inputEl
.
daterangepicker
(
configObj
);
if
(
rule
.
operator
.
type
===
"TIME_RANGE"
)
{
rule
.
value
=
this
.
defaultRange
;
}
else
{
rule
.
value
=
configObj
.
startDate
.
format
(
Globals
.
dateTimeFormat
);
}
inputEl
.
on
(
'apply.daterangepicker'
,
function
(
ev
,
picker
)
{
picker
.
setStartDate
(
picker
.
startDate
);
picker
.
setEndDate
(
picker
.
endDate
);
var
valueString
=
""
;
if
(
picker
.
chosenLabel
)
{
if
(
picker
.
chosenLabel
===
"Custom Range"
)
{
valueString
=
picker
.
startDate
.
format
(
Globals
.
dateTimeFormat
)
+
" - "
+
picker
.
endDate
.
format
(
Globals
.
dateTimeFormat
);
}
else
{
valueString
=
picker
.
chosenLabel
;
}
}
else
{
valueString
=
picker
.
startDate
.
format
(
Globals
.
dateTimeFormat
);
}
picker
.
element
.
val
(
valueString
);
rule
.
value
=
valueString
;
});
}
}
},
onRender
:
function
()
{
onRender
:
function
()
{
var
that
=
this
,
var
that
=
this
,
filters
=
[],
filters
=
[],
...
@@ -339,7 +423,7 @@ define(['require',
...
@@ -339,7 +423,7 @@ define(['require',
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
?
this
.
searchTableFilters
[
"adminAttrFilters"
]
:
null
,
"formatDate"
:
true
});;
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
?
this
.
searchTableFilters
[
"adminAttrFilters"
]
:
null
,
"formatDate"
:
true
});;
}
else
{
}
else
{
if
(
this
.
value
)
{
if
(
this
.
value
)
{
var
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
[
this
.
filterType
][(
this
.
tag
?
this
.
value
.
tag
:
this
.
value
.
type
)],
"formatDate"
:
true
});
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
[
this
.
filterType
][(
this
.
tag
?
this
.
value
.
tag
:
this
.
value
.
type
)],
"formatDate"
:
true
});
}
}
_
.
each
(
this
.
attrObj
,
function
(
obj
)
{
_
.
each
(
this
.
attrObj
,
function
(
obj
)
{
var
type
=
that
.
tag
?
that
.
value
.
tag
:
that
.
value
.
type
;
var
type
=
that
.
tag
?
that
.
value
.
tag
:
that
.
value
.
type
;
...
@@ -415,16 +499,20 @@ define(['require',
...
@@ -415,16 +499,20 @@ define(['require',
}
}
filters
=
_
.
uniq
(
filters
,
'id'
);
filters
=
_
.
uniq
(
filters
,
'id'
);
if
(
filters
&&
!
_
.
isEmpty
(
filters
))
{
if
(
filters
&&
!
_
.
isEmpty
(
filters
))
{
this
.
ui
.
builder
.
queryBuilder
({
this
.
ui
.
builder
.
off
()
plugins
:
[
'bt-tooltip-errors'
],
.
on
(
"afterUpdateRuleOperator.queryBuilder"
,
function
(
e
,
rule
)
{
filters
:
filters
,
that
.
setDateValue
(
rule
,
rules_widgets
);
select_placeholder
:
placeHolder
,
})
allow_empty
:
true
,
.
queryBuilder
({
conditions
:
[
'AND'
,
'OR'
],
plugins
:
[
'bt-tooltip-errors'
],
allow_groups
:
true
,
filters
:
filters
,
allow_empty
:
true
,
select_placeholder
:
placeHolder
,
templates
:
{
allow_empty
:
true
,
rule
:
'<div id="{{= it.rule_id }}" class="rule-container">
\
conditions
:
[
'AND'
,
'OR'
],
allow_groups
:
true
,
allow_empty
:
true
,
templates
:
{
rule
:
'<div id="{{= it.rule_id }}" class="rule-container">
\
<div class="values-box"><div class="rule-filter-container"></div>
\
<div class="values-box"><div class="rule-filter-container"></div>
\
<div class="rule-operator-container"></div>
\
<div class="rule-operator-container"></div>
\
<div class="rule-value-container"></div></div>
\
<div class="rule-value-container"></div></div>
\
...
@@ -439,50 +527,58 @@ define(['require',
...
@@ -439,50 +527,58 @@ define(['require',
<div class="error-container"><i class="{{= it.icons.error }}"></i> <span></span></div>
\
<div class="error-container"><i class="{{= it.icons.error }}"></i> <span></span></div>
\
{{?}}
\
{{?}}
\
</div>'
</div>'
},
},
operators
:
[
operators
:
[
{
type
:
'='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'!='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'!='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'>'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'contains'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'contains'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'like'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'like'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'in'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'in'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'begins_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'begins_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'ends_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'ends_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'is_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'is_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'not_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
}
{
type
:
'not_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
],
{
type
:
'TIME_RANGE'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'date'
]
}
lang
:
{
],
add_rule
:
'Add filter'
,
lang
:
{
add_group
:
'Add filter group'
,
add_rule
:
'Add filter'
,
operators
:
{
add_group
:
'Add filter group'
,
not_null
:
'is not null'
operators
:
{
not_null
:
'is not null'
,
TIME_RANGE
:
"Time Range"
}
},
icons
:
{
add_rule
:
'fa fa-plus'
,
remove_rule
:
'fa fa-times'
,
error
:
'fa fa-exclamation-triangle'
},
rules
:
rules_widgets
})
.
on
(
"afterCreateRuleInput.queryBuilder"
,
function
(
e
,
rule
)
{
rule
.
error
=
null
;
if
(
rule
.
operator
.
nb_inputs
&&
rule
.
filter
.
id
===
"__customAttributes"
)
{
rule
.
$el
.
addClass
(
"user-define"
);
}
else
if
(
rule
.
$el
.
hasClass
(
"user-define"
))
{
rule
.
$el
.
removeClass
(
"user-define"
);
}
}
},
if
(
rule
.
filter
.
type
===
"date"
)
{
icons
:
{
rule
.
$el
.
find
(
'.rule-value-container >input'
).
attr
(
'readonly'
,
true
)
add_rule
:
'fa fa-plus'
,
}
remove_rule
:
'fa fa-times'
,
that
.
setDateValue
(
rule
,
rules_widgets
);
error
:
'fa fa-exclamation-triangle'
})
},
.
on
(
'validationError.queryBuilder'
,
function
(
e
,
rule
,
error
,
value
)
{
rules
:
rules_widgets
// never display error for my custom filter
}).
on
(
"afterCreateRuleInput.queryBuilder"
,
function
(
e
,
rule
)
{
var
errorMsg
=
error
[
0
];
rule
.
error
=
null
;
if
(
that
.
queryBuilderLang
&&
that
.
queryBuilderLang
.
errors
&&
that
.
queryBuilderLang
.
errors
[
errorMsg
])
{
if
(
rule
.
operator
.
nb_inputs
&&
rule
.
filter
.
id
===
"__customAttributes"
)
{
errorMsg
=
that
.
queryBuilderLang
.
errors
[
errorMsg
];
rule
.
$el
.
addClass
(
"user-define"
);
}
}
else
if
(
rule
.
$el
.
hasClass
(
"user-define"
))
{
rule
.
$el
.
find
(
".error-container span"
).
html
(
errorMsg
);
rule
.
$el
.
removeClass
(
"user-define"
);
});
}
}).
on
(
'validationError.queryBuilder'
,
function
(
e
,
rule
,
error
,
value
)
{
// never display error for my custom filter
var
errorMsg
=
error
[
0
];
if
(
that
.
queryBuilderLang
&&
that
.
queryBuilderLang
.
errors
&&
that
.
queryBuilderLang
.
errors
[
errorMsg
])
{
errorMsg
=
that
.
queryBuilderLang
.
errors
[
errorMsg
];
}
rule
.
$el
.
find
(
".error-container span"
).
html
(
errorMsg
);
});
var
queryBuilderEl
=
that
.
ui
.
builder
.
data
(
"queryBuilder"
);
var
queryBuilderEl
=
that
.
ui
.
builder
.
data
(
"queryBuilder"
);
if
(
queryBuilderEl
&&
queryBuilderEl
.
lang
)
{
if
(
queryBuilderEl
&&
queryBuilderEl
.
lang
)
{
this
.
queryBuilderLang
=
queryBuilderEl
.
lang
;
this
.
queryBuilderLang
=
queryBuilderEl
.
lang
;
...
...
dashboardv3/package-lock.json
View file @
41eebcf4
...
@@ -357,9 +357,9 @@
...
@@ -357,9 +357,9 @@
"integrity"
:
"sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
"integrity"
:
"sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
},
},
"bootstrap-daterangepicker"
:
{
"bootstrap-daterangepicker"
:
{
"version"
:
"
2.1.25
"
,
"version"
:
"
3.1.0
"
,
"resolved"
:
"https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-
2.1.25
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-
3.1.0
.tgz"
,
"integrity"
:
"sha
1-/Ni6C3VaBU0zDXo7fE3Yu4Vc/7c
="
,
"integrity"
:
"sha
512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g=
="
,
"requires"
:
{
"requires"
:
{
"jquery"
:
">=1.10"
,
"jquery"
:
">=1.10"
,
"moment"
:
"^2.9.0"
"moment"
:
"^2.9.0"
...
...
dashboardv3/package.json
View file @
41eebcf4
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
"backgrid-select-all"
:
"0.3.5"
,
"backgrid-select-all"
:
"0.3.5"
,
"backgrid-sizeable-columns"
:
"0.1.1"
,
"backgrid-sizeable-columns"
:
"0.1.1"
,
"bootstrap"
:
"3.3.7"
,
"bootstrap"
:
"3.3.7"
,
"bootstrap-daterangepicker"
:
"
2.1.25
"
,
"bootstrap-daterangepicker"
:
"
3.1.0
"
,
"d3"
:
"3.5.17"
,
"d3"
:
"3.5.17"
,
"d3-tip"
:
"0.6.8"
,
"d3-tip"
:
"0.6.8"
,
"dagre-d3"
:
"0.6.4"
,
"dagre-d3"
:
"0.6.4"
,
...
...
dashboardv3/public/css/scss/override.scss
View file @
41eebcf4
...
@@ -304,7 +304,7 @@
...
@@ -304,7 +304,7 @@
}
}
.rule-operator-container
{
.rule-operator-container
{
width
:
1
05
px
;
width
:
1
50
px
;
.form-control
{
.form-control
{
width
:
100%
!
important
;
width
:
100%
!
important
;
...
@@ -511,4 +511,24 @@ div.columnmanager-dropdown-container {
...
@@ -511,4 +511,24 @@ div.columnmanager-dropdown-container {
overflow
:
hidden
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
}
}
}
.daterangepicker
{
.ranges
{
max-height
:
328px
;
overflow
:
auto
;
}
.ranges
li
.active
,
td
.active
{
background-color
:
$color_havelock_blue_approx
;
}
.drp-buttons
{
.applyBtn
{
background-color
:
$color_havelock_blue_approx
;
border-color
:
$color_havelock_blue_approx
;
}
}
}
}
\ No newline at end of file
dashboardv3/public/js/main.js
View file @
41eebcf4
...
@@ -348,7 +348,6 @@ require(['App',
...
@@ -348,7 +348,6 @@ require(['App',
startApp
();
startApp
();
}
}
});
});
this
.
businessMetadataDefCollection
.
fetch
({
this
.
businessMetadataDefCollection
.
fetch
({
complete
:
function
()
{
complete
:
function
()
{
that
.
businessMetadataDefCollection
.
fullCollection
.
comparator
=
function
(
model
)
{
that
.
businessMetadataDefCollection
.
fullCollection
.
comparator
=
function
(
model
)
{
...
...
dashboardv3/public/js/templates/search/SearchDefaultLayoutView_tmpl.html
View file @
41eebcf4
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
<button
class=
"btn-action btn-sm attribute-filter-text"
data-id=
'attrFilter'
>
<i
class=
"fa fa-angle-right"
></i>
Filters
</button>
<button
class=
"btn-action btn-sm attribute-filter-text"
data-id=
'attrFilter'
>
<i
class=
"fa fa-angle-right"
></i>
Filters
</button>
<button
class=
'btn-action btn-sm'
data-id=
'clearQuerySearch'
>
Clear
</button>
<button
class=
'btn-action btn-sm'
data-id=
'clearQuerySearch'
>
Clear
</button>
<div
class=
"attribute-filter-container hide"
>
<div
class=
"attribute-filter-container hide"
>
<div
class=
"panel panel-default expand_collapse_panel-icon"
data-id=
"includeExclude"
>
<div
class=
"panel panel-default expand_collapse_panel-icon"
data-id=
"includeExclude"
style=
"margin-bottom: 0px;"
>
<div
class=
"panel-heading"
data-toggle=
"collapse"
href=
"#collapseIncludeExclude"
aria-expanded=
"true"
>
<div
class=
"panel-heading"
data-toggle=
"collapse"
href=
"#collapseIncludeExclude"
aria-expanded=
"true"
>
<h4
class=
"panel-title"
>
<h4
class=
"panel-title"
>
<a>
Include/Exclude
</a>
<a>
Include/Exclude
</a>
...
@@ -40,8 +40,8 @@
...
@@ -40,8 +40,8 @@
</div>
</div>
</div>
</div>
<div
id=
"collapseIncludeExclude"
class=
"panel-collapse collapse in"
>
<div
id=
"collapseIncludeExclude"
class=
"panel-collapse collapse in"
>
<div
class=
"panel-body"
>
<div
class=
"panel-body"
style=
"padding: 4px 15px;"
>
<div
class=
"form-group filter-box"
>
<div
class=
"form-group filter-box"
style=
"margin: 0;"
>
<div
class=
"entity-detail-table-toggle"
>
<div
class=
"entity-detail-table-toggle"
>
<div
class=
"pretty p-switch p-fill"
>
<div
class=
"pretty p-switch p-fill"
>
<input
type=
"checkbox"
data-id=
"checkDeletedEntity"
data-value=
"includeDE"
id=
"historicalentities"
/>
<input
type=
"checkbox"
data-id=
"checkDeletedEntity"
data-value=
"includeDE"
id=
"historicalentities"
/>
...
...
dashboardv3/public/js/utils/CommonViewFunction.js
View file @
41eebcf4
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* limitations under the License.
* limitations under the License.
*/
*/
define
([
'require'
,
'utils/Utils'
,
'modules/Modal'
,
'utils/Messages'
,
'utils/Enums'
,
'moment'
,
'utils/Globals'
],
function
(
require
,
Utils
,
Modal
,
Messages
,
Enums
,
moment
,
Globals
)
{
define
([
'require'
,
'utils/Utils'
,
'modules/Modal'
,
'utils/Messages'
,
'utils/Enums'
,
'moment'
,
'utils/Globals'
,
'moment-timezone'
],
function
(
require
,
Utils
,
Modal
,
Messages
,
Enums
,
moment
,
Globals
)
{
'use strict'
;
'use strict'
;
var
CommonViewFunction
=
{};
var
CommonViewFunction
=
{};
...
@@ -387,10 +387,14 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -387,10 +387,14 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
function
objToString
(
filterObj
,
type
)
{
function
objToString
(
filterObj
,
type
)
{
var
generatedQuery
=
_
.
map
(
filterObj
.
rules
,
function
(
obj
,
key
)
{
var
generatedQuery
=
_
.
map
(
filterObj
.
rules
,
function
(
obj
,
key
)
{
var
obj
=
$
.
extend
(
true
,
{},
obj
);
// not to update the timezone abbr on original obj , copy of obj is used
if
(
_
.
has
(
obj
,
'condition'
))
{
if
(
_
.
has
(
obj
,
'condition'
))
{
return
'<span class="operator">'
+
obj
.
condition
+
'</span>'
+
'('
+
objToString
(
obj
).
join
(
""
)
+
')'
;
return
'<span class="operator">'
+
obj
.
condition
+
'</span>'
+
'('
+
objToString
(
obj
).
join
(
""
)
+
')'
;
}
else
{
}
else
{
if
(
isCapsuleView
)
{
if
(
isCapsuleView
)
{
if
(
obj
.
type
===
"date"
)
{
obj
.
value
=
obj
.
value
+
" ("
+
moment
.
tz
(
moment
.
tz
.
guess
()).
zoneAbbr
()
+
")"
;
}
return
'<div class="capsuleView"><span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span><span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span><span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span><div class='fa fa-close clear-attr' data-type="
+
type
+
" data-id="
+
_
.
escape
(
obj
.
id
)
+
"></div></div>"
;
return
'<div class="capsuleView"><span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span><span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span><span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span><div class='fa fa-close clear-attr' data-type="
+
type
+
" data-id="
+
_
.
escape
(
obj
.
id
)
+
"></div></div>"
;
}
}
return
'<span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span><span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span><span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span>"
;
return
'<span class="key">'
+
(
Enums
.
systemAttributes
[
obj
.
id
]
?
Enums
.
systemAttributes
[
obj
.
id
]
:
_
.
escape
(
obj
.
id
))
+
'</span><span class="operator">'
+
_
.
escape
(
obj
.
operator
)
+
'</span><span class="value">'
+
(
Enums
[
obj
.
id
]
?
Enums
[
obj
.
id
][
obj
.
value
]
:
_
.
escape
(
obj
.
value
))
+
"</span>"
;
...
@@ -507,6 +511,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -507,6 +511,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if
(
Globals
[
value
[
skey
].
typeName
])
{
if
(
Globals
[
value
[
skey
].
typeName
])
{
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
}
}
if
(
Globals
.
_ALL_CLASSIFICATION_TYPES
&&
Globals
.
_ALL_CLASSIFICATION_TYPES
.
attributeDefs
)
{
attributeDefs
=
attributeDefs
.
concat
(
Globals
.
_ALL_CLASSIFICATION_TYPES
.
attributeDefs
);
}
}
}
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
}
else
if
(
k
==
"entityFilters"
)
{
}
else
if
(
k
==
"entityFilters"
)
{
...
@@ -523,6 +530,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -523,6 +530,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if
(
Globals
[
value
[
skey
].
typeName
])
{
if
(
Globals
[
value
[
skey
].
typeName
])
{
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
attributeDefs
=
Globals
[
value
[
skey
].
typeName
].
attributeDefs
;
}
}
if
(
Globals
.
_ALL_ENTITY_TYPES
&&
Globals
.
_ALL_ENTITY_TYPES
.
attributeDefs
)
{
attributeDefs
=
attributeDefs
.
concat
(
Globals
.
_ALL_ENTITY_TYPES
.
attributeDefs
);
}
}
}
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
val
=
CommonViewFunction
.
attributeFilter
.
generateUrl
({
"value"
:
val
,
"attributeDefs"
:
attributeDefs
});
}
else
if
(
_
.
contains
([
"includeDE"
,
"excludeST"
,
"excludeSC"
],
k
))
{
}
else
if
(
_
.
contains
([
"includeDE"
,
"excludeST"
,
"excludeSC"
],
k
))
{
...
@@ -564,7 +574,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -564,7 +574,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
var
type
=
(
obj
.
type
||
obj
.
attributeType
),
var
type
=
(
obj
.
type
||
obj
.
attributeType
),
//obj.value will come as an object when selected type is Date and operator is isNull or not_null;
//obj.value will come as an object when selected type is Date and operator is isNull or not_null;
value
=
((
_
.
isString
(
obj
.
value
)
&&
_
.
contains
([
"is_null"
,
"not_null"
],
obj
.
operator
)
&&
type
===
'date'
)
||
_
.
isObject
(
obj
.
value
)
?
""
:
_
.
trim
(
obj
.
value
||
obj
.
attributeValue
)),
value
=
((
_
.
isString
(
obj
.
value
)
&&
_
.
contains
([
"is_null"
,
"not_null"
],
obj
.
operator
)
&&
type
===
'date'
)
||
_
.
isObject
(
obj
.
value
)
?
""
:
_
.
trim
(
obj
.
value
||
obj
.
attributeValue
)),
url
=
[(
obj
.
id
||
obj
.
attributeName
),
mapApiOperatorToUI
(
obj
.
operator
),
(
type
===
'date'
&&
formatedDateToLong
&&
value
.
length
?
Date
.
parse
(
value
)
:
value
)];
url
=
[(
obj
.
id
||
obj
.
attributeName
),
mapApiOperatorToUI
(
obj
.
operator
),
value
];
if
(
obj
.
operator
===
"TIME_RANGE"
)
{
if
(
value
.
indexOf
(
"-"
)
>
-
1
)
{
url
[
2
]
=
value
.
split
(
'-'
).
map
(
function
(
udKey
)
{
return
Date
.
parse
(
udKey
.
trim
()).
toString
()
}).
join
(
","
)
}
else
{
url
[
2
]
=
Enums
.
queryBuilderDateRangeUIValueToAPI
[
_
.
trim
(
value
)]
||
value
;
}
}
else
if
(
value
.
length
&&
type
===
'date'
&&
formatedDateToLong
)
{
url
[
2
]
=
Date
.
parse
(
value
);
}
if
(
type
)
{
if
(
type
)
{
url
.
push
(
type
);
url
.
push
(
type
);
}
}
...
@@ -581,30 +602,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -581,30 +602,8 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
}
}
function
mapApiOperatorToUI
(
oper
)
{
function
mapApiOperatorToUI
(
oper
)
{
if
(
oper
==
"eq"
)
{
// Enum will be in effect once we click on save search.
return
"="
;
return
Enums
.
queryBuilderApiOperatorToUI
[
oper
]
||
oper
;
}
else
if
(
oper
==
"neq"
)
{
return
"!="
;
}
else
if
(
oper
==
"lt"
)
{
return
"<"
;
}
else
if
(
oper
==
"lte"
)
{
return
"<="
;
}
else
if
(
oper
==
"gt"
)
{
return
">"
;
}
else
if
(
oper
==
"gte"
)
{
return
">="
;
}
else
if
(
oper
==
"startsWith"
)
{
return
"begins_with"
;
}
else
if
(
oper
==
"endsWith"
)
{
return
"ends_with"
;
}
else
if
(
oper
==
"contains"
)
{
return
"contains"
;
}
else
if
(
oper
==
"notNull"
)
{
return
"not_null"
;
}
else
if
(
oper
==
"isNull"
)
{
return
"is_null"
;
}
return
oper
;
}
}
},
},
extractUrl
:
function
(
options
)
{
extractUrl
:
function
(
options
)
{
...
@@ -614,30 +613,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -614,30 +613,7 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
spliter
=
1
,
spliter
=
1
,
apiObj
=
options
.
apiObj
,
apiObj
=
options
.
apiObj
,
mapUiOperatorToAPI
=
function
(
oper
)
{
mapUiOperatorToAPI
=
function
(
oper
)
{
if
(
oper
==
"="
)
{
return
Enums
.
queryBuilderUIOperatorToAPI
[
oper
]
||
oper
;
return
"eq"
;
}
else
if
(
oper
==
"!="
)
{
return
"neq"
;
}
else
if
(
oper
==
"<"
)
{
return
"lt"
;
}
else
if
(
oper
==
"<="
)
{
return
"lte"
;
}
else
if
(
oper
==
">"
)
{
return
"gt"
;
}
else
if
(
oper
==
">="
)
{
return
"gte"
;
}
else
if
(
oper
==
"begins_with"
)
{
return
"startsWith"
;
}
else
if
(
oper
==
"ends_with"
)
{
return
"endsWith"
;
}
else
if
(
oper
==
"contains"
)
{
return
"contains"
;
}
else
if
(
oper
==
"not_null"
)
{
return
"notNull"
;
}
else
if
(
oper
==
"is_null"
)
{
return
"isNull"
;
}
return
oper
;
},
},
createObject
=
function
(
urlObj
)
{
createObject
=
function
(
urlObj
)
{
var
finalObj
=
{};
var
finalObj
=
{};
...
@@ -662,7 +638,17 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
...
@@ -662,7 +638,17 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Enum
if
(
temp
[
3
])
{
if
(
temp
[
3
])
{
rule
[
'type'
]
=
temp
[
3
];
rule
[
'type'
]
=
temp
[
3
];
}
}
rule
.
value
=
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
value
.
length
?
moment
(
parseInt
(
rule
.
value
)).
format
(
Globals
.
dateTimeFormat
)
:
rule
.
value
;
if
(
rule
.
operator
===
"TIME_RANGE"
)
{
if
(
temp
[
2
].
indexOf
(
","
)
>
-
1
)
{
rule
.
value
=
temp
[
2
].
split
(
","
).
map
(
function
(
udKey
)
{
return
moment
(
parseInt
(
udKey
.
trim
())).
format
(
Globals
.
dateTimeFormat
)
}).
join
(
" - "
)
}
else
{
rule
.
value
=
Enums
.
queryBuilderDateRangeAPIValueToUI
[
_
.
trim
(
rule
.
value
)]
||
rule
.
value
;
}
}
else
if
(
rule
.
type
===
'date'
&&
formatDate
&&
rule
.
value
.
length
)
{
rule
.
value
=
moment
(
parseInt
(
rule
.
value
)).
format
(
Globals
.
dateTimeFormat
)
}
}
}
return
rule
;
return
rule
;
}
}
...
...
dashboardv3/public/js/utils/Enums.js
View file @
41eebcf4
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
* limitations under the License.
* limitations under the License.
*/
*/
define
([
'require'
],
function
(
require
)
{
define
([
"require"
,
"backbone"
],
function
(
require
)
{
'use strict'
;
'use strict'
;
var
Enums
=
{};
var
Enums
=
{};
...
@@ -219,5 +219,40 @@ define(['require'], function(require) {
...
@@ -219,5 +219,40 @@ define(['require'], function(require) {
0
:
"false"
,
0
:
"false"
,
1
:
"true"
1
:
"true"
};
};
Enums
.
queryBuilderUIOperatorToAPI
=
{
"="
:
"eq"
,
"!="
:
"neq"
,
"<"
:
"lt"
,
"<="
:
"lte"
,
">"
:
"gt"
,
">="
:
"gte"
,
"begins_with"
:
"startsWith"
,
"ends_with"
:
"endsWith"
,
"not_null"
:
"notNull"
,
"is_null"
:
"isNull"
,
"TIME_RANGE"
:
"timerange"
};
Enums
.
queryBuilderApiOperatorToUI
=
_
.
invert
(
Enums
.
queryBuilderUIOperatorToAPI
);
Enums
.
queryBuilderDateRangeUIValueToAPI
=
{
"Today"
:
"TODAY"
,
"Yesterday"
:
"YESTERDAY"
,
"Last 7 Days"
:
"LAST_7_DAYS"
,
"Last 30 Days"
:
"LAST_30_DAYS"
,
"This Month"
:
"THIS_MONTH"
,
"Last Month"
:
"LAST_MONTH"
,
"This Quarter"
:
"THIS_QUARTER"
,
"Last Quarter"
:
"LAST_QUARTER"
,
"This Year"
:
"THIS_YEAR"
,
"Last Year"
:
"LAST_YEAR"
,
"Last 3 Months"
:
"LAST_3_MONTHS"
,
"Last 6 Months"
:
"LAST_6_MONTHS"
,
"Last 12 Months"
:
"LAST_12_MONTHS"
};
Enums
.
queryBuilderDateRangeAPIValueToUI
=
_
.
invert
(
Enums
.
queryBuilderDateRangeUIValueToAPI
);
return
Enums
;
return
Enums
;
});
});
\ No newline at end of file
dashboardv3/public/js/views/search/QueryBuilderView.js
View file @
41eebcf4
...
@@ -24,9 +24,10 @@ define(['require',
...
@@ -24,9 +24,10 @@ define(['require',
'utils/CommonViewFunction'
,
'utils/CommonViewFunction'
,
'utils/Enums'
,
'utils/Enums'
,
'utils/Globals'
,
'utils/Globals'
,
'moment'
,
'query-builder'
,
'query-builder'
,
'daterangepicker'
'daterangepicker'
],
function
(
require
,
Backbone
,
QueryBuilderTmpl
,
UserDefineTmpl
,
Utils
,
CommonViewFunction
,
Enums
,
Globals
)
{
],
function
(
require
,
Backbone
,
QueryBuilderTmpl
,
UserDefineTmpl
,
Utils
,
CommonViewFunction
,
Enums
,
Globals
,
moment
)
{
var
QueryBuilderView
=
Backbone
.
Marionette
.
LayoutView
.
extend
(
var
QueryBuilderView
=
Backbone
.
Marionette
.
LayoutView
.
extend
(
/** @lends QueryBuilderView */
/** @lends QueryBuilderView */
...
@@ -58,6 +59,22 @@ define(['require',
...
@@ -58,6 +59,22 @@ define(['require',
_
.
extend
(
this
,
_
.
pick
(
options
,
'attrObj'
,
'value'
,
'typeHeaders'
,
'entityDefCollection'
,
'enumDefCollection'
,
'classificationDefCollection'
,
'businessMetadataDefCollection'
,
'tag'
,
'type'
,
'searchTableFilters'
,
'systemAttrArr'
,
'adminAttrFilters'
));
_
.
extend
(
this
,
_
.
pick
(
options
,
'attrObj'
,
'value'
,
'typeHeaders'
,
'entityDefCollection'
,
'enumDefCollection'
,
'classificationDefCollection'
,
'businessMetadataDefCollection'
,
'tag'
,
'type'
,
'searchTableFilters'
,
'systemAttrArr'
,
'adminAttrFilters'
));
this
.
attrObj
=
_
.
sortBy
(
this
.
attrObj
,
'name'
);
this
.
attrObj
=
_
.
sortBy
(
this
.
attrObj
,
'name'
);
this
.
filterType
=
this
.
tag
?
'tagFilters'
:
'entityFilters'
;
this
.
filterType
=
this
.
tag
?
'tagFilters'
:
'entityFilters'
;
this
.
defaultRange
=
"Last 7 Days"
;
this
.
dateRangesMap
=
{
'Today'
:
[
moment
(),
moment
()],
'Yesterday'
:
[
moment
().
subtract
(
1
,
'days'
),
moment
().
subtract
(
1
,
'days'
)],
'Last 7 Days'
:
[
moment
().
subtract
(
6
,
'days'
),
moment
()],
'Last 30 Days'
:
[
moment
().
subtract
(
29
,
'days'
),
moment
()],
'This Month'
:
[
moment
().
startOf
(
'month'
),
moment
().
endOf
(
'month'
)],
'Last Month'
:
[
moment
().
subtract
(
1
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 3 Months'
:
[
moment
().
subtract
(
3
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 6 Months'
:
[
moment
().
subtract
(
6
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'Last 12 Months'
:
[
moment
().
subtract
(
12
,
'month'
).
startOf
(
'month'
),
moment
().
subtract
(
1
,
'month'
).
endOf
(
'month'
)],
'This Quarter'
:
[
moment
().
startOf
(
'quarter'
),
moment
().
endOf
(
'quarter'
)],
'Last Quarter'
:
[
moment
().
subtract
(
1
,
'quarter'
).
startOf
(
'quarter'
),
moment
().
subtract
(
1
,
'quarter'
).
endOf
(
'quarter'
)],
'This Year'
:
[
moment
().
startOf
(
'year'
),
moment
().
endOf
(
'year'
)],
'Last Year'
:
[
moment
().
subtract
(
1
,
'year'
).
startOf
(
'year'
),
moment
().
subtract
(
1
,
'year'
).
endOf
(
'year'
)]
}
},
},
bindEvents
:
function
()
{},
bindEvents
:
function
()
{},
getOperator
:
function
(
type
,
skipDefault
)
{
getOperator
:
function
(
type
,
skipDefault
)
{
...
@@ -71,7 +88,7 @@ define(['require',
...
@@ -71,7 +88,7 @@ define(['require',
}
}
}
}
if
(
type
===
"date"
)
{
if
(
type
===
"date"
)
{
obj
.
operators
=
[
'
>'
,
'<
'
];
obj
.
operators
=
[
'
='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
,
'TIME_RANGE
'
];
}
}
if
(
type
===
"int"
||
type
===
"byte"
||
type
===
"short"
||
type
===
"long"
||
type
===
"float"
||
type
===
"double"
)
{
if
(
type
===
"int"
||
type
===
"byte"
||
type
===
"short"
||
type
===
"long"
||
type
===
"float"
||
type
===
"double"
)
{
obj
.
operators
=
[
'='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
];
obj
.
operators
=
[
'='
,
'!='
,
'>'
,
'<'
,
'>='
,
'<='
];
...
@@ -266,20 +283,7 @@ define(['require',
...
@@ -266,20 +283,7 @@ define(['require',
}
}
if
(
obj
.
type
===
"date"
)
{
if
(
obj
.
type
===
"date"
)
{
obj
[
'plugin'
]
=
'daterangepicker'
;
obj
[
'plugin'
]
=
'daterangepicker'
;
obj
[
'plugin_config'
]
=
{
obj
[
'plugin_config'
]
=
this
.
getDateConfig
(
rules
,
obj
.
id
);
"singleDatePicker"
:
true
,
"showDropdowns"
:
true
,
"timePicker"
:
true
,
locale
:
{
format
:
Globals
.
dateTimeFormat
}
};
if
(
rules
)
{
var
valueObj
=
_
.
find
(
rules
,
{
id
:
obj
.
id
});
if
(
valueObj
)
{
obj
.
plugin_config
[
"startDate"
]
=
valueObj
.
value
;
}
}
_
.
extend
(
obj
,
this
.
getOperator
(
obj
.
type
));
_
.
extend
(
obj
,
this
.
getOperator
(
obj
.
type
));
return
obj
;
return
obj
;
}
}
...
@@ -316,6 +320,86 @@ define(['require',
...
@@ -316,6 +320,86 @@ define(['require',
return
obj
;
return
obj
;
}
}
},
},
getDateConfig
:
function
(
ruleObj
,
id
,
operator
)
{
var
valueObj
=
ruleObj
?
(
_
.
find
(
ruleObj
.
rules
,
{
id
:
id
})
||
{})
:
{},
isTimeRange
=
(
valueObj
.
operator
&&
valueObj
.
operator
===
"TIME_RANGE"
&&
operator
===
"TIME_RANGE"
)
||
(
operator
===
"TIME_RANGE"
),
obj
=
{
opens
:
"center"
,
autoApply
:
true
,
autoUpdateInput
:
false
,
timePickerSeconds
:
true
,
timePicker
:
true
,
locale
:
{
format
:
Globals
.
dateTimeFormat
}
};
if
(
isTimeRange
)
{
var
defaultRangeDate
=
this
.
dateRangesMap
[
this
.
defaultRange
];
obj
.
startDate
=
defaultRangeDate
[
0
];
obj
.
endDate
=
defaultRangeDate
[
1
];
obj
.
singleDatePicker
=
false
;
obj
.
ranges
=
this
.
dateRangesMap
;
}
else
{
obj
.
singleDatePicker
=
true
;
obj
.
startDate
=
moment
();
obj
.
endDate
=
obj
.
startDate
;
}
if
(
!
_
.
isEmpty
(
valueObj
)
&&
operator
===
valueObj
.
operator
)
{
if
(
isTimeRange
)
{
if
(
valueObj
.
value
.
indexOf
(
"-"
)
>
-
1
)
{
var
dates
=
valueObj
.
value
.
split
(
"-"
);
obj
.
startDate
=
dates
[
0
].
trim
();
obj
.
endDate
=
dates
[
1
].
trim
();
}
else
{
var
dates
=
this
.
dateRangesMap
[
valueObj
.
value
]
obj
.
startDate
=
dates
[
0
];
obj
.
endDate
=
dates
[
1
];
}
obj
.
singleDatePicker
=
false
;
}
else
{
obj
.
startDate
=
moment
(
valueObj
.
value
);
obj
.
endDate
=
moment
(
valueObj
.
value
);
obj
.
singleDatePicker
=
true
;
}
}
return
obj
;
},
setDateValue
:
function
(
rule
,
rules_widgets
)
{
if
(
rule
.
filter
.
type
===
"date"
&&
rule
.
operator
.
nb_inputs
)
{
var
inputEl
=
rule
.
$el
.
find
(
".rule-value-container"
).
find
(
"input"
),
datepickerEl
=
rule
.
$el
.
find
(
".rule-value-container"
).
find
(
"input"
).
data
(
"daterangepicker"
)
inputEl
.
attr
(
'readonly'
,
true
);
if
(
datepickerEl
)
{
datepickerEl
.
remove
();
var
configObj
=
this
.
getDateConfig
(
rules_widgets
,
rule
.
filter
.
id
,
rule
.
operator
.
type
)
inputEl
.
daterangepicker
(
configObj
);
if
(
rule
.
operator
.
type
===
"TIME_RANGE"
)
{
rule
.
value
=
this
.
defaultRange
;
}
else
{
rule
.
value
=
configObj
.
startDate
.
format
(
Globals
.
dateTimeFormat
);
}
inputEl
.
on
(
'apply.daterangepicker'
,
function
(
ev
,
picker
)
{
picker
.
setStartDate
(
picker
.
startDate
);
picker
.
setEndDate
(
picker
.
endDate
);
var
valueString
=
""
;
if
(
picker
.
chosenLabel
)
{
if
(
picker
.
chosenLabel
===
"Custom Range"
)
{
valueString
=
picker
.
startDate
.
format
(
Globals
.
dateTimeFormat
)
+
" - "
+
picker
.
endDate
.
format
(
Globals
.
dateTimeFormat
);
}
else
{
valueString
=
picker
.
chosenLabel
;
}
}
else
{
valueString
=
picker
.
startDate
.
format
(
Globals
.
dateTimeFormat
);
}
picker
.
element
.
val
(
valueString
);
rule
.
value
=
valueString
;
});
}
}
},
onRender
:
function
()
{
onRender
:
function
()
{
var
that
=
this
,
var
that
=
this
,
filters
=
[],
filters
=
[],
...
@@ -339,7 +423,7 @@ define(['require',
...
@@ -339,7 +423,7 @@ define(['require',
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
?
this
.
searchTableFilters
[
"adminAttrFilters"
]
:
null
,
"formatDate"
:
true
});;
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
?
this
.
searchTableFilters
[
"adminAttrFilters"
]
:
null
,
"formatDate"
:
true
});;
}
else
{
}
else
{
if
(
this
.
value
)
{
if
(
this
.
value
)
{
var
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
[
this
.
filterType
][(
this
.
tag
?
this
.
value
.
tag
:
this
.
value
.
type
)],
"formatDate"
:
true
});
rules_widgets
=
CommonViewFunction
.
attributeFilter
.
extractUrl
({
"value"
:
this
.
searchTableFilters
[
this
.
filterType
][(
this
.
tag
?
this
.
value
.
tag
:
this
.
value
.
type
)],
"formatDate"
:
true
});
}
}
_
.
each
(
this
.
attrObj
,
function
(
obj
)
{
_
.
each
(
this
.
attrObj
,
function
(
obj
)
{
var
type
=
that
.
tag
?
that
.
value
.
tag
:
that
.
value
.
type
;
var
type
=
that
.
tag
?
that
.
value
.
tag
:
that
.
value
.
type
;
...
@@ -415,16 +499,20 @@ define(['require',
...
@@ -415,16 +499,20 @@ define(['require',
}
}
filters
=
_
.
uniq
(
filters
,
'id'
);
filters
=
_
.
uniq
(
filters
,
'id'
);
if
(
filters
&&
!
_
.
isEmpty
(
filters
))
{
if
(
filters
&&
!
_
.
isEmpty
(
filters
))
{
this
.
ui
.
builder
.
queryBuilder
({
this
.
ui
.
builder
.
off
()
plugins
:
[
'bt-tooltip-errors'
],
.
on
(
"afterUpdateRuleOperator.queryBuilder"
,
function
(
e
,
rule
)
{
filters
:
filters
,
that
.
setDateValue
(
rule
,
rules_widgets
);
select_placeholder
:
placeHolder
,
})
allow_empty
:
true
,
.
queryBuilder
({
conditions
:
[
'AND'
,
'OR'
],
plugins
:
[
'bt-tooltip-errors'
],
allow_groups
:
true
,
filters
:
filters
,
allow_empty
:
true
,
select_placeholder
:
placeHolder
,
templates
:
{
allow_empty
:
true
,
rule
:
'<div id="{{= it.rule_id }}" class="rule-container">
\
conditions
:
[
'AND'
,
'OR'
],
allow_groups
:
true
,
allow_empty
:
true
,
templates
:
{
rule
:
'<div id="{{= it.rule_id }}" class="rule-container">
\
<div class="values-box"><div class="rule-filter-container"></div>
\
<div class="values-box"><div class="rule-filter-container"></div>
\
<div class="rule-operator-container"></div>
\
<div class="rule-operator-container"></div>
\
<div class="rule-value-container"></div></div>
\
<div class="rule-value-container"></div></div>
\
...
@@ -439,50 +527,58 @@ define(['require',
...
@@ -439,50 +527,58 @@ define(['require',
<div class="error-container"><i class="{{= it.icons.error }}"></i> <span></span></div>
\
<div class="error-container"><i class="{{= it.icons.error }}"></i> <span></span></div>
\
{{?}}
\
{{?}}
\
</div>'
</div>'
},
},
operators
:
[
operators
:
[
{
type
:
'='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'!='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'!='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'>'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'>='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'<='
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
]
},
{
type
:
'contains'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'contains'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'like'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'like'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'in'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'in'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'begins_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'begins_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'ends_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'ends_with'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'string'
]
},
{
type
:
'is_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'is_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
{
type
:
'not_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
}
{
type
:
'not_null'
,
nb_inputs
:
false
,
multiple
:
false
,
apply_to
:
[
'number'
,
'string'
,
'boolean'
,
'enum'
]
},
],
{
type
:
'TIME_RANGE'
,
nb_inputs
:
1
,
multiple
:
false
,
apply_to
:
[
'date'
]
}
lang
:
{
],
add_rule
:
'Add filter'
,
lang
:
{
add_group
:
'Add filter group'
,
add_rule
:
'Add filter'
,
operators
:
{
add_group
:
'Add filter group'
,
not_null
:
'is not null'
operators
:
{
not_null
:
'is not null'
,
TIME_RANGE
:
"Time Range"
}
},
icons
:
{
add_rule
:
'fa fa-plus'
,
remove_rule
:
'fa fa-times'
,
error
:
'fa fa-exclamation-triangle'
},
rules
:
rules_widgets
})
.
on
(
"afterCreateRuleInput.queryBuilder"
,
function
(
e
,
rule
)
{
rule
.
error
=
null
;
if
(
rule
.
operator
.
nb_inputs
&&
rule
.
filter
.
id
===
"__customAttributes"
)
{
rule
.
$el
.
addClass
(
"user-define"
);
}
else
if
(
rule
.
$el
.
hasClass
(
"user-define"
))
{
rule
.
$el
.
removeClass
(
"user-define"
);
}
}
},
if
(
rule
.
filter
.
type
===
"date"
)
{
icons
:
{
rule
.
$el
.
find
(
'.rule-value-container >input'
).
attr
(
'readonly'
,
true
);
add_rule
:
'fa fa-plus'
,
}
remove_rule
:
'fa fa-times'
,
that
.
setDateValue
(
rule
,
rules_widgets
);
error
:
'fa fa-exclamation-triangle'
})
},
.
on
(
'validationError.queryBuilder'
,
function
(
e
,
rule
,
error
,
value
)
{
rules
:
rules_widgets
// never display error for my custom filter
}).
on
(
"afterCreateRuleInput.queryBuilder"
,
function
(
e
,
rule
)
{
var
errorMsg
=
error
[
0
];
rule
.
error
=
null
;
if
(
that
.
queryBuilderLang
&&
that
.
queryBuilderLang
.
errors
&&
that
.
queryBuilderLang
.
errors
[
errorMsg
])
{
if
(
rule
.
operator
.
nb_inputs
&&
rule
.
filter
.
id
===
"__customAttributes"
)
{
errorMsg
=
that
.
queryBuilderLang
.
errors
[
errorMsg
];
rule
.
$el
.
addClass
(
"user-define"
);
}
}
else
if
(
rule
.
$el
.
hasClass
(
"user-define"
))
{
rule
.
$el
.
find
(
".error-container span"
).
html
(
errorMsg
);
rule
.
$el
.
removeClass
(
"user-define"
);
});
}
}).
on
(
'validationError.queryBuilder'
,
function
(
e
,
rule
,
error
,
value
)
{
// never display error for my custom filter
var
errorMsg
=
error
[
0
];
if
(
that
.
queryBuilderLang
&&
that
.
queryBuilderLang
.
errors
&&
that
.
queryBuilderLang
.
errors
[
errorMsg
])
{
errorMsg
=
that
.
queryBuilderLang
.
errors
[
errorMsg
];
}
rule
.
$el
.
find
(
".error-container span"
).
html
(
errorMsg
);
});
var
queryBuilderEl
=
that
.
ui
.
builder
.
data
(
"queryBuilder"
);
var
queryBuilderEl
=
that
.
ui
.
builder
.
data
(
"queryBuilder"
);
if
(
queryBuilderEl
&&
queryBuilderEl
.
lang
)
{
if
(
queryBuilderEl
&&
queryBuilderEl
.
lang
)
{
this
.
queryBuilderLang
=
queryBuilderEl
.
lang
;
this
.
queryBuilderLang
=
queryBuilderEl
.
lang
;
...
...
dashboardv3/public/js/views/search/tree/EntityTreeLayoutView.js
View file @
41eebcf4
...
@@ -242,7 +242,8 @@ define([
...
@@ -242,7 +242,8 @@ define([
params
[
"entityFilters"
]
=
null
;
params
[
"entityFilters"
]
=
null
;
}
}
}
}
var
getUrl
=
Utils
.
getUrlState
.
isSearchTab
();
if
(
!
getUrl
)
{
that
.
typeId
=
null
;
}
if
(
that
.
typeId
!=
selectedNodeId
)
{
if
(
that
.
typeId
!=
selectedNodeId
)
{
that
.
typeId
=
selectedNodeId
;
that
.
typeId
=
selectedNodeId
;
typeValue
=
name
;
typeValue
=
name
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment