-
-
Notifications
You must be signed in to change notification settings - Fork 278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New group folders for dynamic map services #747
Merged
green3g
merged 50 commits into
develop
from
feature/new-group-folders-for-dynamic-map-services
Feb 6, 2018
+437
−153
Merged
Changes from 3 commits
Commits
Show all changes
50 commits
Select commit
Hold shift + click to select a range
c9b1a5d
new group folders for dynamic map services.
tmcgee ded5f08
Change icon for Grouped layers to folder
tmcgee d0b03b1
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 23d8f9d
ensure that layerIds variable is assigned a value..
tmcgee 703079f
re-initialize the groupedLayerInfos once the grouped layers have been…
tmcgee 1b98e94
re-initialize the groupedLayerInfos once the grouped layers have been…
tmcgee f8bdd92
Merge branch 'feature/new-group-folders-for-dynamic-map-services' of …
tmcgee ce3c209
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g fef659c
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 9acbe2c
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee c2badb9
fix how visiblity of sublayers is determined.
tmcgee 075e0ec
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g a11c0d1
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g c4066ea
Remove sublayer ids for groups in dynamic layers after the layer is …
tmcgee 2f65925
remove console.log statement
tmcgee 3892922
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee ad93516
Add option to use alternative visibility mode instead of triStateTree
duckblaster a5697ab
Fix lint errors
duckblaster 817c3ed
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 61176d1
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee c987f02
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 031085e
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 25ce8ae
Merge pull request #766 from duckblaster/feature/new-group-folders-fo…
tmcgee 62d7311
remove unused code and properties.
tmcgee e75eee3
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g 68eccdd
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee da33135
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee c21c689
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee 90d6940
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g 8ed3b7b
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee 311a920
change property name to something more universal
tmcgee f609de0
Simplify _setFolderCheckbox method
tmcgee 0fb5966
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 0e67324
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 91264ac
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 62c26fb
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee f9d6bba
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee 5176974
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee 8f06bcc
Extend support for ignoring group layer visibility to Identify widget
tmcgee 85ad1b5
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 1a54b51
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee a36cf4d
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 2c8abdc
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee ec719b3
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 35912d2
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee c6cbb5e
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 4914c32
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
green3g f094a54
Merge remote-tracking branch 'origin/feature/new-group-folders-for-dy…
tmcgee ece3c1d
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee 1ac6226
Merge branch 'develop' into feature/new-group-folders-for-dynamic-map…
tmcgee File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,7 @@ define([ | |
'dojo/_base/lang', | ||
'dojo/_base/array', | ||
'dojo/on', | ||
'dojo/query', | ||
'dojo/dom-class', | ||
'dojo/dom-style', | ||
'dojo/dom-attr', | ||
|
@@ -16,6 +17,7 @@ define([ | |
lang, | ||
array, | ||
on, | ||
query, | ||
domClass, | ||
domStyle, | ||
domAttr, | ||
|
@@ -50,25 +52,21 @@ define([ | |
} | ||
var checkNode = this.checkNode; | ||
domAttr.set(checkNode, 'data-sublayer-id', this.sublayerInfo.id); | ||
domAttr.set(checkNode, 'data-layer-folder', true); | ||
domClass.add(checkNode, this.control.layer.id + '-layerControlSublayerCheck'); | ||
if (array.indexOf(this.control.layer.visibleLayers, this.sublayerInfo.id) !== -1) { | ||
this._setSublayerCheckbox(true, checkNode); | ||
} else { | ||
this._setSublayerCheckbox(false, checkNode); | ||
} | ||
|
||
this._handlers.push(on(checkNode, 'click', lang.hitch(this, function (event) { | ||
|
||
// prevent click event from bubbling | ||
if (event.stopPropagation) { | ||
event.stopPropagation(); | ||
} | ||
|
||
if (domAttr.get(checkNode, 'data-checked') === 'checked') { | ||
this._setSublayerCheckbox(false, checkNode); | ||
if (!this._hasAnyInvisibleLayer()) { | ||
this._setFolderCheckbox(false, checkNode); | ||
} else { | ||
this._setSublayerCheckbox(true, checkNode); | ||
this._setFolderCheckbox(true, checkNode); | ||
} | ||
this.control._setVisibleLayers(); | ||
this._checkboxScaleRange(); | ||
}))); | ||
html.set(this.labelNode, this.sublayerInfo.name); | ||
|
@@ -99,18 +97,129 @@ define([ | |
} | ||
}))); | ||
}, | ||
// set checkbox based on layer so it's always in sync | ||
_setSublayerCheckbox: function (checked, checkNode) { | ||
// toggles visibility of all sublayers | ||
_setFolderCheckbox: function (checked, checkNode, isChildFolder) { | ||
var i = this.icons, | ||
dataChecked = (checked) ? 'checked' : 'unchecked', | ||
slNodes = this._getSubLayerNodes(); | ||
checkNode = checkNode || this.checkNode; | ||
var i = this.icons; | ||
if (checked) { | ||
array.forEach(slNodes, lang.hitch(this, function (node) { | ||
|
||
// child is folder | ||
if (domAttr.get(node, 'data-layer-folder')) { | ||
var folderControl = this._getFolderControl(node); | ||
if (folderControl) { | ||
folderControl._setFolderCheckbox(checked, node, true); | ||
} | ||
// child is sub layer | ||
} else { | ||
domAttr.set(node, 'data-checked', dataChecked); | ||
if (checked) { | ||
domClass.replace(node, i.checked, i.unchecked); | ||
} else { | ||
domClass.replace(node, i.unchecked, i.checked); | ||
} | ||
} | ||
})); | ||
|
||
// wait until all folders in hierarchy have been | ||
// processed before setting the layer's visible layers | ||
if (!isChildFolder) { | ||
this.control._setVisibleLayers(); | ||
} | ||
}, | ||
|
||
_hasAnyVisibleLayer: function () { | ||
var slNodes = this._getSubLayerNodes(); | ||
return array.some(slNodes, lang.hitch(this, function (node) { | ||
if (domAttr.get(node, 'data-layer-folder')) { | ||
var folderControl = this._getFolderControl(node); | ||
if (folderControl) { | ||
return folderControl._hasAnyVisibleLayer(); | ||
} | ||
return true; | ||
} | ||
return (domAttr.get(node, 'data-checked') === 'checked'); | ||
})); | ||
}, | ||
|
||
_hasAnyInvisibleLayer: function () { | ||
var slNodes = this._getSubLayerNodes(); | ||
return array.some(slNodes, lang.hitch(this, function (node) { | ||
if (domAttr.get(node, 'data-layer-folder')) { | ||
var folderControl = this._getFolderControl(node); | ||
if (folderControl) { | ||
return folderControl._hasAnyInvisibleLayer(); | ||
} | ||
return true; | ||
} | ||
return (domAttr.get(node, 'data-checked') !== 'checked'); | ||
})); | ||
}, | ||
|
||
_getSubLayerNodes: function () { | ||
var layerIds = this.control.controlOptions.layerIds; | ||
var subLayerInfos = []; | ||
if (this.control.controlOptions.subLayerInfos && !this.control.controlOptions.includeUnspecifiedLayers) { | ||
subLayerInfos = array.map(this.control.controlOptions.subLayerInfos, function (sli) { | ||
return sli.id; | ||
}); | ||
} | ||
|
||
var subLayerNodes = query('.' + this.control.layer.id + '-layerControlSublayerCheck', this.domNode); | ||
return array.filter(subLayerNodes, lang.hitch(this, function (node) { | ||
var subLayerID = parseInt(domAttr.get(node, 'data-sublayer-id'), 10); | ||
// is the sublayer contained in this folder | ||
if (array.indexOf(this.sublayerInfo.subLayerIds, subLayerID) < 0) { | ||
return false; | ||
// is the sublayer included in layer's layerIds (if they are defined) | ||
} else if (layerIds.length && array.indexOf(layerIds, subLayerID) < 0) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
return false; | ||
// is the sublayer included in layer's subLayerInfos (if they are defined) | ||
} else if (subLayerInfos.length && array.indexOf(subLayerInfos, subLayerID) < 0) { | ||
return false; | ||
} | ||
return true; | ||
})); | ||
}, | ||
|
||
_getFolderControl: function (node) { | ||
var subLayerID = parseInt(domAttr.get(node, 'data-sublayer-id'), 10); | ||
var controls = array.filter(this.control._folderControls, function (control) { | ||
return (control.sublayerInfo.id === subLayerID); | ||
}); | ||
if (controls.length) { | ||
return controls[0]; | ||
} | ||
return null; | ||
}, | ||
|
||
// set visibility of folder (group layer) based on the visibility | ||
// of children sub-layers and folders | ||
_checkFolderVisibility: function () { | ||
var checkNode = this.checkNode, | ||
i = this.icons; | ||
|
||
var hasVisible = this._hasAnyVisibleLayer(); | ||
var hasHidden = this._hasAnyInvisibleLayer(); | ||
|
||
domClass.remove(checkNode, i.checked); | ||
domClass.remove(checkNode, i.unchecked); | ||
domClass.remove(checkNode, i.indeterminate); | ||
|
||
// indeterminate - both visible and invisible layers in group | ||
if (hasVisible && hasHidden) { | ||
domAttr.set(checkNode, 'data-checked', 'indeterminate'); | ||
domClass.add(checkNode, i.indeterminate); | ||
} else if (hasVisible) { | ||
domAttr.set(checkNode, 'data-checked', 'checked'); | ||
domClass.replace(checkNode, i.checked, i.unchecked); | ||
domClass.add(checkNode, i.checked); | ||
} else { | ||
domAttr.set(checkNode, 'data-checked', 'unchecked'); | ||
domClass.replace(checkNode, i.unchecked, i.checked); | ||
domClass.add(checkNode, i.unchecked); | ||
} | ||
}, | ||
|
||
// check scales and add/remove disabled classes from checkbox | ||
_checkboxScaleRange: function () { | ||
var node = this.checkNode, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like this is a bug, if layerIds is not provided, it breaks on 176.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated line 161 to: