!7 static double aiConceptsCacheInterval = 60; html { print("Wiki URI: " + uri); uri = dropSuffix("/", uri); uri = dropPrefix("/", uri); if (eq(uri, "import")) { triggerStandardAIImport(); ret "OK"; } aiConceptsMap_clearCache(aiConceptsCacheInterval); final Map map = aiConceptsMap_cached(); if (possibleGlobalID(uri)) { final AIConcept c = map.get(toLower(uri)); if (c == null) ret "Concept not found: " + toLower(uri); S html = h2(htmlencode(aiConceptToString(c))); html += ul( "Image MD5: " + htmlencode(c.imageMD5) ); if (nempty(c.imageMD5) && imageServerHas(c.imageMD5)) html += p(himg(imageServerLink(c.imageMD5))); //L statements = [S s : trueStatements_cached() | containsIgnoreCase(s, c.globalID)]; L statements = [Statement s : loadTruth_cached() | containsIgnoreCase(s.text, c.globalID)]; if (nempty(statements)) html += h3("Statements about this") + ul(map(func(Statement s) { htmlencode(s.text + " - " + c.englishTranslation) }, statements)); html += p(ahref("http://ai1.lol/wiki", "[All Concepts]")); ret html; } L l = sortedByFieldDesc(values(map), "imported"); ret h3("The Wiki!") + p("See " + ahref("https://www.youtube.com/watch?v=gTlgZkc95IU", "Video") + ".") + ul(map(func(AIConcept c) { ret ahref("http://ai1.lol/" + c.globalID, htmlencode(c.globalID)) + " - " + htmlencode(aiConceptToString2(c)); }, l)); }