Skip to content

Commit ff0025a

Browse files
committed
experimental deep updating of components while working on them
SQUASHED: AUTO-COMMIT-src-client-lively.js,AUTO-COMMIT-src-components-demo-movie-listing.html,AUTO-COMMIT-src-components-demo-movie-listing.js,
1 parent e41d688 commit ff0025a

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

src/client/lively.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,17 @@ export default class Lively {
10161016
var tagName = await components.reloadComponent(html, url);
10171017
if (!tagName) return;
10181018

1019-
let objectToMigrate = Array.from(document.body.querySelectorAll(tagName));
1019+
// conservative approach:
1020+
// let objectToMigrate = Array.from(document.body.querySelectorAll(tagName));
1021+
1022+
// realy take every element yout can find, even if it might break things #Experimental
1023+
let objectToMigrate = []
1024+
for(let ea of lively.allElements(true)) {
1025+
if (ea.localName == tagName) {
1026+
objectToMigrate.push(ea)
1027+
}
1028+
}
1029+
10201030
if (lively.halo) {
10211031
objectToMigrate.push(...lively.halo.shadowRoot.querySelectorAll(tagName));
10221032
}

src/components/demo/movie-listing.js

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,21 @@ export default class MovieListing extends Morph {
1515
})
1616
}
1717

18+
get moviesSrc() {
19+
return this.getAttribute("movies")
20+
}
21+
22+
get selectedMoviesSrc() {
23+
return this.getAttribute("selected") || "selected_movies"
24+
}
25+
26+
1827
async createView(container) {
1928

2029
var dir = container.getDir()
2130
// "cached://" +
22-
var listSource = await fetch( dir + "/movies.jsonl").then(r => r.text())
23-
var selectedMoviesURL = dir + "/selected_movies"
31+
var listSource = await fetch( dir + "/" + this.moviesSrc).then(r => r.text())
32+
var selectedMoviesURL = dir + "/" + this.selectedMoviesSrc
2433

2534
this.selectedMovies = new Set()
2635
var selectedMoviesResp = await fetch(selectedMoviesURL)
@@ -196,7 +205,9 @@ export default class MovieListing extends Morph {
196205

197206
this.navbar = container.get("lively-container-navbar")
198207
this.navbarDetails = this.navbar.get("#details")
199-
208+
209+
this.navbarDetails.querySelector("ul").innerHTML = "" // #TODO, be nicer to other content?
210+
200211
let createGenreFilter = (genre) => {
201212
var bag = genres.get(genre)
202213

@@ -213,6 +224,7 @@ export default class MovieListing extends Morph {
213224

214225
this.createSelectedMoviesFilter()
215226
this.createConflictingYearMoviesFilter()
227+
this.createShowAllMoviesFilter()
216228

217229
for(let genre of genres.keys()) {
218230
createGenreFilter(genre)
@@ -256,7 +268,9 @@ export default class MovieListing extends Morph {
256268
this.setCurrentMovieItems(this.movieItems
257269
.sortBy(ea => ea.movie.year)
258270
.reverse()
259-
.filter(ea => this.selectedMovies.has(ea.movie.filename)))
271+
.filter(ea => {
272+
return ea.movie.files.find(file => this.selectedMovies.has(file.filename))
273+
}))
260274
}
261275

262276
filterConflictingYear() {
@@ -266,11 +280,27 @@ export default class MovieListing extends Morph {
266280
.filter(ea => ea.movie.year != ea.movie.extract_year))
267281
}
268282

283+
showAllMovies() {
284+
this.setCurrentMovieItems(this.movieItems
285+
.sortBy(ea => ea.movie.year)
286+
.reverse())
287+
}
288+
269289
createConflictingYearMoviesFilter(){
270290
var detailsItem = this.navbar.createDetailsItem("_conflicting")
271291
detailsItem.classList.add("subitem")
272292
detailsItem.classList.add("level2")
273293
this.navbarDetails.querySelector("ul").appendChild(detailsItem)
274294
detailsItem.addEventListener("click", () => this.filterConflictingYear())
275295
}
296+
297+
createShowAllMoviesFilter(){
298+
var detailsItem = this.navbar.createDetailsItem("_all")
299+
detailsItem.classList.add("subitem")
300+
detailsItem.classList.add("level2")
301+
this.navbarDetails.querySelector("ul").appendChild(detailsItem)
302+
detailsItem.addEventListener("click", () => this.showAllMovies())
303+
}
304+
305+
276306
}

0 commit comments

Comments
 (0)