g1 issueshttps://code.gramener.com/cto/g1/-/issues2018-11-01T03:07:43Zhttps://code.gramener.com/cto/g1/-/issues/70mapviewer merge data doesnot work with topojson files2018-11-01T03:07:43ZTejeshmapviewer merge data doesnot work with topojson files1.44Bharat Rbharath.r@gramener.comBharat Rbharath.r@gramener.comhttps://code.gramener.com/cto/g1/-/issues/138Mapviewer Mismatch label is not hiding on "mismatch: false"2019-01-23T12:24:57ZBharat Rbharath.r@gramener.comMapviewer Mismatch label is not hiding on "mismatch: false""mismatch: false", should hide the label on the map
This is not working properly."mismatch: false", should hide the label on the map
This is not working properly.Bharat Rbharath.r@gramener.comBharat Rbharath.r@gramener.comhttps://code.gramener.com/cto/g1/-/issues/118Mapviewer's buildlayer doesn't support tooltip2019-01-14T11:28:09ZBhanu Kbhanu.kamapantula@gramener.comMapviewer's buildlayer doesn't support tooltip### Summary
tooltip enabled and applied via `buildLayer` doesn't apply
### Steps to reproduce
- use `g1.mapviewer` and create a map via `buildLayer` -- `map.buildLayer('layername', layer_opts)` where map is a `g1.mapviewer()` object a...### Summary
tooltip enabled and applied via `buildLayer` doesn't apply
### Steps to reproduce
- use `g1.mapviewer` and create a map via `buildLayer` -- `map.buildLayer('layername', layer_opts)` where map is a `g1.mapviewer()` object and `layer_opts` are layer options
- one of the attributes in `layer_opts` is `tooltip: function(d) { return d.value; }`
### What is the current *bug* behavior?
Tooltip doesn't show up
### Possible fixes
In [`src/mapviewer.js`](https://code.gramener.com/cto/g1/blob/dev/src/mapviewer.js#L237), do the below:
```javascript
case 'topojson':
case 'geojson':
if() {
...
self.renderTooltip(layerName, layerConfig)
...
} else {
...
self.renderTooltip(layerName, layerConfig)
...
}
```
with this a developer can define
```javascript
tooltip: function(d) {
// console.log(d)
return d[_map_data['metric']] !== undefined ? d[_map_data['metric']].toString() : d[_map_data['metric']];
},
tooltipOptions: {
direction: function (args) {
return args.centerPoint[1] > args.tooltipPoint.x[1] ? 'top' : 'bottom'
},
sticky: true
},
```
note that `tooltipOptions` is optionalBhanu Kbhanu.kamapantula@gramener.comBhanu Kbhanu.kamapantula@gramener.comhttps://code.gramener.com/cto/g1/-/issues/122Mapviewer: add removeLayer abstract function2019-02-02T14:38:24ZTejeshMapviewer: add removeLayer abstract functionmap.removeLayer('layerName') must remove 'layerName' layer from map....map.removeLayer('layerName') must remove 'layerName' layer from map....Bharat Rbharath.r@gramener.comBharat Rbharath.r@gramener.comhttps://code.gramener.com/cto/g1/-/issues/102Mapviewer: add test case for multiple map legends2018-10-30T06:04:11ZS AnandMapviewer: add test case for multiple map legendsWhen creating multiple maps, ensure that:
- options of one map legend do not bleed into another
- removing a map does not remove other map legendsWhen creating multiple maps, ensure that:
- options of one map legend do not bleed into another
- removing a map does not remove other map legends1.44TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/160Mapviewer: cachedata function fails when data contains nested structure2019-03-31T06:20:50ZTejeshMapviewer: cachedata function fails when data contains nested structure`JSON.stringify, avoid TypeError: Converting circular structure to JSON`
https://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to-json`JSON.stringify, avoid TypeError: Converting circular structure to JSON`
https://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to-jsonTejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/101Mapviewer: choropleth must support option of refetching and merging datasets2018-10-05T18:24:51ZTejeshMapviewer: choropleth must support option of refetching and merging datasetsUsecase: When geojson files is same but external dataset changes, developer wants to Refresh colors of map only (without rebuilding the whole vector layer)
raised by @bharath.r as part of ceasefire projectUsecase: When geojson files is same but external dataset changes, developer wants to Refresh colors of map only (without rebuilding the whole vector layer)
raised by @bharath.r as part of ceasefire projectTejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/86mapviewer: Support custom markers (divIcons)2018-10-04T12:17:18ZAnvesh Dasarimapviewer: Support custom markers (divIcons)### Summary
Integrate text labels on the map
### Benefits
User can see text labels on the map (easy to identify).
### Usage
![image](/uploads/23565d7858a13a554a5f9053a45a4006/image.png)
### Examples
(Add code samples of usage, wit...### Summary
Integrate text labels on the map
### Benefits
User can see text labels on the map (easy to identify).
### Usage
![image](/uploads/23565d7858a13a554a5f9053a45a4006/image.png)
### Examples
(Add code samples of usage, with expected output)
```
var my_icon2 = L.divIcon({
className:'current-location-icon2',
html:'<span class="label_text text-black '+sublayer.feature.properties.Id+'">'+sublayer.feature.properties.BLOCK_NAME+'</span>',
iconAnchor:[0,0],
iconSize:null,
popupAnchor:[0,0]
})
L.marker([sublayer.getCenter().lat, sublayer.getCenter().lng], {radius: 5,
icon : my_icon2, color:'blue',opacity:1,fillColor: 'blue',fillOpacity:.4 ,className : "map_circle2"}).addTo(map)
```
Depends on the layer centroid, added text on the map.
![image](/uploads/4c8f0ea1e04d1aada383536a931435e2/image.png)1.43TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/90Mapviewer: Tooltip must react and position itself to collision detections2018-10-14T05:29:21ZTejeshMapviewer: Tooltip must react and position itself to collision detections![image](/uploads/a2cb9296f5a1babba8fc6033b24d5690/image.png)
![image](/uploads/daf5389fedb99de3670314a255bf159d/image.png)![image](/uploads/a2cb9296f5a1babba8fc6033b24d5690/image.png)
![image](/uploads/daf5389fedb99de3670314a255bf159d/image.png)1.44TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/95Mapviewer: tooltip must support leaflet tooltip options2018-10-04T12:17:29ZTejeshMapviewer: tooltip must support leaflet tooltip optionsspec
```js
tooltip: 'just some tooltip text test',
tooltipOptions: {
opacity: 0.1,
permanent: true
}
```spec
```js
tooltip: 'just some tooltip text test',
tooltipOptions: {
opacity: 0.1,
permanent: true
}
```1.43TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/41Merge basic mapviewer2018-05-29T03:01:33ZS AnandMerge basic mapviewer- [x] circleMarker zooms to bounds. marker should do the same
- [x] Tooltip titles for marker and circleMarker to be implemented
- [x] Use g1.scale
- [ ] `attr: {color: 'red'}` should be moved to `options: {color: 'red'}`
- [x] Rename `a...- [x] circleMarker zooms to bounds. marker should do the same
- [x] Tooltip titles for marker and circleMarker to be implemented
- [x] Use g1.scale
- [ ] `attr: {color: 'red'}` should be moved to `options: {color: 'red'}`
- [x] Rename `attr:` to `attrs:`
- [x] Add tooltips to show one or more columns1.36TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/173Move g1.formhandler table , g1.mapviewer modules into separate repos2019-06-26T01:52:32ZTejeshMove g1.formhandler table , g1.mapviewer modules into separate reposWe want to break up g1 into independent repositories. This will popularize g1 components because:
- People prefer libraries with a single purpose
- They are more likely to use it (and contribute back) since the learning curve is less
A...We want to break up g1 into independent repositories. This will popularize g1 components because:
- People prefer libraries with a single purpose
- They are more likely to use it (and contribute back) since the learning curve is less
Approach:
- `mapviewer`: mapviewer.js, leaflet-utils.js
- `urlfilter`: url.js, urlfilter.js, urlchange.js, ajaxchain.js
- `some template library`: template.js
- `sanddance`: sanddance.js
- `g1`: Gramex specific components:
- datafilter.js
- formhandler.js
- translate.js
- ... and other components which we may re-package later
- dropdown.js
- scale.js
- types.js
- highlight.js
- search.js
- fuzzysearch.js
- TODO: Find out how to handle dependencies, e.g. event.js.
Note: g1 will continue to import these libraries and function as before -- fully backward compatible.
### Approach for mapviewer
- Create a repo: github.com/gramener/mapviewer
- Create an npm package called [mapviewer](https://www.npmjs.com/package/mapviewer) via this repo. This should export an ES6 module (src/mapviewer.js) and UMD module (dist/mapviewer.js) via package.json
- Migrate test cases
- Refactor g1 to use import the mapviewer package as an ES6 module
https://code.gramener.com/cto/g1/-/issues/113Multi-column support2018-12-14T05:16:55ZBhanu Kbhanu.kamapantula@gramener.comMulti-column supportTejesh: alter table to create new columns if the data source is `FormHandler` endpoint else add to `JSON` objectTejesh: alter table to create new columns if the data source is `FormHandler` endpoint else add to `JSON` objectTejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/97package leaflet.css as part of mapviewer.js2018-11-14T11:34:58ZTejeshpackage leaflet.css as part of mapviewer.js6 out of 7 developers who I know has worked with mapviewer wasted decent chunk of time in debugging partially working maps because `<link src="leaflet.css">` file is not added to index.html6 out of 7 developers who I know has worked with mapviewer wasted decent chunk of time in debugging partially working maps because `<link src="leaflet.css">` file is not added to index.htmlTejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/84Page refresh on selecting number of rows in FormHandler table2022-11-07T09:16:11ZNaveen ManukondaPage refresh on selecting number of rows in FormHandler table- When we select from new value from row dropdown page is completely refreshing.![image](/uploads/833eca55cc0ec8c1f333fab34cad79d1/image.png)
- Currently if we make size false we are showing all rows without pagination. We want to show p...- When we select from new value from row dropdown page is completely refreshing.![image](/uploads/833eca55cc0ec8c1f333fab34cad79d1/image.png)
- Currently if we make size false we are showing all rows without pagination. We want to show pagination with minimum size of 10 and hide rows dropdown.S AnandS Anandhttps://code.gramener.com/cto/g1/-/issues/111remove dev dependencies from package.json2018-12-08T00:58:30ZTejeshremove dev dependencies from package.jsonjust a reminder!just a reminder!1.47TejeshTejeshhttps://code.gramener.com/cto/g1/-/issues/89Retain order of columns when `*` is used for column name in config2019-04-22T09:19:19ZTejeshRetain order of columns when `*` is used for column name in configTejesh to write tests to confirm this happens only when `*` is used, and order is retained if `*` is not used.
raised by @sarad.gurramTejesh to write tests to confirm this happens only when `*` is used, and order is retained if `*` is not used.
raised by @sarad.gurramhttps://code.gramener.com/cto/g1/-/issues/43Sanddance facets2018-04-25T12:38:46ZS AnandSanddance facets```js
var barchart = g1.sanddance({
layout: 'grid'
width: 100,
height: 100,
// Group by category, which is a number from 0 - 3
group: function(d) { return d.category },
facets: [
{x: 0, y: 0, width: 100, height: 20},
...```js
var barchart = g1.sanddance({
layout: 'grid'
width: 100,
height: 100,
// Group by category, which is a number from 0 - 3
group: function(d) { return d.category },
facets: [
{x: 0, y: 0, width: 100, height: 20},
{x: 0, y: 25, width: 100, height: 20},
{x: 0, y: 50, width: 100, height: 20},
{x: 0, y: 75, width: 100, height: 20},
],
data: data
})
d3.selectAll('circle')
.data(data)
.call(barchart)
```
... should create something like this:
![image](/uploads/9d579860345aa8e8b41ce444c3fb4125/image.png)Elango BharathiElango Bharathihttps://code.gramener.com/cto/g1/-/issues/65Scales.js: Is it possible to have discrete colour schemes, eg SchemeBlues[k] ...2019-07-31T21:17:10ZKarmanya AggarwalScales.js: Is it possible to have discrete colour schemes, eg SchemeBlues[k] for mapviewer```js
attrs: {
fillColor: { // Fill the regions
metric: 'loan_amount', // with the "score" column from state_score.json
range: 'RdYlGn', // using a RdYlGn gradient...```js
attrs: {
fillColor: { // Fill the regions
metric: 'loan_amount', // with the "score" column from state_score.json
range: 'RdYlGn', // using a RdYlGn gradient
scheme: 'schemeBlues',
scale: 'ordinal'
}}
```
Did not work, as line 58 of scale.js ``` result = d3['scale' + scale](d3[color]).domain(domain)``` doesn't let me use array notation.https://code.gramener.com/cto/g1/-/issues/88Show "ALL ROWS" option in dropdown2018-08-13T02:42:52ZTejeshShow "ALL ROWS" option in dropdown![image](/uploads/e5366e680fa9d507df6d2036feb7bb7a/image.png)
raised by @sarad.gurram![image](/uploads/e5366e680fa9d507df6d2036feb7bb7a/image.png)
raised by @sarad.gurram